暂无图片
暂无图片
7
暂无图片
暂无图片
暂无图片

openGauss 2.0.0 安装部署(1主+1备+1级联备)

3151

    openGauss 2.0.0于2021年3月31日正式发布,大部分对openGauss数据库感兴趣的小伙伴首先想到的应该是先把新版本软件下载下来,搭建一套自己的测试环境,然后再根据官方文档研究研究新特性的使用和原理。
    本文基于openGauss 2.0.0 搭建1主+1备+1级联备测试环境,并将操作记录共享出来,希望能帮到有需要的小伙伴。

2.0.0版新增特性:

特性介绍
支持延迟备库相对主机,备机可以延迟一段指定的时间后再回放XLOG记录
备机支持逻辑复制支持备机逻辑解码,可以减少主机的压力
扩容工具功能增强优化了扩容工具,支持不停服在线扩容备机或级联备
灰度升级优化升级工具,增加灰度升级能力,支持业务在线升级。目前仅支持从1.1.0版本到2.0.0版本进行灰度升级
备机IO写放大优化优化备机IO,平滑备机检查点刷盘的IO量,解决备机IO量大影响查询性能问题
WDR诊断报告增加数据库运行指标新增“Effective CPU”、“WalWrite NoWait”、“Soft Parse”、“Non-Parse” CPU四个数据库运行指标
Data Studio客户端工具特性增加pldebugger调试功能
增加pldebugger调试功能的回滚,在使用Data Studio调试前增加选项来保证调试函数在修改完数据后回退
支持xml和serial类型,表中增加列,列的类型支持xml和serial(big|normal|small)类型
支持在Data Studio中创建和展示外表对象
支持列存表的partial_cluster_key约束
全局临时表支持DDL的展示和导出
创建分区表支持LOCAL和GLOBAL标记
增加MOT表的展示

软件下载地址:https://opengauss.org/zh/download.html

测试环境

操作系统版本:CentOS7.6.1810     x86_64
硬件配置:    [华为云ECS]        2c/8G/40GB         
节点信息:    [主节点]  192.168.0.21     prod
                      [备节点]  192.168.0.22     stb1
                      [级联备]  192.168.0.23     casstb

一、运行环境初始化

说明:
      操作系统内核参数配置中,涉及SCTP协议的内核参数可以忽略不配置,由于SCTP协议在分布式数据库中使用,openGauss不使用该协议,官方文档也将会删除相关内容。
预安装脚本gs_preinstall会完成部分系统的配置,但还需要用户做少许基础配置,示例脚本如下[仅供参考]:

vi /root/initial_env.sh ------------------------------------------------------------------------------------------- #!/bin/bash ##Configure Linux environment For openGauss ## 1.Disable firewalld service systemctl disable firewalld.service systemctl stop firewalld.service echo "Firewalld " `systemctl status firewalld|grep Active` echo "1.Disable firewalld service completed." echo -e "\n" ## 2.Disable SELINUX sed -i '/^SELINUX=/d' /etc/selinux/config echo "SELINUX=disabled" >> /etc/selinux/config cat /etc/selinux/config|grep "SELINUX=disabled" echo "2.Disable SELINUX completed." echo -e "\n" ## 3.Configure encoding echo "LANG=en_US.UTF-8" >> /etc/profile source /etc/profile echo $LANG echo "3.Configure encoding completed." echo -e "\n" ## 4. Configure Timezone rm -fr /etc/localtime ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime date -R hwclock echo "4.Configure Timezone completed." echo -e "\n" ## 5. Turn off SWAP sed -i '/swap/s/^/#/' /etc/fstab swapoff -a free -m echo "5.Close swap partition completed." echo -e "\n" ## optional options,please take care of this ## echo "MTU=8192" >> /etc/sysconfig/network-scripts/ifcfg-ens34 ## For 10GB Ethernet environment , please set rx = 4096、tx = 4096 ## 6. Configure SSH Service sed -i '/Banner/s/^/#/' /etc/ssh/sshd_config sed -i '/PermitRootLogin/s/^/#/' /etc/ssh/sshd_config echo -e "\n" >> /etc/ssh/sshd_config echo "Banner none " >> /etc/ssh/sshd_config echo "PermitRootLogin yes" >> /etc/ssh/sshd_config cat /etc/ssh/sshd_config |grep -v ^#|grep -E 'PermitRoot|Banner' echo "6.Configure SSH Service completed." echo -e "\n" ## 7. Configure YUM and Install Packages mkdir /etc/yum.repos.d/bak mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak/ wget -O /etc/yum.repos.d/CentOS-Base.repo https://repo.huaweicloud.com/repository/conf/CentOS-7-reg.repo yum clean all yum install -y bzip2 python3 yum install -y libaio-devel flex bison ncurses-devel glibc-devel patch redhat-lsb-core readline-devel echo "7.Configure YUM and Install Packages completed." echo -e "\n" ## 8. Close transparent_hugepage ################Only for CentOS [Close transparent_hugepage]##################### cat >>/etc/rc.d/rc.local<<EOF if test -f /sys/kernel/mm/transparent_hugepage/enabled; then echo never > /sys/kernel/mm/transparent_hugepage/enabled fi if test -f /sys/kernel/mm/transparent_hugepage/defrag; then echo never > /sys/kernel/mm/transparent_hugepage/defrag fi EOF chmod +x /etc/rc.d/rc.local echo "8.Close transparent_hugepage completed." echo -e "\n" ################################################################################ ## 9. Configure OS Parameter cat >> /etc/sysctl.conf <<EOF net.ipv4.tcp_retries1 = 5 net.ipv4.tcp_syn_retries = 5 net.sctp.path_max_retrans = 10 net.sctp.max_init_retransmits = 10 EOF sysctl -p ################Only for openEuler[Disable RemoveIPC]##################### ## sed -i '/^RemoveIPC/d' /etc/systemd/logind.conf ## sed -i '/^RemoveIPC/d' /usr/lib/systemd/system/systemd-logind.service ## echo "RemoveIPC=no" >> /etc/systemd/logind.conf ## echo "RemoveIPC=no" >> /usr/lib/systemd/system/systemd-logind.service ## systemctl daemon-reload ## systemctl restart systemd-logind ## loginctl show-session | grep RemoveIPC ## systemctl show systemd-logind | grep RemoveIPC ## echo "10.Disable RemoveIPC completed." ## echo -e "\n" ## echo -e "\n" ########################################################################## ------------------------------------------------------------------------------------------- sh /root/initial_env.sh ## 执行初始化脚本[SCTP内核参数告警可以忽略]

