关键字:
KingbaseES、集群、容灾切换、人大金仓
1.容灾演练
1.1 目的
容灾演练旨在KingbaseES集群主库发生故障时,备用数据库能够迅速接管业务,确保数据的完整性和服务的连续性。通过演练,我们能验证KinbgaseES集群的配置是否正确,切换过程是否顺利,从而提高KingbaseES集群的系统容灾能力,以确保在真实的灾难环境中能够及时有效地应对。
1.2 计划内主备切换
在KingbaseES集群的运维过程中,为了升级主库服务器、执行维护任务或进行计划内的操作,需要对集群进行主备切换。这种切换时预先安排且可控的,旨在确保在最小影响业务的前提下,安全有效地进行主备角色的切换。下面是计划内容灾演练的推荐操作步骤,如果模拟情况与现场情况有差异,请根据现场实际情况进行调整。
2.1 停止业务
计划内主备切换操作,建议尽量在业务停止写入后进行操作,以减少对业务的影响。
1.2.2 主备切换
主备切换操作,在集群正常运行时,可以待升主的备库上都可以执行。
具体操作如下:
#升主命令需要在kingbase用户下执行: su – kingbase #检查集群是否满足切换条件: repmgr standby switchover –choose #执行备库升主命令: repmgr standby switchover [--force-rewind] [--siblings-follow] |
1.2.3 业务连通性测试
主备切换后,对于业务来说,需要从以下几个步骤来确认业务的联通性:
1.业务配置了VIP或者读写分离的业务连接串,无需做任何改动;
2.如果没有配置VIP或者读写分离的业务连接串,由于主备库服务IP互换了,需要识别所有需要更新的业务连接串,逐一进行业务连接串更新;
3.更新完成后需测试业务的连通性。
1.2.4 业务验证
在业务联通性测试完成后,需要进行业务验证。在新主库上执行一系统的业务读写操作,验证其业务的一致性、连续性和稳定性,确保新主库已完成接管主库的角色。
1.2.5 集群回切
容灾演练后如需要将主备集群重新还原切换前状态,请重读1.2.1~1.2.4的操作。
1.3 计划外主备切换
在KingbaseES集群的运行过程中,由于硬件故障、网络中断、软件错误或者其他不可预见的原因,主数据库可能突然无法正常对外提供服务,此时需要进行计划外的主备切换,这种切换时突发的、不可预见的,并且需要在尽可能端的时间内完成。以确保业务的连续性和数据的完整性。下面是计划外容灾演练的推荐操作步骤,如果模拟情况与现场情况有差异,请根据现场实际情况进行调整。
1.3.1 确认新主状态
集群计划外主备切换属于异常情况,首先需要确认旧备库是否已经升。如果集群旧备库没有升主需要手动升主。具体操作如下:
1.登陆旧备库,查看在集群中的角色
参考命令: sys_controldata -D /home/kingbase/data
[kingbase@node1 bin]$ /home/kingbase/kes/kingbase/bin/sys_controldata -D /home/kingbase/data sys_control version number: 1201 Catalog version number: 202312201 Database system identifier: 7368768981555329093 Database cluster state: in production sys_control last modified: Thu May 16 04:09:02 2024 Latest checkpoint location: 0/26000088 Latest checkpoint's REDO location: 0/26000058 Latest checkpoint's REDO WAL file: 000000010000000000000026 Latest checkpoint's WalTimeLineID: 1 Latest checkpoint's PrevTimeLineID: 1 Latest checkpoint's full_page_writes: on Latest checkpoint's NextXID: 0:1124 Latest checkpoint's NextOID: 24576 Latest checkpoint's NextMultiXactId: 1 Latest checkpoint's NextMultiOffset: 0 Latest checkpoint's oldestXID: 1074 Latest checkpoint's oldestXID's DB: 1 Latest checkpoint's oldestActiveXID: 1124 Latest checkpoint's oldestMultiXid: 1 Latest checkpoint's oldestMulti's DB: 1 Latest checkpoint's oldestCommitTsXid:0 Latest checkpoint's newestCommitTsXid:0 Time of latest checkpoint: Thu May 16 04:09:02 2024 Fake LSN counter for unlogged rels: 0/3E8 Minimum recovery ending location: 0/0 Min recovery ending loc's timeline: 0 Backup start location: 0/0 Backup end location: 0/0 End-of-backup record required: no wal_level setting: replica wal_log_hints setting: on max_connections setting: 100 max_worker_processes setting: 8 max_wal_senders setting: 32 max_prepared_xacts setting: 100 max_locks_per_xact setting: 64 track_commit_timestamp setting: off Maximum data alignment: 8 Database block size: 8192 Blocks per segment of large relation: 131072 WAL block size: 8192 Bytes per WAL segment: 16777216 Maximum length of identifiers: 64 Maximum columns in an index: 32 Maximum size of a TOAST chunk: 1988 Size of a large-object chunk: 2048 Date/time type storage: 64-bit integers Float4 argument passing: by value Float8 argument passing: by value Data page checksum version: 1 Data page checksum device: 0 Mock authentication nonce: 02ec77f9f18df37bfde20467ff3828611d8471e05e0aa9d3f3ec867377f90d27 database mode: 1 auth method mode: 0 |
备注:Database cluster state为in production表示旧备库已经升为主库;如果值为in archive recovery,则表示旧备库没有升为主库,需要手动执行备升主的操作。
2.手动执行备被升主操作
- 如果存在多个备库,需要确认升主的备库
通过业务信息确认新主,在不清楚业务的情况,可以通过查看控制文件信息中进行辅助确认。
- 登陆新主,执行升主操作
参考命令: repmgr standby promote --siblings-follow
1.3.2 业务连接性测试
新主成功升主后,对于业务来说,需要从以下几个步骤来确认业务的联通性:
1.业务配置了VIP或者读写分离的业务连接串,无需做任何改动;
2.如果没有配置VIP或者读写分离的业务连接串,由于主备库服务IP互换了,需要识别所有需要更新的业务连接串,逐一进行业务连接串更新;
3.更新完成后需测试业务的连通性。
1.3.3 原主库重新加入集群
如果原主库故障后,修复成功后,需要重新加入集群,可以以下几种情况:
- 如果在重新加入之前,原主库与新主库没有出现WAL日志丢失的情况,就可以正常进行rejoin操作,以备库的角色重新加入新集群:
参考命令:
#在旧主库执行
repmgr node rejoin -h ${新主库IP} -d esrep -U esrep -p ${新主库port}
- 如果重新加入之前,原主库与新主库出现WAL日志丢失的情况,就只能重新以克隆备库的方式放入新集群:
参考命令:
#在新主库执行
repmgr standby clone -h ${新主库IP} -d esrep -U esrep -p ${新主库port}
1.3.4 集群回切
容灾演练后如需要将主备集群重新还原切换前状态,请参考1.2.1~1.2.4章节的操作。