暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

openGauss 6.0一主二备高可用架构部署,可靠很行

作者:IT邦德
中国DBA联盟(ACDU)成员,10余年DBA工作经验,
Oracle、PostgreSQL ACE
CSDN博客专家及B站知名UP主,全网粉丝10万+
擅长主流Oracle、MySQL、PG、高斯及Greenplum备份恢复,
安装迁移,性能优化、故障应急处理

文章目录

前言

openGauss 6.0一主二备高可用架构部署体验后感觉,可靠很行

📣 1.官方说明及下载

6.0.0版本下载地址
https://opengauss.org/zh/download/
官方gitee地址
https://gitee.com/opengauss/openGauss-server/issues

在这里插入图片描述

📣 2.部署前准备

✨ 2.1 环境准备

##操作系统 $ cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core) ##主机host设置 主库:hostnamectl set-hostname gaussdb1 备库1:hostnamectl set-hostname gaussdb2 备库2:hostnamectl set-hostname gaussdb3 也可以通过以下办法修改主机名 cat>> /etc/hosts <<EOF 192.168.3.10 gaussdb1 192.168.3.11 gaussdb2 192.168.3.12 gaussdb3 EOF

✨ 2.2 yum配置

注:3个节点均做如下操作,请将操作系统镜像文件上传到服务器
##创建挂载目录
mount /dev/sr0 /mnt
##yum源配置文件
cd /etc/yum.repos.d/
mkdir bak
mv CentOS* bak
##配置yum文件
cat>/etc/yum.repos.d/local.repo<<EOF
[base-local]
name=CentOS7-local
baseurl=file:///mnt
enabled=1
gpgcheck=0
EOF
#清空并重载yum
yum clean all
yum makecache
##安装依赖包
yum install libaio-devel flex bison ncurses-devel glibc-devel patch redhat-lsb-core readline-devel libnsl expect -y

✨ 2.3 关闭SeLinux

vi /etc/selinux/config 修改"SELINUX"的值"disabled",执行:wq保存并退出修改,重新启动操作系统 通过以下方法也可以修改 sed -i 's/^SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config setenforce 0 注:主库和备库同时修改,然后重启服务器 $ /usr/sbin/sestatus SELinux status: disabled

✨ 2.4 关闭防火墙

注:主备库均做如下操作
1.检查防火墙是否关闭
systemctl status firewalld
若防火墙状态显示为active (running),则表示防火墙未关闭
若防火墙状态显示为inactive (dead),则无需再关闭防火墙
2.关闭防火墙并禁止开机重启
systemctl disable firewalld.service
systemctl stop firewalld.service

✨ 2.5 设置时区和时间

注:主备库均做如下操作 [root@gaussdb1 ~]# timedatectl Local time: Sun 2024-06-16 20:33:19 CST Universal time: Sun 2024-06-16 12:33:19 UTC RTC time: Mon 2024-06-17 09:39:14 Time zone: Asia/Shanghai (CST, +0800) NTP enabled: no NTP synchronized: no RTC in local TZ: no DST active: n/a 为了保证主备节点时间同步,需要设置ntp时间同步即可 yum install -y ntp 启动ntp服务,并开机自启动 systemctl start ntpd systemctl enable ntpd [root@gaussdb1 ~]# ntpq -p remote refid st t when poll reach delay offset jitter ============================================================================== time.cloudflare .INIT. 16 u - 64 0 0.000 0.000 0.000 196.81.48.144.r .INIT. 16 u - 64 0 0.000 0.000 0.000 ntp5.flashdance 194.58.202.20 2 u 1 64 1 154.714 -759496 353.096 dns1.synet.edu. .BDS. 1 u 2 64 1 77.043 -759497 205.201

✨ 2.6 内核修改

##系统资源及内核参数 # vi /etc/security/limits.conf echo "* soft nofile 1000000">>/etc/security/limits.conf echo "* hard nofile 1000000">>/etc/security/limits.conf echo "* soft nproc unlimited">>/etc/security/limits.conf echo "* hard nproc unlimited">>/etc/security/limits.conf vi /etc/security/limits.d/90-nproc.conf * soft nproc unlimited ## 系统支持的最大进程数 echo "* soft nproc unlimited">>/etc/security/limits.d/90-nproc.conf 内核参数配置 vi /etc/sysctl.conf sysctl -p # 使内核参数生效 net.ipv4.conf.ens33.rp_filter=1 虚拟机没有万兆网卡不能配置该项,否则认证报错! cat>> /etc/sysctl.conf <<EOF net.ipv4.tcp_retries1=5 net.ipv4.tcp_syn_retries=5 kernel.shmmax = 1932735283 kernel.shmall = 483183820 kernel.shmmni = 4096 #kernel.sem= 500 5120000 2500 9000 kernel.sem = 50100 128256000 50100 2560 EOF sysctl -p # 使内核参数生效