二、配置XML文件

# mkdir /soft # vi /soft/cluster_config.xml ----------------------------------------------------------------------------- <?xml version="1.0" encoding="UTF-8"?> <ROOT> <!-- openGauss整体信息 --> <CLUSTER> <PARAM name="clusterName" value="gscluster" /> <PARAM name="nodeNames" value="prod,stb1,casstb" /> <PARAM name="gaussdbAppPath" value="/gauss/app" /> <PARAM name="gaussdbLogPath" value="/gauss/log" /> <PARAM name="tmpMppdbPath" value="/gauss/tmp"/> <PARAM name="gaussdbToolPath" value="/gauss/om" /> <PARAM name="corePath" value="/gauss/corefile"/> <PARAM name="backIp1s" value="192.168.0.21,192.168.0.22,192.168.0.23"/> </CLUSTER> <!-- 每台服务器上的节点部署信息 --> <DEVICELIST> <!-- node1上的节点部署信息 --> <DEVICE sn="prod"> <PARAM name="name" value="prod"/> <PARAM name="azName" value="AZ1"/> <PARAM name="azPriority" value="1"/> <!-- 如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP --> <PARAM name="backIp1" value="192.168.0.21"/> <PARAM name="sshIp1" value="192.168.0.21"/> <!--dn--> <PARAM name="dataNum" value="1"/> <PARAM name="dataPortBase" value="26000"/> <PARAM name="dataNode1" value="/gauss/data/db1,stb1,/gauss/data/db1,casstb,/gauss/data/db1"/> <PARAM name="dataNode1_syncNum" value="0"/> </DEVICE> <!-- node2上的节点部署信息,其中“name”的值配置为主机名称 --> <DEVICE sn="stb1"> <PARAM name="name" value="stb1"/> <PARAM name="azName" value="AZ1"/> <PARAM name="azPriority" value="1"/> <!-- 如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP --> <PARAM name="backIp1" value="192.168.0.22"/> <PARAM name="sshIp1" value="192.168.0.22"/> </DEVICE> <!-- node3上的节点部署信息,其中“name”的值配置为主机名称 --> <DEVICE sn="casstb"> <PARAM name="name" value="casstb"/> <PARAM name="azName" value="AZ1"/> <PARAM name="azPriority" value="1"/> <!-- 如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP --> <PARAM name="backIp1" value="192.168.0.23"/> <PARAM name="sshIp1" value="192.168.0.23"/> <PARAM name="cascadeRole" value="on"/> </DEVICE> </DEVICELIST> </ROOT> -----------------------------------------------------------------------------

三、执行预安装gs_preinstall


1. 解压软件包

cd /soft/ tar -zxvf openGauss-2.0.0-CentOS-64bit-all.tar.gz tar -zxvf openGauss-2.0.0-CentOS-64bit-om.tar.gz

2. 执行预安装

