openGauss之主备切换

如清风一般 如清风一般 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

1.主备切换

主备节点都处于正常状态,主备切换只是交换双方在数据库集簇中的角色,通过gs_ctl工具实现主备实例切换,操作步骤如下:
1)查看主备情况,以omm用户登录任意节点主机:

gs_om -t status --detail

2)以omm用户登录备节点主机OG2:
准确来说,执行下述命令的意思是将当前节点升主,其他节点降备,如果在主库上执行,本来就是主库,执行之后当然没有影响了。所以为了达到试验效果,我们在备库上执行下述命令:

gs_ctl switchover -D /data/og2
[omm@OG2 ~]$ gs_ctl switchover -D /data/og2
[2022-05-11 10:51:07.804][19219][][gs_ctl]: gs_ctl switchover ,datadir is /data/og2 
[2022-05-11 10:51:07.804][19219][][gs_ctl]: switchover term (1)
[2022-05-11 10:51:07.821][19219][][gs_ctl]: waiting for server to switchover...........
[2022-05-11 10:51:15.916][19219][][gs_ctl]: done
[2022-05-11 10:51:15.916][19219][][gs_ctl]: switchover completed (/data/og2)

/data/og2为备节点的数据目录

3)记录主备机器信息

gs_om -t refreshconf
[omm@OG2 ~]$ gs_om -t refreshconf
Generating dynamic configuration file for all nodes.
Successfully generated dynamic configuration file.

4)查验

[omm@OG2 ~]$ gs_om -t status --detail
[   Cluster State   ]

cluster_state   : Normal
redistributing  : No
current_az      : AZ_ALL

[  Datanode State   ]

    nodenode_ip         port      instance          state
------------------------------------------------------------------------
1  OG1 192.168.1.100   15400      6001 /data/og1   P Standby Normal
2  OG2 192.168.1.101   15400      6002 /data/og2   S Primary Normal

经查,备节点OG2确实切换成了主节点。

2.使用场景:

需要进行主备切换时,例如数据库进行故障转移后需要恢复原来的主备关系,或发现数据库主机硬件异常,需要进行主备切换,保证数据库业务的持续性。
说明:
(1)级联备机不能直接转换为主机,只能先通过switchover或者failover成为备机,然后再切换为主机
(2)主备切换为维护操作,确保openGauss状态正常,所有业务结束后,再进行切换操作。

3.双主现象

1)解决双主现象的基本步骤

如果由于网络故障、磁盘满等导致主备连接断开,出现双主现象,恢复步骤如下,否则会导致数据丢失:
(1)查看主备状态,如果都是两个数据库节点都为primary,说明出现故障

gs_om -t status --detail

(2)以omm用户登录待降备的节点,然后关闭服务:

gs_ctl stop -D /data/og2

(3)然后以standby模式启动服务:

gs_ctl start -D /data/og2 -M standby

(4)保存数据库主备机器信息

gs_om -t refreshconf

(5)检查确认

gs_om -t status --detail

2)模拟双主现象

为了做上面的双主现象实验,在og1和og2成功进行主备切换之后,现在的状态为:
og1 备
og2 主
(1)为了达到双主,登录OG1主机,执行如下命令:

gs_ctl stop -D /data/og1
gs_ctl start -D /data/og1 -M primary	//以primary模式启动OG1

然后查看状态:

gs_om -t status --detail
[omm@OG1 ~]$ gs_om -t status --detail
[   Cluster State   ]

cluster_state   : Unavailable
redistributing  : No
current_az      : AZ_ALL

[  Datanode State   ]

    nodenode_ip         port      instance          state
------------------------------------------------------------------------
1  OG1 192.168.1.100   15400      6001 /data/og1   P Primary Normal
2  OG2 192.168.1.101   15400      6002 /data/og2   S Primary Normal

确实出现了双主现象。
  当然我们可以通过failover模拟双主现象,例如:在主备正常的情况下,在备库下执行gs_ctl failover故障转移,将当前备库提升为主,此时查看数据库集簇的状态就会发现,两个节点都是主节点。当然failover故障转移是用在,当主库挂掉了,在备库上执行,将备库提升为主,继续向外提供服务,保持业务的持续稳定性。

3)恢复

此时我想要将数据库集簇恢复到一主一备的状态,且og1为主,og2为备,根据恢复基本步骤,登录og2节点,进行如下操作:

gs_ctl stop -D /data/og2 
gs_ctl start -D /data/og2 -M standby
gs_om -t refreshconf

操作完毕之后,查看数据库集簇状态:

[omm@OG2 ~]$ gs_om -t status --detail
[   Cluster State   ]

cluster_state   : Degraded
redistributing  : No
current_az      : AZ_ALL

[  Datanode State   ]

    nodenode_ip         port      instance          state
------------------------------------------------------------------------
1  OG1 192.168.1.100   15400      6001 /data/og1   P Primary Normal
2  OG2 192.168.1.101   15400      6002 /data/og2   S Standby Need repair(WAL)

发现一主一备的关系恢复了,但是OG2出现故障需要恢复,可能是主备不一致导致的问题。

