IT 邦德

刚刚!某大厂突发网络波动,某国产数据绝了...

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

@

  • 1.高可用架构

  • 2.VIP配置

    • 2.1 集群添加VIP

    • 2.2 VIP故障转移配置

  • 3.高可用

    • 3.1 主库down机

    • 3.2 备节点重构

  • 4.一键静默安装

  • 5.总结

前言

某大厂由于网络大面积故障,企业核心的生产系统使用openGauss国产数据库集群,集群秒级切换,作为7*24小时的工厂不停机作业,这次故障节点切换,核心业务无感知

1.高可用架构

Image
1.openGauss高可用:CM支持两节点部署
通过引入第三方网关IP,有效解决CM集群两节点部署模式下自仲裁问题,
支持CMS和DN均为2节点的部署;
同时支持动态配置CM集群故障切换策略和数据库集群脑裂故障恢复策略,
从而能够尽可能确保集群数据的完整性和一致性。

2.写重定向
主备节点开启控制参数 enable_remote_execute=on之后
通过备库发起的写操作,会重定向到主库执行

2.VIP配置

2.1 集群添加VIP

1.添加VIP,以端口号标记,便于区分
ifconfig ens33:15400 192.168.6.14 netmask 255.255.255.0 up

2.给集群添加VIP资源 VIP作为openGauss的资源管理
cm_ctl res --add --res_name="VIP_az1" --res_attr="resources_type=VIP,float_ip=192.168.6.14"
cm_ctl: add res(VIP_az1) success.

将每个实例加到资源中
cm_ctl res --edit --res_name="VIP_az1" --add_inst="node_id=1,res_instance_id=6001" --inst_attr=base_ip=192.168.6.11
cm_ctl res --edit --res_name="VIP_az1" --add_inst="node_id=2,res_instance_id=6002" --inst_attr=base_ip=192.168.6.12

Image

2.2 VIP故障转移配置

cd /openGauss/cm/cm_server
vi cm_server.conf

--cm集群故障自动切换配置前提条件
third_party_gateway_ip = 192.168.6.8
cms_enable_failover_on2nodes = true         
cms_network_isolation_timeout = 20

--数据库集群故障自动切换配置前提条件
third_party_gateway_ip = 192.168.6.8   
cms_enable_failover_on2nodes = true         
cms_enable_db_crash_recovery = on 

3.高可用

3.1 主库down机

主库挂了之后,备库变为主库,VIP也漂移

1.模拟主库down机
[omm@opengauss51m ~]$ gs_ctl stop -D /openGauss/data/dn

2.主库挂了之后,备库变为主库,VIP也漂移过来了 
[omm@opengauss51b ~]$ gs_om -t status --detail

3.主库修复后集群恢复正常
[omm@opengauss51b ~]$ cm_ctl show

Image
Image

3.2 备节点重构

openGauss集群,如果备机故障无法使用,可以在线重构新备机,恢复集群业务

主机:

gs_guc set -D /u01/opengauss/data/db -c "replconninfo1='localhost=主机ip localport=port+1 localheartbeatport=port+4 localservice=port+5 remotehost=备机IP remoteport=port+1 remoteheartbeatport=port+4 remoteservice=port+5'"
gs_guc set -D /u01/opengauss/data/db -c 'remote_read_mode=off';
gs_guc set -D /u01/opengauss/data/db -c 'replication_type=1';
gs_guc set -D /u01/opengauss/data/db -h "host all omm 主机ip/32 trust"        
gs_guc set -D /u01/opengauss/data/db -h "host all omm 备机IP/32 trust" 
gs_guc set -D /u01/opengauss/data/db -c "port=主机端口"
gs_guc set -D /u01/opengauss/data/db -c "listen_addresses='主机ip'"

备机:
gs_guc set -D /u01/opengauss/data/db -c "replconninfo1='localhost=备机ip localport=port+1 localheartbeatport=port+4 localservice=port+5 remotehost=主机IP remoteport=port+1 remoteheartbeatport=port+4 remoteservice=port+5'"
gs_guc set -D /u01/opengauss/data/db -c 'remote_read_mode=off';
gs_guc set -D /u01/opengauss/data/db -c 'replication_type=1';
gs_guc set -D /u01/opengauss/data/db -h "host all omm 主机ip/32 trust"        
gs_guc set -D /u01/opengauss/data/db -h "host all omm 备机IP/32 trust" 
gs_guc set -D /u01/opengauss/data/db -c "port=备机端口"
gs_guc set -D /u01/opengauss/data/db -c "listen_addresses='备机IP'"

主机启动:
gs_ctl start -D /u01/opengauss/data/db -M primary

备机启动
gs_ctl start -D /u01/opengauss/data/db -M standby
gs_ctl build -D /u01/opengauss/data/db -M standby -b full

4.一键静默安装

opengauss的OM仓库有个
一主一备安装脚本以及单机安装的脚本
在部署安装的时候非常方便
https://gitee.com/opengauss/openGauss-OM/tree/master/simpleInstall

使用如下命令执行安装脚本
sh install.sh -U user_name \
-G user_group \
-h host_ip \
-p port [-D install_path]

参数说明
user_name为openGauss数据库的安装用户。
user_group为openGauss数据库安装用户所属用户组。
host_ip为主机在后端存储网络中的IP地址(内网IP)。
host_port为数据库节点的基础端口号。
install_path为openGauss数据库安装路径,该参数为可选参数。

Image

5.总结

高可用性是一个关键的考虑因素。为了确保系统的连续可用,看到国产数据库的高可用越来越完善,而且也发现越来越多的核心应用在使用openGauss,相信国产数据库的会越来越好,加油!国产数据库