diff --git a/app/.vitepress/src/i18n/index.ts b/app/.vitepress/src/i18n/index.ts index 47e8162cf3a5fd5145911e47d1c80fc11edb2c2e..bd1570f5c280b0837562ad0f44fe254de20f6240 100644 --- a/app/.vitepress/src/i18n/index.ts +++ b/app/.vitepress/src/i18n/index.ts @@ -9,10 +9,7 @@ const i18n: { [key: string]: any } = { }, en: { common: common.en, - }, - ru: { - common: common.ru, - }, + } }; export function useI18n() { diff --git a/app/zh/blogs/guidance/index.md b/app/zh/blogs/guidance/index.md index d9571e1f46e75f5d26c1c6ee755ceaeb19fc6a8b..ef337e143657b4262deb6fa7ebcb880d94c6f182 100644 --- a/app/zh/blogs/guidance/index.md +++ b/app/zh/blogs/guidance/index.md @@ -90,3 +90,7 @@ git push origin : 7. Refer to https://gitee.com/help/articles/4122to submit your Pull Request 8. Wait for reviewing and merging. + + + + + + + 生产中心 + 主端 + 业务计算节点0 + 主存储节点 + Dorado + + 业务计算节点1 + + 容灾中心 + 备端 + 业务计算节点0 + 备存储节点 + Dorado + + 业务计算节点1 + + + +**缺个图,后面补充哈!!!** + +###   1.2.环境配置 + + 支持存储远程复制 + +## 2. 环境搭建 + +针对资源池化双集群部署之《资源池化磁阵搭建(手动部署) + dorado 同步复制》作出指导,无 cm 部署,环境搭建如下: + +###   2.1.创建 lun + +(1) 主存储创建 lun 组和 lun + 主存储管控平台(DeviceManager)登录:https://主存储 ip:8088 + 在管控平台上创建 lun 组和 lun,并映射到主机之后,在业务节点上查看挂好的 lun +(1.1)创建主机 +(1.2)创建 lun 组 +(1.3)创建 lun +如下图所示: + +步骤:Services -> LUN Groups -> LUN -> Create + +(2) 主存储对应的业务计算节点上查看挂好的 lun + +``` +rescan-scsi-bus.sh upadmin show vlun lsscsi -is +``` + + + +lun 说明: zx_mpp_doradoxlog 指 dorado 同步复制需要的 lun(可以理解为共享盘,盘符/dev/sdh),zx_mpp_dssdata 是资源池化主集群的数据盘(盘符/dev/sdn),zx_mpp_dssxlog0 是资源池化主集群节点 0 对应的 xlog 盘(盘符/dev/sdo) + +修改盘符属组 + +``` +chown mpp:mpp /dev/sdh +chown mpp:mpp /dev/sdn +chown mpp:mpp /dev/sdo +``` + +###   2.2.下载源码编译 + + 如果用已打包好的 openGauss-server 包则跳过该步骤,进行 2.3,如果修改代码开发中,则进行代码更新并编译,如下步骤: + +(1) 下载三方库 + 根据平台操作系统下载对应三方库,三方库下载地址:https://gitee.com/opengauss/openGauss-server 主页上 README.md 中查找需要的三方库 binarylibs + +获取 master 分支 openEuler_x86 系统对应的三方库 + +``` +wget https://opengauss.obs.cn-south-1.myhuaweicloud.com/latest/binarylibs/openGauss-third_party_binarylibs_openEuler_x86_64.tar.gz +``` + +(2) 下载 cbb 并编译 + +``` +git clone https://gitee.com/opengauss/CBB.git -b master cbb +cd CBB/build/linux/opengauss +sh build.sh -3rd $binarylibsDir -m Debug +``` + + 编译成功会自动将二进制放入三方库 openGauss-third_party_binarylibs_openEuler_x86_64/kernel/component 目录下 +(3) 下载 dss 并编译 + +``` +git clone https://gitee.com/opengauss/DSS.git -b master dss +cd CBB/build/linux/opengaussDSS +sh build.sh -m Debug -3rd $binarylibsDir +``` + +(4) 下载 dms 并编译 + +``` +git clone https://gitee.com/opengauss/DMS.git -b master dms +cd CBB/build/linux/opengauss +sh build.sh -m Debug -3rd $binarylibsDir +``` + +(5) 下载 openGauss-server 并编译 + 编译过程需要 cbb、dss、dms 的二进制,会从 openGauss-third_party_binarylibs_openEuler_x86_64/kernel/component 中获取 + +``` +git clone https://gitee.com/opengauss/openGauss-server.git -b master openGauss-server +sh build.sh -3rd $binarylibsDir -m Debug +``` + + 编译完之后的二进制存放在 openGauss-server/mppdb_temp_install/目录下 + +###   2.3.环境准备 + +由于机器资源不足,这里以一个业务计算服务器上部署一主为例 +(1) 二进制准备 +创建一个自己用户的目录,例如/opt/mpp,将已编好的 openGauss-server/mppdb_temp_install/拷贝放至/opt/mpp 目录下,即/opt/mpp/mppdb_temp_install +(2) 提权 +sudo setcap CAP_SYS_RAWIO+ep /opt/mpp/mppdb_temp_install/bin/perctrl +(3) 主集群主节点对应的环境变量 ss_env0 + +``` +export HOME=/opt/mpp +export GAUSSHOME=${HOME}/mppdb_temp_install/ +export GAUSSLOG=${HOME}/cluster/gausslog0 +export SS_DATA=${HOME}/cluster/ss_data +export DSS_HOME=${HOME}/cluster/ss_data/dss_home0 +export LD_LIBRARY_PATH=$GAUSSHOME/lib:$LD_LIBRARY_PATH +export PATH=$GAUSSHOME/bin:$PATH +``` + +`Tips`: 环境变量里面一定要写 export,即使`echo $GCC_PATH`存在,也要写 export 才能真正导入路径 + +参数说明: +HOME 为用户自己创建的工作目录; +GAUSSHOME 为编译完成的目标文件路径,包含 openGauss 的 bin、lib 等; +GAUSSLOG 为运行时的日志目录,包含 dss、dms 等日志 +SS_DATA 为共享存储的根目录,即 dss 相关配置的根目录 +DSS_HOME 为 dssserver 配置对应的目录 + +###   2.4.dss 配置-磁阵搭建 + +配置脚本 dss_autoscript.sh 如下: + +dss_autoscript.sh + +``` +#!/bin/bash + +source /opt/mpp/ss_env0 + +DSS_HOME_ONE=${SS_DATA}/dss_home0 +# 如果部署一个节点,则删除DSS_HOME_TWO +DSS_HOME_TWO=${SS_DATA}/dss_home1 + +function clean_dir() +{ + ps ux | grep 'dssserver -D /opt/mpp/cluster/ss_data/dss_home0' | grep -v grep | awk '{print $2}' | xargs kill -9 + ps ux | grep 'dssserver -D /opt/mpp/cluster/ss_data/dss_home1' | grep -v grep | awk '{print $2}' | xargs kill -9 + rm -rf ${SS_DATA} +} + +function create_one_device() +{ + mkdir -p ${SS_DATA} + mkdir -p ${DSS_HOME_ONE} + mkdir -p ${DSS_HOME_ONE}/cfg + mkdir -p ${DSS_HOME_ONE}/log + echo "data:/dev/sdn" > ${DSS_HOME_ONE}/cfg/dss_vg_conf.ini + echo "log0:/dev/sdo" >> ${DSS_HOME_ONE}/cfg/dss_vg_conf.ini + # 如果部署一个节点,则删除log1这一行 + echo "log1:/dev/sdz" >> ${DSS_HOME_ONE}/cfg/dss_vg_conf.ini + echo "INST_ID = 0" > ${DSS_HOME_ONE}/cfg/dss_inst.ini + echo "_LOG_BACKUP_FILE_COUNT = 128" >> ${DSS_HOME_ONE}/cfg/dss_inst.ini + echo "_LOG_MAX_FILE_SIZE = 20M" >> ${DSS_HOME_ONE}/cfg/dss_inst.ini + echo "LSNR_PATH = ${DSS_HOME_ONE}" >> ${DSS_HOME_ONE}/cfg/dss_inst.ini + echo "STORAGE_MODE = RAID" >> ${DSS_HOME_ONE}/cfg/dss_inst.ini + echo "_SHM_KEY=42" >> ${DSS_HOME_ONE}/cfg/dss_inst.ini + echo "_log_LEVEL = 255" >> ${DSS_HOME_ONE}/cfg/dss_inst.ini +} + +# 如果部署一个节点,则不需要执行create_two_device +function create_two_device() +{ + mkdir -p ${DSS_HOME_TWO} + mkdir -p ${DSS_HOME_TWO}/cfg + mkdir -p ${DSS_HOME_TWO}/log + echo "data:/dev/sdn" > ${DSS_HOME_TWO}/cfg/dss_vg_conf.ini + echo "log0:/dev/sdo" >> ${DSS_HOME_TWO}/cfg/dss_vg_conf.ini + echo "log1:/dev/sdz" >> ${DSS_HOME_TWO}/cfg/dss_vg_conf.ini + echo "INST_ID = 1" > ${DSS_HOME_TWO}/cfg/dss_inst.ini + echo "_LOG_BACKUP_FILE_COUNT = 128" >> ${DSS_HOME_TWO}/cfg/dss_inst.ini + echo "_LOG_MAX_FILE_SIZE = 20M" >> ${DSS_HOME_TWO}/cfg/dss_inst.ini + echo "LSNR_PATH = ${DSS_HOME_TWO}" >> ${DSS_HOME_TWO}/cfg/dss_inst.ini + echo "STORAGE_MODE = RAID" >> ${DSS_HOME_TWO}/cfg/dss_inst.ini + echo "_SHM_KEY=42" >> ${DSS_HOME_TWO}/cfg/dss_inst.ini + echo "_log_LEVEL = 255" >> ${DSS_HOME_TWO}/cfg/dss_inst.ini +} + +# 无论部署几个节点,都只在第一个节点执行一次create_vg +function create_vg() +{ + dd if=/dev/zero bs=2048 count=100000 of=/dev/sdn + dd if=/dev/zero bs=2048 count=100000 of=/dev/sdo + # 如果部署一个节点,则删除log1对应的盘符/dev/sdz这一行 + dd if=/dev/zero bs=2048 count=100000 of=/dev/sdz + ${GAUSSHOME}/bin/dsscmd cv -g data -v /dev/sdn -s 2048 -D ${DSS_HOME_ONE} + ${GAUSSHOME}/bin/dsscmd cv -g log0 -v /dev/sdo -s 65536 -D ${DSS_HOME_ONE} + # 如果部署一个节点,则删除log1这一行 + ${GAUSSHOME}/bin/dsscmd cv -g log1 -v /dev/sdz -s 65536 -D ${DSS_HOME_ONE} +} + +function start_dssserver() +{ + #dssserver -D /opt/mpp/cluster/ss_data/dss_home0/ & + dssserver -D ${DSS_HOME_ONE} & + if [ $? -ne 0 ]; then + echo "dssserver startup failed." + exit 1 + fi + sleep 3 +} + +function gs_initdb_dn() +{ + rm -rf /opt/mpp/cluster/dn0/* + gs_initdb -D /opt/mpp/cluster/dn0 --nodename=node0 -U mpp -w Huawei@123 --vgname=+data,+log0 --enable-dss --dms_url="0:172.16.108.23:4411" -I 0 --socketpath='UDS:/opt/mpp/cluster/ss_data/dss_home0/.dss_unix_d_socket' -d -n -g /dev/sdh +} + + +function assign_parameter() +{ + gs_guc set -Z datanode -D /opt/mpp/cluster/dn0 -c "port = 44100" + gs_guc set -Z datanode -D /opt/mpp/cluster/dn0 -c "listen_addresses = '*'" + gs_guc set -Z datanode -D /opt/mpp/cluster/dn0 -c "ss_enable_reform = off" + gs_guc set -Z datanode -D /opt/mpp/cluster/dn0 -c "xlog_file_path = '/dev/sdh'" + gs_guc set -Z datanode -D /opt/mpp/cluster/dn0 -c "xlog_lock_file_path = '/opt/mpp/cluster/shared_lock_primary.lock'" + gs_guc set -Z datanode -D /opt/mpp/cluster/dn0 -c "application_name = 'dn_master_0'" + gs_guc set -Z datanode -D /opt/mpp/cluster/dn0 -c "cross_cluster_replconninfo1='localhost=10.10.10.10 localport=25400 remotehost=20.20.20.10 remoteport=25400'" + gs_guc set -Z datanode -D /opt/mpp/cluster/dn0 -c "cross_cluster_replconninfo2='localhost=10.10.10.10 localport=25400 remotehost=20.20.20.20 remoteport=25400'" + gs_guc set -Z datanode -D /opt/mpp/cluster/dn0 -c "cluster_run_mode = 'cluster_primary'" + gs_guc set -Z datanode -D /opt/mpp/cluster/dn0 -c "ha_module_debug = off" + gs_guc set -Z datanode -D /opt/mpp/cluster/dn0 -c "ss_log_level = 255" + gs_guc set -Z datanode -D /opt/mpp/cluster/dn0 -c "ss_log_backup_file_count = 100" + gs_guc set -Z datanode -D /opt/mpp/cluster/dn0 -c "ss_log_max_file_size = 1GB" + gs_guc set -Z datanode -D /opt/mpp/cluster/dn0 -h "host all all 172.16.108.54/32 trust" + gs_guc set -Z datanode -D /opt/mpp/cluster/dn0 -h "host all all 172.16.108.55/32 trust" +} + + +if [ "$1" == "first_create" ]; then + clean_dir + create_one_device + # 如果部署一个节点,则不需要执行create_two_device + create_two_device + create_vg + start_dssserver + #gs_initdb_dn + #assign_parameter +else + echo "you can create vg" + create_vg +fi + +``` + + @Notice Thing!@:主集群都执行 dss_autoscript.sh 脚本配置 dss, 用户需要自行修改脚本中的/opt/mpp/ss_env0 环境变量、DSS_HOME_ONE 和 DSS_HOME_TWO 目录,将其配置成自己的目录。还需要修改 create_one_device 和 create_two_device 中 data 和 xlog 对应的盘符 + +ps x 查看 dss 进程,如下 + +``` +[mpp@nodename dn0]$ ps x + PID TTY STAT TIME COMMAND + 69160 pts/2 S 0:00 -bash + 80294 pts/2 Sl 5:56 dssserver -D /opt/mpp/cluster/ss_data/dss_home0 + 80309 pts/2 S 0:00 perctrl 8 11 + 345361 pts/2 R+ 0:00 ps x +``` + +###   2.5 数据库部署 + +####    2.5.1 主集群(生产中心) + + (1) 主集群主节点 0 初始化 + @Precondition!@:节点 0 对应的 dssserver 必须提前拉起,即 dsserver 进程存在 + +使用 dss 的 data 数据卷、log0 日志卷、dorado 共享卷/dev/sdh 初始化主集群节点 0 + +``` +gs_initdb -D /opt/mpp/cluster/dn0 --nodename=node0 -U mpp -w Huawei@123 --vgname=+data,+log0 --enable-dss --dms_url="0:10.10.10.10:4411,1:10.10.10.10:4412" -I 0 --socketpath='UDS:/opt/mpp/cluster/ss_data/dss_home0/.dss_unix_d_socket' -d -n -g /dev/sdh +``` + + 参数解释: + +- --vgname 卷名,做了 xlog 分盘,数据卷是+data,节点 0 对应的日志卷是+log0 +- --dms_url 0 表示 0 节点,10:10:10:10 指节点 ip,4411 是端口,这是一组参数,表示 0 节点的 dms 节点信息,如果是两节点,以逗号为分割,后面是节点 1 的 dms 节点信息,如果没有 cm 部署,两个节点 ip 可以不一样也可以一样,即可以在同一个机器上部署两个数据库,也可在不同机器上部署两个数据库,如果有 cm 部署,两个节点 ip 必须不一样。 +- -g 指 dorado 同步复制共享 xlog 盘 + +(2)配置主集群主节点 0 + postgresql.conf 文件 + +``` +port = 44100 +listen_addresses = '*' +ss_enable_reform = off +ss_log_level = 255 +ss_log_backup_file_count = 100 +ss_log_max_file_size = 1GB +xlog_lock_file_path = '/opt/mpp/cluster/dn0/redolog.lock' +``` + + 参数解释: + +- ss_enable_reform dms reform 功能,没有 cm 的情况下,设置该参数为 off + +(3)主集群备节点 1 初始化 + +``` +gs_initdb -D /opt/mpp/cluster/dn1 --nodename=node1 -U mpp -w Huawei@123 --vgname=+data,+log1 --enable-dss --dms_url="0:10.10.10.10:4411,1:10.10.10.10:4412" -I 0 --socketpath='UDS:/opt/mpp/cluster/ss_data/dss_home1/.dss_unix_d_socket' +``` + +主集群备节点 1 配置参数 + +``` +port = 48100 +listen_addresses = '\*' +ss_enable_reform = off +ss_log_level = 255 +ss_log_backup_file_count = 100 +ss_log_max_file_size = 1GB +xlog_lock_file_path = '/opt/mpp/cluster/dn0/redolog.lock' +``` +(4)主集群启动 + +``` +主节点0启动 +gs_ctl start -D /opt/mpp/cluster/dn0 -M primary + + +备节点1启动 +gs_ctl start -D /opt/mpp/cluster/dn0 +``` + + @important point@:没有部署 cm 的情况下,以-M primary 启动主集群主节点 + +ps x 查看进程,如下所示: + +``` +[mpp@nodename dn0]$ ps x + PID TTY STAT TIME COMMAND + 69160 pts/2 S 0:00 -bash + 80294 pts/2 Sl 5:56 dssserver -D /opt/mpp/cluster/ss_data/dss_home0 + 80309 pts/2 S 0:00 perctrl 8 11 + 141835 ? Ssl 18:48 /opt/mpp/mppdb_temp_install/bin/gaussdb -D /opt/mpp/cluster/dn0 -M primary + 345361 pts/2 R+ 0:00 ps x +``` + +---- + +**_Notice:不推荐直接用于生产环境_** + +**_作者:Shirley_zhengx_** diff --git "a/app/zh/blogs/zhengxue/\350\265\204\346\272\220\346\261\240\345\214\226\346\224\257\346\214\201\345\220\214\345\237\216dorado\345\217\214\351\233\206\347\276\244\351\203\250\347\275\262(\345\233\233)\344\271\213om\351\203\250\347\275\262.md" "b/app/zh/blogs/zhengxue/\350\265\204\346\272\220\346\261\240\345\214\226\346\224\257\346\214\201\345\220\214\345\237\216dorado\345\217\214\351\233\206\347\276\244\351\203\250\347\275\262(\345\233\233)\344\271\213om\351\203\250\347\275\262.md" new file mode 100644 index 0000000000000000000000000000000000000000..7a61b90901dc36d5e2281c3f446cbd1fc4b43029 --- /dev/null +++ "b/app/zh/blogs/zhengxue/\350\265\204\346\272\220\346\261\240\345\214\226\346\224\257\346\214\201\345\220\214\345\237\216dorado\345\217\214\351\233\206\347\276\244\351\203\250\347\275\262(\345\233\233)\344\271\213om\351\203\250\347\275\262.md" @@ -0,0 +1,671 @@ +--- +title: '资源池化支持同城dorado双集群部署(四)----集群管理工具部署' +date: '2023-05-24' +tags: ['资源池化支持同城dorado双集群部署(四)----集群管理工具部署'] +archives: '2023-05-24' +category: 'blog' +author: 'shirley_zhengx' +summary: '资源池化支持同城dorado双集群部署(四)----集群管理工具部署' +img: '/zh/post/zhengxue/title/img1.png' +times: '9:30' +--- + +资源池化支持同城 dorado 双集群部署方式: + +- (一) dd 模拟(手动部署 + 无 cm) +- (二) cm 模拟(手动部署 dd 模拟 + 有 cm) +- (三) 磁阵搭建(手动部署) +- (四) 集群管理工具部署(om + cm) + +## 1.环境描述 + + 针对磁阵搭建(手动部署)作出指导,环境描述如下: + +###   1.1.组网方式 + + + + + + + + + + + + + + + + + + + + +
生产中心主端业务计算节点0主存储Dorado
业务计算节点1
容灾中心备端业务计算节点0备存储Dorado
业务计算节点1
+ +举例说明: + + + + + + + + + + + + + + + + + + + + +
生产中心主端业务计算节点0:10.10.10.10主存储:144.144.144.44Dorado
业务计算节点1:10.10.10.20
容灾中心备端业务计算节点0:20.20.20.10备存储:144.144.144.45Dorado
业务计算节点1:20.20.20.20
+ + **缺个图,后面补充哈!!!** + +###   1.2.环境配置 + + 支持存储远程复制 + +## 2. 环境搭建 + +针对资源池化双集群部署之《资源池化 om 集群管理工具部署 + dorado 同步复制》作出指导,环境搭建如下: + +###   2.1.创建 lun + +(1) 主存储创建 lun + 主存储管控平台(DeviceManager)登录:https://主存储 ip:8088,例如对应 1.1 章节表格就是:https://144.144.144.44:8088 + 在管控平台上创建 lun 组和 lun,并映射到主机之后,在业务节点上查看挂好的 lun + +- (1.1)创建主机 + 在存储管控平台上,业务计算节点都称之为主机 +- (1.2)创建 lun 组 + 由于 lun 需要映射,当有多个业务计算节点(主机),则可以通过创建 lun 组,将主机加入到 lun 组中,每次闯将 lun 的时候,只需要将 lun 加入到 lun 组中,则自动会映射到主机组中包含的所有业务计算节点 ip(主机) +- (1.3)创建 lun + 如下图所示: + + 步骤:Services -> LUN Groups -> LUN -> Create + +映射到业务节点的方式一: +在图中 Map to Host 选择业务节点 ip (例如 1.1 章节表格中主存储对应的业务计算节点 0 的 ip:10.10.10.10) + +映射到业务节点的方式二: +在图中 Add to LUN Group 选择(1.2)创建的 lun 组,lun 组有对应的主机组,会自动映射到主机组中包含的所有业务计算节点 ip(例如 1.1 章节表格中主存储对应的业务计算节点 0 的 ip:10.10.10.10 和业务计算节点 1 的 ip:10.10.10.20) + +(2) 主存储对应的业务计算节点上查看挂好的 lun + +``` +rescan-scsi-bus.sh upadmin show vlun lsscsi -is +``` + + + +lun 说明: 这里显示的是 om 部署资源池化需要用的 lun,zx_mpp_dssdata 是资源池化主集群的数据盘(盘符/dev/sdab),zx_mpp_dssxlog0 是资源池化主集群节点 0 对应的 xlog 盘(盘符/dev/sdac),zx_mpp_dssxlog0 是资源池化主集群节点 1 对应的 xlog 盘(盘符/dev/sdad),zx_mpp_cm0 是资源池化主集群 cm 对应的 votingDiskPath 盘(盘符/dev/sdae),zx_mpp_cm0 是资源池化主集群 cm 对应的 shareDiskDir 盘(盘符/dev/sdaf) + +修改盘符属组 + +``` +chown mpp:mpp /dev/sdab +chown mpp:mpp /dev/sdac +chown mpp:mpp /dev/sdad +chown mpp:mpp /dev/sdae +chown mpp:mpp /dev/sdaf +``` + +`Tips`: 主机组包含的主机节点都需要修改属组,全部修改 + +(3) 主存储创建 dorado 同步复制的 lun +主存储上创建的 dorado 同步复制的 lun,步骤同(1.2)一样,lun 名称是 zx_mpp_doradoxlog。盘符/dev/sdm + +``` +执行upadmin show vlun查看: +Vlun ID Disk Name +12 sdm zx_mpp_doradoxlog +``` + +(4) 在备存储上同样操作执行上面步骤(1)和(2),不操作步骤(3) + 备存储管控平台(DeviceManager)登录:https://备存储 ip:8088,例如对应 1.1 章节表格就是:https://144.144.144.45:8088 +执行步骤(1)和(2),备存储上不用操作步骤(3),可以在建立远程同步复制的时候自动创建,在《2.4.3 建立容灾关系》章节中介绍。 + +###   2.2.下载源码编译 + + 如果用已打包好的 openGauss-server 包则跳过该步骤,进行 2.3,如果修改代码开发中,则进行代码更新并编译,如下步骤: + +(1) 下载三方库 + 根据平台操作系统下载对应三方库,三方库下载地址:https://gitee.com/opengauss/openGauss-server 主页上 README.md 中查找需要的三方库 binarylibs + +获取 master 分支 openEuler_x86 系统对应的三方库 + +``` +wget https://opengauss.obs.cn-south-1.myhuaweicloud.com/latest/binarylibs/openGauss-third_party_binarylibs_openEuler_x86_64.tar.gz +``` + +(2) 下载 cbb 并编译 + +``` +git clone https://gitee.com/opengauss/CBB.git -b master cbb +cd CBB/build/linux/opengauss +sh build.sh -3rd $binarylibsDir -m Debug +``` + + 编译成功会自动将二进制放入三方库 openGauss-third_party_binarylibs_openEuler_x86_64/kernel/component 目录下 +(3) 下载 dss 并编译 + +``` +git clone https://gitee.com/opengauss/DSS.git -b master dss +cd CBB/build/linux/opengaussDSS +sh build.sh -3rd $binarylibsDir -m Debug +``` + +(4) 下载 dms 并编译 + +``` +git clone https://gitee.com/opengauss/DMS.git -b master dms +cd CBB/build/linux/opengauss +sh build.sh -3rd $binarylibsDir -m Debug +``` + +(5) 下载 openGauss-server 并编译 + 编译过程需要 cbb、dss、dms 的二进制,会从 openGauss-third_party_binarylibs_openEuler_x86_64/kernel/component 中获取 + +``` +git clone https://gitee.com/opengauss/openGauss-server.git -b master openGauss-server +sh build.sh -3rd $binarylibsDir -m Debug +``` + + 编译完之后的二进制存放在 openGauss-server/mppdb_temp_install/目录下 + +###   2.3.环境准备 + +由于机器资源不足,这里部署一主一备为例 +(1) 二进制包准备 +创建一个自己用户的目录,例如/opt/mpp,将已编好的包或者发布包拷贝放至/opt/mpp/gauss_package 目录下,包含 om、cm、server 的二进制 +如下所示: + +``` +[root@node1 gauss_package]# ll +总用量 413236 +-rw-r--r-- 1 mpp mpp 6980293 5月 23 15:03 openGauss-5.1.0-openEuler-64bit-cm.tar.gz +-rw-r--r-- 1 mpp mpp 18591448 5月 23 15:25 openGauss-5.1.0-openEuler-64bit-Libpq.tar.gz +-rw-r--r-- 1 mpp mpp 65 5月 23 15:04 openGauss-5.1.0-openEuler-64bit-om.sha256 +-rw-r--r-- 1 mpp mpp 11055254 5月 23 15:04 openGauss-5.1.0-openEuler-64bit-om.tar.gz +-rw-r--r-- 1 mpp mpp 65 5月 23 15:25 openGauss-5.1.0-openEuler-64bit.sha256 +-rw-r--r-- 1 mpp mpp 347317866 5月 23 15:25 openGauss-5.1.0-openEuler-64bit.tar.bz2 +-rw-r--r-- 1 mpp mpp 38680532 5月 23 15:25 openGauss-5.1.0-openEuler-64bit-tools.tar.gz +-rw------- 1 mpp mpp 65 5月 23 15:25 upgrade_sql.sha256 +-rw------- 1 mpp mpp 493901 5月 23 15:25 upgrade_sql.tar.gz +-rw-r--r-- 1 mpp mpp 32 5月 23 15:02 version.cfg +``` + +(2) 准备 xml 文件 +/opt/mpp/1p1s.xml 文件配置一主一备资源池化集群 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +`Tips`: 用户需要修改节点名称、节点 IP、目录、盘符、端口号 + +###   2.4.om 部署双集群 + +####    2.4.1 主集群(生产中心) + + (1) 解压 om 包 + +``` +su - root +cd /opt/mpp/gauss_package +tar -zxvf openGauss-x.x.x-openEuler-64bit-all.tar.gz +tar -zxvf openGauss-x.x.x-openEuler-64bit-om.tar.gz +``` + + (2)执行预安装 + +``` +cd script +./gs_preinstall -U mpp -G mpp -X /opt/mpp/1p1s.xml --sep-env-file=/home/mpp/ss_env +``` + + 参数解释: + +- sep-env-file 分离环境变量 + +(3)执行安装 + +``` +su - mpp +source /home/mpp/ss_env +gs_install -X /opt/mpp/1p1s.xml --dorado_config=/dev/sdm +``` + +--dorado_config 传入参数对应 2.1 章节步骤(3),主存储上创建的 dorado 同步复制 lun 的盘符 + +(4)查看主集群状态 + +``` +[mpp@node1 dn_6001]$ cm_ctl query -Cvidp +[ CMServer State ] + +node node_ip instance state +------------------------------------------------------------------------- +1 node1 10.10.10.10 1 /opt/mpp/install/cm/cm_server Primary +2 node2 10.10.10.20 2 /opt/mpp/install/cm/cm_server Standby + + +[ Defined Resource State ] + +node node_ip res_name instance state +--------------------------------------------------------- +1 node1 10.10.10.10 dms_res 6001 OnLine +2 node2 10.10.10.20 dms_res 6002 OnLine +1 node1 10.10.10.10 dss 20001 OnLine +2 node2 10.10.10.20 dss 20002 OnLine + +[ Cluster State ] + +cluster_state : Normal +redistributing : No +balanced : Yes +current_az : AZ_ALL + +[ Datanode State ] + +node node_ip instance state | node node_ip instance state +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ +1 node1 10.10.10.10 6001 25400 /opt/mpp/install/data/dn P Primary Normal | 2 node2 10.10.10.20 6002 25400 /opt/mpp/install/data/dn S Standby Normal + +``` + +####    2.4.2 备集群(容灾中心) + +需要提前做《2.1.创建 lun》 和 《2.3.环境准备》 + + (1) 解压 om 包 + +``` +su - root +cd /opt/mpp/gauss_package +tar -zxvf openGauss-x.x.x-openEuler-64bit-all.tar.gz +tar -zxvf openGauss-x.x.x-openEuler-64bit-om.tar.gz +``` + + (2)执行预安装 + +``` +cd script +./gs_preinstall -U mpp -G mpp -X /opt/mpp/1p1s.xml --sep-env-file=/home/mpp/ss_env +``` + +(3)执行安装 + +``` +gs_install -X /opt/mpp/1p1s.xml +``` + +(4)查看备集群状态 + +``` + +[mpp@node2 dn_6002]$ cm_ctl query -Cvidp +[ CMServer State ] + +node node_ip instance state +------------------------------------------------------------------------- +1 node1 20.20.20.10 1 /opt/mpp/install/cm/cm_server Primary +2 node2 20.20.20.20 2 /opt/mpp/install/cm/cm_server Standby + + +[ Defined Resource State ] + +node node_ip res_name instance state +--------------------------------------------------------- +1 node1 20.20.20.10 dms_res 6001 OnLine +2 node2 20.20.20.20 dms_res 6002 OnLine +1 node1 20.20.20.10 dss 20001 OnLine +2 node2 20.20.20.20 dss 20002 OnLine + +[ Cluster State ] + +cluster_state : Normal +redistributing : No +balanced : Yes +current_az : AZ_ALL + +[ Datanode State ] + +node node_ip instance state | node node_ip instance state +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ +1 node1 20.20.20.10 6001 25400 /opt/mpp/install/data/dn P Primary Normal | 2 node2 20.20.20.20 6002 25400 /opt/mpp/install/data/dn S Standby Normal +``` + +####    2.4.3 建立容灾关系 + +(1) 主集群(生产中心)配置参数,每个节点都配置 + 节点 0 的 postgresql.conf 文件 + +``` +xlog_file_path = '/dev/sdm' +xlog_lock_file_path = '/home/mpp/install/shared_lock_primary' +application_name = 'dn_master_0' +cross_cluster_replconninfo1='localhost=10.10.10.10 localport=25400 remotehost=20.20.20.10 remoteport=25400' +cross_cluster_replconninfo2='localhost=10.10.10.10 localport=25400 remotehost=20.20.20.20 remoteport=25400' +cluster_run_mode = 'cluster_primary' +ha_module_debug = off +ss_log_level = 255 +ss_log_backup_file_count = 100 +ss_log_max_file_size = 1GB +``` + + 节点 1 的 postgresql.conf 文件 + +``` +xlog_file_path = '/dev/sdm' +xlog_lock_file_path = '/home/mpp/install/shared_lock_primary' +application_name = 'dn_master_1' +cross_cluster_replconninfo1='localhost=10.10.10.20 localport=25400 remotehost=20.20.20.10 remoteport=25400' +cross_cluster_replconninfo2='localhost=10.10.10.20 localport=25400 remotehost=20.20.20.20 remoteport=25400' +cluster_run_mode = 'cluster_primary' +ha_module_debug = off +ss_log_level = 255 +ss_log_backup_file_count = 100 +ss_log_max_file_size = 1GB +``` + +(2) 重启主集群,查询主集群状态 + +``` +cm_ctl start +cm_ctl query -Cvidp +``` + +(3) 登录主管控平台,配置同步复制 + +  在主存储管控平台(DeviceManager)登录:https://主存储 ip:8088 +  data protection -> luns -> remote replication pairs(远程复制对) -> create ->选择主存储需要同步复制给备存储的 lun -> next +  请原谅这里截图工具的搓,标记笔太难用了,画的蓝圈圈很丑但很个性! + + +图中第 5 步选择主存储上创建的 dorado 同步复制的 lun,lun 名称是 zx_mpp_doradoxlog + +选择同步 -> Automatic -> 备存储的存储池名称 -> next + + + +最后会显示 successful,表示成功 + +(4) 登录备管控平台,映射到备集群 +  在备存储管控平台(DeviceManager)登录:https://备存储 ip:8088 +在备存储上做映射方式一: +  Services -> LUNs -> zx_mpp_doradoxlog -> More -> Map -> 选择备存储对应的业务计算节点 ip(例如 1.1 章节表格中的 20.20.20.10) + + +选择第(3)中和主存储做了远程复制对的 lun,名称是 zx_mpp_doradoxlog + +在备存储上做映射方式二: +Services -> LUNs -> 双击 zx_mpp_doradoxlog -> Mapping -> Operation -> map -> 择备存储对应的业务计算节点 0 的 ip(例如 1.1 章节表格中的 20.20.20.10) +再次点击 Operation -> map -> 择备存储对应的业务计算节点 1 的 ip(例如 1.1 章节表格中的 20.20.20.20) + + +在业务计算节点上查看 lun 情况: + +``` +[root@node1 mpp]# upadmin show vlun +-------------------------------------------------------------------------- + Vlun ID Disk Name Lun WWN Status Capacity + 31 sdag zx_mpp_doradoxlog 65fdfg Normal 1.00TB +-------------------------------------------------------------------------- +``` + +修改属组 + +``` +chown mpp:mpp /dev/sdag +``` + +(5) 备集群(容灾中心)配置数据库参数,每个节点都配置 + 节点 0 的 postgresql.conf 文件 + +``` +xlog_file_path = '/dev/sdag' +xlog_lock_file_path = '/home/mpp/install/shared_lock_standby' +application_name = 'dn_standby_0' +cross_cluster_replconninfo1='localhost=20.20.20.10 localport=25400 remotehost=10.10.10.10 remoteport=25400' +cross_cluster_replconninfo2='localhost=20.20.20.10 localport=25400 remotehost=10.10.10.20 remoteport=25400' +cluster_run_mode = 'cluster_standby' +ha_module_debug = off +ss_log_level = 255 +ss_log_backup_file_count = 100 +ss_log_max_file_size = 1GB +``` + + 节点 1 的 postgresql.conf 文件 + +``` +xlog_file_path = '/dev/sdag' +xlog_lock_file_path = '/home/mpp/install/shared_lock_standby' +application_name = 'dn_standby_1' +cross_cluster_replconninfo1='localhost=20.20.20.20 localport=25400 remotehost=10.10.10.10 remoteport=25400' +cross_cluster_replconninfo2='localhost=20.20.20.20 localport=25400 remotehost=10.10.10.20 remoteport=25400' +cluster_run_mode = 'cluster_standby' +ha_module_debug = off +ss_log_level = 255 +ss_log_backup_file_count = 100 +ss_log_max_file_size = 1GB +``` + +(6) 停备集群对首备进行 build +方式一 + +``` +# 设置该参数后,执行cm_ctl stop,dss不会被踢出集群 +cm_ctl set --param --server -k delay_arbitrate_max_cluster_timeout=0 + +# kill cm_server 等待om_monitor重新拉起cm_server,使修改的参数生效 +kill cm_server + +# 先停从备,防止首备先停发生failover +cm_ctl stop -n 2 -I 6002 +cm_ctl stop -n 1 -I 6001cm_server + +# 执行build命令,首备节点的dssserver进程必须正常 +gs_ctl build -D /opt/mpp/install/data/dn -b cross_cluster_full -g 0 --vgname=+data --enable-dss --socketpath='UDS:/opt/mpp/install/dss_home/.dss_unix_d_socket' -q + +# 设置该参数后,执行cm_ctl stop,dss不会被踢出集群 +cm_ctl set --param --server -k delay_arbitrate_max_cluster_timeout=10 + +# kill cm_server 等待om_monitor重新拉起cm_server,使修改的参数生效 +kill cm_server +``` + +方式二 + +``` +# 停止备集群 +cm_ctl stop + +# 在首备节点导入dss维护环境变量,导入该环境可以在cm部署的情况下手动拉起dssserver +export DSS_MAINTAIN=TRUE + +# 拉起首备dsserver +dsserver -D /opt/mpp/install/dss_home & + +# 执行build命令,首备节点的dssserver进程必须正常 +gs_ctl build -D /opt/mpp/install/data/dn -b cross_cluster_full -g 0 --vgname=+data --enable-dss --socketpath='UDS:/opt/mpp/install/dss_home/.dss_unix_d_socket' -q +``` + +首备就是指备集群中还没有建立容灾关系之前,显示 primary 的节点,即为首备节点,对其进行 build + +(7) 备集群(容灾中心)配置 cm 参数 +配置下列参数,用于区分集群模式,cm 会根据不同集群模式进行状态校验 + +``` +cm_ctl set --param --server -k backup_open=1 +cm_ctl set --param --agent -k agent_backup_open=1 +``` + +参数说明: +backup_open=1,agent_backup_open=1 使用 dorado 介质的集群转双集群备集群 +backup_open=0,agent_backup_open=0 资源池化单集群 + +(7) 重启备集群 + +``` +cm_ctl start +``` + +(8) 步骤(5)~(7)自动化脚本 + +``` +#!/bin/bash + +source /home/mpp/ss_env + +#stop standby cluster +echo "stop standby cluster." +cm_ctl stop + +#assign parameter to main standby +echo "assign parameter to main standby." +gs_guc set -N node1 -D /opt/mpp/install/data/dn -c "xlog_file_path = '/dev/sdk'" +gs_guc set -N node1 -D /opt/mpp/install/data/dn -c "xlog_lock_file_path = '/opt/mpp/install/shared_lock_standby.lock" +gs_guc set -N node1 -D /opt/mpp/install/data/dn -c "application_name = 'dn_standby_0'" +gs_guc set -N node1 -D /opt/mpp/install/data/dn -c "cross_cluster_replconninfo1='localhost=172.16.108.54 localport=25400 remotehost=172.16.108.23 remoteport=44100'" +gs_guc set -N node1 -D /opt/mpp/install/data/dn -c "cluster_run_mode = 'cluster_standby'" +gs_guc set -N node1 -D /opt/mpp/install/data/dn -c "ha_module_debug = off" +gs_guc set -N node1 -D /opt/mpp/cluster/dn0 -h "host all all 172.16.108.23/32 trust" + + +#assign parameter to standby +echo "assign parameter to standby." +gs_guc set -N node2 -D /opt/mpp/install/data/dn -c "xlog_file_path = '/dev/sdc'" +gs_guc set -N node2 -D /opt/mpp/install/data/dn -c "xlog_lock_file_path = '/opt/mpp/install/shared_lock_standby.lock'" +gs_guc set -N node2 -D /opt/mpp/install/data/dn -c "application_name = 'dn_standby_1'" +gs_guc set -N node2 -D /opt/mpp/install/data/dn -c "cross_cluster_replconninfo1='localhost=172.16.108.55 localport=25400 remotehost=172.16.108.23 remoteport=44100'" +gs_guc set -N node2 -D /opt/mpp/install/data/dn -c "cluster_run_mode = 'cluster_standby'" +gs_guc set -N node2 -D /opt/mpp/install/data/dn -c "ha_module_debug = off" +gs_guc set -N node2 -D /opt/mpp/cluster/dn0 -h "host all all 172.16.108.23/32 trust" + +#start dssserver +export DSS_MAINTAIN=TRUE +dssserver -D /opt/mpp/install/dss_home & + +#build +#gs_ctl build -D /opt/mpp/install/data/dn -b cross_cluster_full -g 0 --vgname=+data --enable-dss --socketpath='UDS:/opt/mpp/install/dss_home/.dss_unix_d_socket' -q + + +#assign cm parameter +echo "assign cm parameter to all node." +cm_ctl set --param --server -k backup_open=1 +cm_ctl set --param --agent -k agent_backup_open=1 +``` + +(9) 查询状态 +主集群使用 cm_ctl query -Cvidp 查询出来同第步一样 +备集群查询结果如下,备集群节点 0 从没有建立容灾关系时的 primary 变成建立容灾关系之后的 Main Standby + +``` +[mpp@node2 dn_6002]$ cm_ctl query -Cvidp +[ CMServer State ] + +node node_ip instance state +------------------------------------------------------------------------- +1 node1 20.20.20.10 1 /opt/mpp/install/cm/cm_server Primary +2 node2 20.20.20.20 2 /opt/mpp/install/cm/cm_server Standby + + +[ Defined Resource State ] + +node node_ip res_name instance state +--------------------------------------------------------- +1 node2 20.20.20.10 dms_res 6001 OnLine +2 node2 20.20.20.20 dms_res 6002 OnLine +1 node2 20.20.20.10 dss 20001 OnLine +2 node2 20.20.20.20 dss 20002 OnLine + +[ Cluster State ] + +cluster_state : Normal +redistributing : No +balanced : Yes +current_az : AZ_ALL + +[ Datanode State ] + +node node_ip instance state | node node_ip instance state +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ +1 node1 20.20.20.10 6001 25400 /opt/mpp/install/data/dn P Main Standby Normal | 2 node2 20.20.20.20 6002 25400 /opt/mpp/install/data/dn S Standby Normal +``` + +--- + +**_Notice:不推荐直接用于生产环境_** + +**_作者:Shirley_zhengx_**