✨ 2.7 关闭透明大页

查看透明大页是否启用,[always] never 表示已启用,always [never] 表示已禁用。 # 各服务器节点均执行 echo never > /sys/kernel/mm/transparent_hugepage/defrag echo never > /sys/kernel/mm/transparent_hugepage/enabled cat >> /etc/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 EOF chmod +x /etc/rc.d/rc.local grep Huge /proc/meminfo HugePages_Total:显示0 表示设置成功

✨ 2.8 python安装

[root@gaussdb1 ~]# python -V Python 2.7.5 CentOS:支持Python 3.6.X,python需要通过--enable-shared方式编译 1.依赖包安装 [root@gaussdb1 ~]# yum install -y zlib* [root@gaussdb1 ~]# rpm -qa | grep zlib zlib-1.2.7-18.el7.x86_64 zlib-devel-1.2.7-18.el7.x86_64 --安装gcc yum install gcc 2.安装包下载 python官网 https://www.python.org/downloads/release/python-3615/下载安装包即可 安装包为:Python-3.6.15.tgz 3.解压并编译 cd /opt tar -zxvf Python-3.6.15.tgz cd Python-3.6.15/ ./configure --prefix=/usr/local/python3 --enable-shared 4.编译安装 make -j4 make install 注意:make编译时间比较长,耐心等待 5.OS上设置python的软连接 ln -s /usr/local/python3/bin/python3.6 /usr/bin/python3 ln -s /usr/local/python3/bin/pip3 /usr/bin/pip 6.环境校验 python3: error while loading shared libraries: libpython3.6m.so.1.0: cannot open shared object file: No such file or directory cp /usr/local/python3/lib/libpython3.6m.so.1.0 /usr/lib64/ [root@gaussdb1 ~]# python3 -V Python 3.6.15 [root@gaussdb1 ~]# python3 Python 3.6.15 (default, Sep 30 2023, 08:38:09) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] on linux Type "help", "copyright", "credits" or "license" for more information. >>>

在这里插入图片描述

📣 3.一主二备安装

✨ 3.1 前提条件

前提条件: 已完成用户组和普通用户的创建。 所有服务器操作系统和网络均正常运行。 普通用户必须有数据库包解压路径、安装路径的读、写和执行操作权限,并且安装路径必须为空。 普通用户对下载的openGauss压缩包有执行权限。 安装前请检查指定的openGauss端口矩阵中所有端口是否被占用,如果被占用请更改端口或者停止当前使用端口进程。

✨ 3.2 安装包解压