[root@prod ~]# cd /soft/script [root@prod script]# ./gs_preinstall -U omm -G dbgrp -X /soft/cluster_config.xml --------------------------------------------------------------------------------------------- 说明: gs_preinstall脚本操作和之前版本的操作基本一致,为了增加阅读性,这里就不再重复粘贴脚本输出信息。 脚本操作内容总结如下: 1. 解析命令参数和XML文件参数 2. 本地解压并安装应用软件 3. 配置集群节点间root用户SSH互信,并设置/etc/hosts解析 4. 分发软件包至各个节点的指定目录(如:/gauss/app目录),其他备节点相关目录,脚本会自动创建,无需用户手动提前创建 5. 创建普通用户(如:omm)及用户组,并建立各节点普通用户的SSH互信[需要用户输入新的用户密码] 6. 安装集群管理工具(如:OM) 7. 检查主机名、网络、OS版本及依赖包 8. 创建集群目录 9. 设置SCTP服务、系统资源限制、定义系统告警信息和日志速率、操作系统sysctl参数[缺少2个关于tcp重试的参数,需要手动设置] 10. 设置CRON服务、用户环境变量、动态链接库、Core file路径、ARM优化配置等 11. 修改目录的属主为数据库运行用户、设置Finish标签,完成openGauss的预安装操作。 ---------------------------------------------------------------------------------------------

-- 根据输出提示,使用gs_checkos工具检查操作预安装结果
[root@prod script]# /soft/script/gs_checkos -i A -h prod,stb1,casstb --detail ## -h指定需要检查的主机名 --------------------------------------------------------------------------------------------- 脚本检查内容包括: 1. OS 版本 2. Kernel版本 3. 字符集编码 4. 时区 5. SWAP分区关闭状态 6. sysctl参数配置 7. 文件系统配置 8. 磁盘配置状态 9. 磁盘块预读取参数 10. 磁盘IO调度策略 11. 网卡配置 [华为云ECS环境请忽略有关speed的告警] 12. 时间一致性、NTP服务 13. 防火墙关闭状态 14. 透明大页关闭状态 --------------------------------------------------------------------------------------------- [root@prod script]# chown -R omm:dbgrp /soft


四、执行安装gs_install

[root@prod ~]# su - omm [omm@prod ~]$ gs_install -X /soft/cluster_config.xml --------------------------------------------------------------------------------------------- 从脚本信息能看到来自于自于GaussDB200,吸取了GaussDB200的相关经验。 基本操作内容如下: 1. 解析命令行参数、对比并检查XML文件和集群静态配置文件 2. 检查并初始化全局参数 3. 备份软件目录 4. 检查预安装的集群节点环境 5. 调用本地../local/Install.py脚本执行本地数据库安装和集群配置 本地Install安装大致包含以下步骤: 1&gt; 查询并初始化全局参数,如:操作系统用户信息、安装路径信息、静态配置文件等; 2&gt; 解压并拷贝数据库Bin文件 3&gt; 调用本地脚本InitInstance.py初始化实例[需要用户输入数据库密码] 4&gt; 创建CA证书文件 5&gt; 调用本地脚本[ConfigInstance.py]配置数据库实例 6&gt; 调用本地脚本[CleanInstance.py]清理数据库实例[删除表空间目录、实例目录、xlog目录、socket文件等] 7&gt; 初始化所有节点的Instance,配置数据库参数和主备集群 8&gt; 检查CPU、内存等是否满足要求 9&gt; 配置pg_hba.conf,添加所有集群节点至白名单 10&gt; 启动集群,完成部署。 --------------------------------------------------------------------------------------------- 备注: 关于Install的第6步操作“CleanInstance”还没看明白其中的原因,很疑惑在Install安装操作却需要执行Clean清理操作,这个希望对代码精通的小伙伴予以解惑,感谢~ 后续有正确的答案会更新该文章,目前仅供大家参考。


五、检查数据库信息

