KingbaseES V8R6集群运维案例之---sys_rewind应用分析

?案例说明:
是用于在数据库的时间线分叉以后,同步一个数据库 和同一数据库另一份拷贝的工具 。一种典型的场景是在失效后让一个旧的主库重新上线,同时作为一个备库连接新的主库 。
成功回放后,目标数据目录的状态类似于源数据目录的基本备份 。与进行新的基本备份或使用rsync等工具不同,不需要比较或复制数据库中未更改的数据块 。仅复制现有数据文件中更改的块;所有其他文件(包括新的数据文件、配置文件和WAL段)都将被完整复制 。因此,当数据库很大并且数据库之间只有一小部分块不同时,倒带()操作比其他方法要快得多 。
适用版本: V8R6
案例环境:
[kingbase@node101 bin]$ ./repmgr cluster showID | Name| Role| Status| Upstream | Location | Priority | Timeline | Connection string----+---------+---------+-----------+----------+----------+----------+----------+----------------------------------------------------------------------------------------------------------------------------------------------------1| node101 | primary | * running || default| 100| 27| host=192.168.1.101 user=system dbname=esrep port=54321 connect_timeout=10 keepalives=1 keepalives_idle=10 keepalives_interval=1 keepalives_count=32| node102 | standby |running | node101| default| 100|27| host=192.168.1.102 user=system dbname=esrep port=54321 connect_timeout=10 keepalives=1 keepalives_idle=10 keepalives_interval=1 keepalives_count=3
一、主备集群切换“双主”故障
[kingbase@node102 bin]$ ./repmgr cluster showID | Name| Role| Status| Upstream | Location | Priority | Timeline | Connection string----+---------+---------+-----------+----------+----------+----------+----------+----------------------------------------------------------------------------------------------------------------------------------------------------1| node101 | primary | ! running || default| 100| 29| host=192.168.1.101 user=system dbname=esrep port=54321 connect_timeout=10 keepalives=1 keepalives_idle=10 keepalives_interval=1 keepalives_count=32| node102 | primary | * running || default| 100| 28| host=192.168.1.102 user=system dbname=esrep port=54321 connect_timeout=10 keepalives=1 keepalives_idle=10 keepalives_interval=1 keepalives_count=3
=如上所示,在集群出现切换后,原备库切换为新主库;原主库被人为作为主库启动,导致集群出现“双主”的环境 。=
二、双主故障的处理
1、如果原主库有新的数据写入,需通过业务数据判断,新主和原主那个节点上的业务数据最新,确定为主库 。
2、可以通过读取控制文件,判断那个节点的事务最新(、、xid等),确定主库 。
3、确定主库后,将另外的节点作为备库处理 。

KingbaseES V8R6集群运维案例之---sys_rewind应用分析

文章插图
4、可以通过clone或方式将创建备库,加入到集群 。
5、如果数据库数据量比较大,但新旧主库之间数据量变化差异比较小,可以考虑适用方式创建备库 。
三、操作步骤1、关闭原主库(目标库)数据库服务 。(如果有条件,可以先做一个备份)
[kingbase@node101 bin]$ ./sys_ctl stop -D /data/kingbase/r6ha/data/waiting for server to shut down.... doneserver stopped
2、查看和配置相关配置参数
3、执行:
源库: 新主库目标库: 原主库(目标库的数据将被源库数据覆盖)sys_rewind命令在目标库上执行,在执行sys_rewind之前需要关闭目标库数据库服务(建议:关库后对数据库做物理冷备 。) 。
[kingbase@node101 bin]$ ./sys_rewind --target-data /data/kingbase/r6ha/data--source-server='host=192.168.1.102 port=54321 user=system dbname=test' –debug
4、执行过程分析
1) 读取目标和源库控制文件对比、等