注意:上传安装包到服务器/opt/openGauss,主节点操作即可 mkdir /opt/openGauss mkdir /openGauss --openGauss安装目录 ##解压安装包 chmod 755 -R /opt/openGauss cd /opt/openGauss [root@gaussdb1 openGauss]# tar -zxvf openGauss-6.0.0-RC1-CentOS-64bit-all.tar.gz [root@gaussdb1 openGauss]# ll total 315752 drwxr-xr-x. 2 root root 4096 Jun 16 21:03 openGauss -rw-rw-rw-. 1 root root 149449208 Jun 16 20:47 openGauss-6.0.0-RC1-CentOS-64bit-all.tar.gz -rw-r--r--. 1 root root 109 Mar 31 12:16 openGauss-6.0.0-RC1-CentOS-64bit-cm.sha256 -rw-r--r--. 1 root root 22466710 Mar 31 12:16 openGauss-6.0.0-RC1-CentOS-64bit-cm.tar.gz -rw-r--r--. 1 root root 65 Mar 31 12:15 openGauss-6.0.0-RC1-CentOS-64bit-om.sha256 -rw-r--r--. 1 root root 23122340 Mar 31 12:15 openGauss-6.0.0-RC1-CentOS-64bit-om.tar.gz -rw-r--r--. 1 root root 65 Mar 31 12:16 openGauss-6.0.0-RC1-CentOS-64bit.sha256 -rw-r--r--. 1 root root 104672194 Mar 31 12:16 openGauss-6.0.0-RC1-CentOS-64bit.tar.bz2 drwxr-xr-x. 17 501 501 4096 Jun 16 20:51 Python-3.6.15 -rw-rw-rw-. 1 root root 23035095 Jun 16 20:47 Python-3.6.15.tgz drwxr-xr-x. 2 root root 4096 Oct 31 2018 rh -rw-------. 1 root root 65 Mar 31 12:14 upgrade_sql.sha256 -rw-------. 1 root root 541779 Mar 31 12:14 upgrade_sql.tar.gz [root@gaussdb1 openGauss]# tar -zxvf openGauss-6.0.0-RC1-CentOS-64bit-om.tar.gz [root@gaussdb1 openGauss]# ll total 315764 drwxr-xr-x. 19 root root 4096 Mar 31 12:15 lib drwxr-xr-x. 2 root root 4096 Jun 16 21:03 openGauss -rw-rw-rw-. 1 root root 149449208 Jun 16 20:47 openGauss-6.0.0-RC1-CentOS-64bit-all.tar.gz -rw-r--r--. 1 root root 109 Mar 31 12:16 openGauss-6.0.0-RC1-CentOS-64bit-cm.sha256 -rw-r--r--. 1 root root 22466710 Mar 31 12:16 openGauss-6.0.0-RC1-CentOS-64bit-cm.tar.gz -rw-r--r--. 1 root root 65 Mar 31 12:15 openGauss-6.0.0-RC1-CentOS-64bit-om.sha256 -rw-r--r--. 1 root root 23122340 Mar 31 12:15 openGauss-6.0.0-RC1-CentOS-64bit-om.tar.gz -rw-r--r--. 1 root root 65 Mar 31 12:16 openGauss-6.0.0-RC1-CentOS-64bit.sha256 -rw-r--r--. 1 root root 104672194 Mar 31 12:16 openGauss-6.0.0-RC1-CentOS-64bit.tar.bz2 drwxr-xr-x. 17 501 501 4096 Jun 16 20:51 Python-3.6.15 -rw-rw-rw-. 1 root root 23035095 Jun 16 20:47 Python-3.6.15.tgz drwxr-xr-x. 2 root root 4096 Oct 31 2018 rh drwxr-xr-x. 11 root root 4096 Mar 31 12:15 script -rw-------. 1 root root 65 Mar 31 12:14 upgrade_sql.sha256 -rw-------. 1 root root 541779 Mar 31 12:14 upgrade_sql.tar.gz -rw-r--r--. 1 root root 36 Mar 31 12:15 version.cfg

✨ 3.3 XML配置文件