4)修复 Standby Need repair

方法一:重新安装openGauss:
卸载:
(1)以omm用户登录任意主机执行:
gs_uninstall --delete-data
(2)安装openGauss
gs_install -X /opt/software/openGauss/cluster_config.xml --gsinit-parameter="–
locale=en_US.utf8"
其中要求输入数据库密码。
这种方法你估计不喜欢。

方法二:
概述:备份og2节点数据目录下的配置文件,将og2节点的数据库数据目录清空,然后将og1节点的数据目录下的文件拷贝过来,使用备份的配置文件替换拷贝过来的配置文件。
(0)关闭数据库集簇

gs_om -t stop

(1)备份og2节点数据目录下的配置文件

[root@OG2 ~]# mkdir /og2conf
[root@OG2 ~]# chown omm.dbgrp /og2conf
[root@OG2 ~]# su - omm
Last login: Wed May 11 09:49:38 CST 2022 on pts/0
[omm@OG2 ~]$ cp /data/og2/*.conf /og2conf

(2)清空og2节点的数据目录

[omm@OG2 ~]$ rm -rf /data/og2/*

(3)登录og1,将og1节点的数据目录下的所有文件拷贝到og2节点的数据目录下:

[omm@OG1 ~]$ scp -rp /data/og1/* og2:/data/og2

(4)登录og2,替换配置文件

[omm@OG2 ~]$ cp /og2conf/* /data/og2

(5)启动数据库集簇,并检查集簇状态

[omm@OG1 ~]$ gs_om -t start
Starting cluster.
=========================================
[SUCCESS] OG1
2022-05-11 11:23:30.967 627b2c32.1 [unknown] 140707753452480 [unknown] 0 dn_6001_6002 01000  0 [BACKEND] WARNING:  Failed to initialize the memory protect for g_instance.attr.attr_storage.cstore_buffers (1024 Mbytes) or shared memory (2462 Mbytes) is larger.
[SUCCESS] OG2
2022-05-11 11:23:34.410 627b2c36.1 [unknown] 140529291215808 [unknown] 0 dn_6001_6002 01000  0 [BACKEND] WARNING:  Failed to initialize the memory protect for g_instance.attr.attr_storage.cstore_buffers (1024 Mbytes) or shared memory (2462 Mbytes) is larger.
Waiting for check cluster state...
=========================================
Successfully started.
[omm@OG1 ~]$ gs_om -t status --detail
[   Cluster State   ]

cluster_state   : Normal
redistributing  : No
current_az      : AZ_ALL

[  Datanode State   ]

    nodenode_ip         port      instance          state
------------------------------------------------------------------------
1  OG1 192.168.1.100   15400      6001 /data/og1   P Primary Normal
2  OG2 192.168.1.101   15400      6002 /data/og2   S Standby Normal

可以发现,Standby Need repair故障就解决了。

...全文

相关推荐

openGauss数据库集群安装与主备切换实战

内容概要:本文详细介绍了在两台CentOS 7服务器上搭建openGauss数据库集群的步骤,涵盖了环境准备、系统资源配置、用户和组的创建、安装包解压、XML配置文件的修改、预安装脚本执行、数据库集群安装、系统环境检查、备机可读配置、以及主备切换测试等内容。同时,提供了详细的命令示例和注意事项,帮助读者顺利搭建高可用的openGauss集群。 适合人群:具有一定的Linux运维基础和数据库管理经验的技术人员。 使用场景及目标:适用于需要在生产环境中搭建高可用openGauss数据库集群的场景,旨在提升系统的可靠性和稳定性。 阅读建议:本文适合逐步操作跟随文档,边学边做,特别是系统环境的配置和主备切换部分需仔细验证每一环节,确保每一步骤正确无误。

叫个啥网名好呢?

Opengauss在Centos 7.8下一主两备的安装测试.txt

opengauss 在centos7.8下的安装、切换、故障模拟及修复。opengaussg开源1.0版本,支持单AZ一主多备。

lqkitten

openGauss安装指南[源码]

本文详细介绍了在openEuler(ARM架构)操作系统上安装openGauss数据库(一主两备含CM版)的完整步骤。内容涵盖系统版本选择、Python版本配置、系统参数调整(如禁用SELINUX、关闭防火墙、交换内存等)、yum源配置、安装包准备、集群配置文件编写(clusterconfig.xml)、环境初始化(gs_preinstall)、数据库安装(gs_install)以及后续的集群管理操作(包括OM和CM模块的使用)。特别强调了ARM架构下的兼容性注意事项,并提供了主备切换、服务启停等运维命令示例,适合需要部署高可用openGauss集群的技术人员参考。

Tomato

openGauss 发行说明 01.pdf

openGauss 2.0.1版本的发行说明。

Gauss松鼠会

openGauss 技术白皮书 01.pdf

主要介绍openGauss数据库的架构、能力以及主要技术。

Gauss松鼠会
评论 1
收藏 已收藏
分享
返回顶部
如清风一般
Gauss松鼠会 83,546 成员 2,401 内容