[omm@prod ~]$ gsql -d postgres -p 26000 -r gsql ((openGauss 2.0.0 build 78689da9) compiled at 2021-03-31 21:04:03 commit 0 last mr ) Non-SSL connection (SSL connection is recommended when requiring high-security) Type "help" for help. postgres=# \l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+-------+-----------+---------+-------+------------------- postgres | omm | SQL_ASCII | C | C | template0 | omm | SQL_ASCII | C | C | =c/omm + | | | | | omm=CTc/omm template1 | omm | SQL_ASCII | C | C | =c/omm + | | | | | omm=CTc/omm ## 说明: ## openGauss 2.0.0相比于1.1.0版本,不再强制修改初始用户的密码,免去了很多初学者的困扰。 ## openGauss 2.0.0相比于1.1.0版本,又重新开放了gsql的readline功能,可以实现Tab键自动补齐命令,大幅增加了gsql的易用性,这个很不错。 postgres=# select * from dbe_perf.replication_stat; pid | usesysid | usename | application_name | client_addr | client_hostname | client_port | backend_start | state | sender_sent_location | receiver_write_location | receiver_flush_location | receiver_replay_location | sync_priority | sync_state -----------------+----------+---------+-------------------------------+--------------+-----------------+-------------+-------------------------------+-----------+----------------------+-------------------------+-------------------------+--------------------------+---------------+------------ 139635524359936 | 10 | omm | WalSender to Standby[dn_6002] | 192.168.0.22 | stb1 | 42460 | 2021-04-02 09:34:26.351701+08 | Streaming | 0/6002580 | 0/6002580 | 0/6002580 | 0/6002580 | 0 | Async


六、检查主备信息

## 查询集群健康状态 [omm@prod ~]$ gs_om -t status --detail [ Cluster State ] cluster_state : Normal redistributing : No current_az : AZ_ALL [ Datanode State ] node node_ip instance state | ----------------------------------------------------------------- 1 prod 192.168.0.21 6001 /gauss/data/db1 P Primary Normal | 2 stb1 192.168.0.22 6002 /gauss/data/db1 S Standby Normal | 3 casstb 192.168.0.23 6003 /gauss/data/db1 C Cascade Normal ## 查询主备同步信息 [omm@prod ~]$ gs_ctl query -D /gauss/data/db1 [2021-04-02 09:39:46.201][23236][][gs_ctl]: gs_ctl query ,datadir is /gauss/data/db1 HA state: local_role : Primary static_connections : 2 db_state : Normal detail_information : Normal Senders info: sender_pid : 22614 local_role : Primary peer_role : Standby peer_state : Normal state : Streaming sender_sent_location : 0/6001FF0 sender_write_location : 0/6001FF0 sender_flush_location : 0/6001FF0 sender_replay_location : 0/6001FF0 receiver_received_location : 0/6001FF0 receiver_write_location : 0/6001FF0 receiver_flush_location : 0/6001FF0 receiver_replay_location : 0/6001FF0 sync_percent : 100% sync_state : Async sync_priority : 0 sync_most_available : Off channel : 192.168.0.21:26001--&gt;192.168.0.22:42460 ## 查询集群节点配置信息 [omm@prod ~]$ gs_om -t view NodeHeader: version:301 time:1617327141 nodeCount:3 node:1 azName:AZ1 azPriority:1 node :1 nodeName:prod ssh channel : sshChannel 1:192.168.0.21 datanodeCount :1 datanode 1: datanodeLocalDataPath :/gauss/data/db1 datanodeXlogPath : datanodeListenIP 1:192.168.0.21 datanodePort :26000 datanodeLocalHAIP 1:192.168.0.21 datanodeLocalHAPort :26001 dn_replication_num: 3 datanodePeer0DataPath :/gauss/data/db1 datanodePeer0HAIP 1:192.168.0.22 datanodePeer0HAPort :26001 datanodePeer1DataPath :/gauss/data/db1 datanodePeer1HAIP 1:192.168.0.23 datanodePeer1HAPort :26001 azName:AZ1 azPriority:1 node :2 nodeName:stb1 ssh channel : sshChannel 1:192.168.0.22 datanodeCount :1 datanode 1: datanodeLocalDataPath :/gauss/data/db1 datanodeXlogPath : datanodeListenIP 1:192.168.0.22 datanodePort :26000 datanodeLocalHAIP 1:192.168.0.22 datanodeLocalHAPort :26001 dn_replication_num: 3 datanodePeer0DataPath :/gauss/data/db1 datanodePeer0HAIP 1:192.168.0.21 datanodePeer0HAPort :26001 datanodePeer1DataPath :/gauss/data/db1 datanodePeer1HAIP 1:192.168.0.23 datanodePeer1HAPort :26001 azName:AZ1 azPriority:1 node :3 nodeName:casstb ssh channel : sshChannel 1:192.168.0.23 datanodeCount :1 datanode 1: datanodeLocalDataPath :/gauss/data/db1 datanodeXlogPath : datanodeListenIP 1:192.168.0.23 datanodePort :26000 datanodeLocalHAIP 1:192.168.0.23 datanodeLocalHAPort :26001 dn_replication_num: 3 datanodePeer0DataPath :/gauss/data/db1 datanodePeer0HAIP 1:192.168.0.21 datanodePeer0HAPort :26001 datanodePeer1DataPath :/gauss/data/db1 datanodePeer1HAIP 1:192.168.0.22 datanodePeer1HAPort :26001</textarea>
最后修改时间:2021-04-06 09:26:31
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论