安装openGauss前需要创建cluster_config.xml文件。 cluster_config.xml文件包含部署openGauss的服务器信息、安装路径、IP地址以及端口号等。 本次部署以一主二备的方式创建XML配置文件 编辑配置XML文件: vi /opt/openGauss/cluster_config.xml ##CM版本 <?xml version="1.0" encoding="UTF-8"?> <ROOT> <!-- openGauss整体信息 --> <CLUSTER> <PARAM name="clusterName" value="Cluster_opengauss" /> <PARAM name="nodeNames" value="gaussdb1,gaussdb2,gaussdb3" /> <!-- 数据库安装目录,与数据库所需其它路径相互独立,没有包含关系--> <PARAM name="gaussdbAppPath" value="/openGauss/app" /> <!-- 日志目录--> <PARAM name="gaussdbLogPath" value="/openGauss/log/omm" /> <!-- 临时文件目录--> <PARAM name="tmpMppdbPath" value="/openGauss/tmp"/> <!-- 数据库工具目录--> <PARAM name="gaussdbToolPath" value="/openGauss/om" /> <!-- 数据库core文件目录--> <PARAM name="corePath" value="/openGauss/corefile"/> <!-- 节点IP,与数据库节点名称列表一一对应 --> <PARAM name="backIp1s" value="192.168.3.10,192.168.3.11,192.168.3.12"/> </CLUSTER> <!-- 每台服务器上的节点部署信息 --> <DEVICELIST> <!-- node1上的节点部署信息 --> <DEVICE sn="gaussdb1"> <PARAM name="name" value="gaussdb1"/> <PARAM name="azName" value="AZ1"/> <PARAM name="azPriority" value="1"/> <!-- 如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP --> <PARAM name="backIp1" value="192.168.3.10"/> <PARAM name="sshIp1" value="192.168.3.10"/> <!--CM节点部署信息--> <PARAM name="cmsNum" value="1"/> <PARAM name="cmServerPortBase" value="15000"/> <PARAM name="cmServerListenIp1" value="192.168.3.10,192.168.3.11,192.168.3.12"/> <PARAM name="cmServerHaIp1" value="192.168.3.10,192.168.3.11,192.168.3.12"/> <PARAM name="cmServerlevel" value="1"/> <PARAM name="cmServerRelation" value="gaussdb1,gaussdb2,gaussdb3"/> <PARAM name="cmDir" value="/openGauss/cm"/> <!--dn--> <PARAM name="dataNum" value="1"/> <PARAM name="dataPortBase" value="15400"/> <PARAM name="dataNode1" value="/openGauss/data/dn,gaussdb2,/openGauss/data/dn,gaussdb3,/openGauss/data/dn"/> <PARAM name="dataNode1_syncNum" value="0"/> </DEVICE> <!-- node2上的节点部署信息,其中“name”的值配置为主机名称 --> <DEVICE sn="gaussdb2"> <PARAM name="name" value="gaussdb2"/> <PARAM name="azName" value="AZ1"/> <PARAM name="azPriority" value="1"/> <!-- 如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP --> <PARAM name="backIp1" value="192.168.3.11"/> <PARAM name="sshIp1" value="192.168.3.11"/> <!-- cm --> <PARAM name="cmServerPortStandby" value="15000"/> <PARAM name="cmDir" value="/openGauss/cm"/> </DEVICE> <!-- node3上的节点部署信息,其中“name”的值配置为主机名称 --> <DEVICE sn="gaussdb3"> <PARAM name="name" value="gaussdb3"/> <PARAM name="azName" value="AZ1"/> <PARAM name="azPriority" value="1"/> <!-- 如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP --> <PARAM name="backIp1" value="192.168.3.12"/> <PARAM name="sshIp1" value="192.168.3.12"/> <!-- cm --> <PARAM name="cmServerPortStandby" value="15000"/> <PARAM name="cmDir" value="/openGauss/cm"/> </DEVICE> </DEVICELIST> </ROOT>

✨ 3.4 用户及组创建

注:主备库均操作
##创建用户组dbgrp
[root@gaussdb1 ~]# groupadd dbgrp
##创建用户组dbgrp下的普通用户omm,并设置密码为Gauss_123
useradd -g dbgrp omm
passwd omm

✨ 3.5 初始化安装

chmod 775 /openGauss -R
chown omm:dbgrp /openGauss -R
[root@gaussdb1 ~]# cd /opt/openGauss/script
[root@gaussdb1 ~]# export LD_LIBRARY_PATH=/opt/openGauss/script/gspylib/clib:$LD_LIBRARY_PATH
注:只在主库上做操作即可,确保主库和备库root密码相同,用户和组以及目录授权同时在主备库操作
[root@gaussdb1 script]# ./gs_preinstall -U omm -G dbgrp -X /opt/openGauss/cluster_config.xml --sep-env-file=/home/omm/envfile

在这里插入图片描述

✨ 3.6 正式安装

#主库执行即可 在执行过程中,用户需根据提示输入数据库的密码,密码具有一定的复杂度,为保证用户正常使用该数据库,请记住输入的数据库密码 设置的密码要符合复杂度要求: 最少包含8个字符,最多包含16个字符。 不能和用户名、当前密码(ALTER)、或当前密码反序相同。 至少包含大写字母(A-Z)、小写字母(a-z)、数字、非字母数字字符(限定为~!@#$%^&*()-_=+\|[{}];:,<.>/?)四类字符中的三类字符。 ##登录到openGauss的主机,并切换到omm用户 [root@gaussdb1 ~]# su - omm [omm@gaussdb1 ~]$ ll /opt/openGauss/cluster_config.xml -rw------- 1 omm dbgrp 3665 Jun 16 23:40 /opt/openGauss/cluster_config.xml [omm@gaussdb1 ~]$ source /home/omm/envfile [omm@gaussdb1 ~]$ gs_install -X /opt/openGauss/cluster_config.xml

在这里插入图片描述

📣 4.安装验证

✨ 4.1 集群状态检查

# 通过openGauss提供的gs_om工具可以完成数据库状态检查 以omm用户身份登录服务器。 执行如下命令检查数据库状态是否正常,"cluster_state"显示"Normal"表示数据库可正常使用 [root@gaussdb1 ~]# su - omm [omm@gaussdb1 ~]$ gs_om -t status ----------------------------------------------------------------------- cluster_state : Normal redistributing : No balanced : Yes ----------------------------------------------------------------------- [omm@gaussdb1 ~]$ gs_om -t status --detail [ CMServer State ] node node_ip instance state ---------------------------------------------------------------- 1 gaussdb1 192.168.3.10 1 /openGauss/cm/cm_server Standby 2 gaussdb2 192.168.3.11 2 /openGauss/cm/cm_server Standby 3 gaussdb3 192.168.3.12 3 /openGauss/cm/cm_server Primary [ Cluster State ] cluster_state : Normal redistributing : No balanced : Yes current_az : AZ_ALL [ Datanode State ] node node_ip instance state ---------------------------------------------------------------------------- 1 gaussdb1 192.168.3.10 6001 15400 /openGauss/data/dn P Primary Normal 2 gaussdb2 192.168.3.11 6002 15400 /openGauss/data/dn S Standby Normal 3 gaussdb3 192.168.3.12 6003 15400 /openGauss/data/dn S Standby Normal

✨ 4.2 数据库登陆

[omm@gaussdb1 ~]$ gsql -d postgres -p 15400 gsql ((openGauss 6.0.0-RC1 build ed7f8e37) compiled at 2024-03-31 11:59:31 commit 0 last mr ) Non-SSL connection (SSL connection is recommended when requiring high-security) Type "help" for help. openGauss=# \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 (3 rows) openGauss=# \copyright GaussDB Kernel Database Management System Copyright (c) Huawei Technologies Co., Ltd. 2018. All rights reserved. openGauss=# \du List of roles Role name | Attributes | Member of -----------+------------------------------------------------------------------------------------------------------------------+----------- omm | Sysadmin, Create role, Create DB, Replication, Administer audit, Monitoradmin, Operatoradmin, Policyadmin, UseFT | {} [omm@gaussdb1 ~]$ ps ux | grep gaussdb omm 79727 0.0 0.0 72472 964 ? Ss 10:30 0:00 ssh-agent -a /home/omm/gaussdb_tmp/gauss_socket_tmp omm 97072 3.8 31.1 6535636 1202496 ? Ssl 10:50 0:24 /openGauss/app/bin/gaussdb -D /openGauss/data/dn -M primary omm 100396 0.0 0.0 110476 896 pts/0 S+ 11:01 0:00 grep --color=auto gaussdb

在这里插入图片描述

✨ 4.3 集群启动及关闭

##集群关闭 [omm@gaussdb1 ~]$ gs_om -t stop Stopping cluster. ========================================= Successfully stopped cluster. ========================================= End stop cluster. ##集群启动 [[omm@gaussdb1 ~]$ gs_om -t start Starting cluster. ====================================================================== Successfully started primary instance. Wait for standby instance. ====================================================================== . Successfully started cluster. ====================================================================== cluster_state : Normal redistributing : No node_count : 3 Datanode State primary : 1 standby : 2 secondary : 0 cascade_standby : 0 building : 0 abnormal : 0 down : 0 Successfully started cluster. [omm@gaussdb1 ~]$ gs_om -t status --detail [ CMServer State ] node node_ip instance state ---------------------------------------------------------------- 1 gaussdb1 192.168.3.10 1 /openGauss/cm/cm_server Standby 2 gaussdb2 192.168.3.11 2 /openGauss/cm/cm_server Standby 3 gaussdb3 192.168.3.12 3 /openGauss/cm/cm_server Primary [ Cluster State ] cluster_state : Normal redistributing : No balanced : Yes current_az : AZ_ALL [ Datanode State ] node node_ip instance state ---------------------------------------------------------------------------- 1 gaussdb1 192.168.3.10 6001 15400 /openGauss/data/dn P Primary Normal 2 gaussdb2 192.168.3.11 6002 15400 /openGauss/data/dn S Standby Normal 3 gaussdb3 192.168.3.12 6003 15400 /openGauss/data/dn S Standby Normal
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论