KES到KES通过KFS实现不停机迁移操作-存量数据迁移

数据库备份

  1. 正常启动源端 KFS,查询数据库中创建的复制槽,并记录数据库中创建好的复制槽名称。查看创建的
    复制槽方法如下:
sql> select slot_name,plugin,database from sys_replication_slots;

在这里插入图片描述
2. 将源端 KFS 离线(offline),源端和目标端 KFS 同时执行 reset 命令,确认中间表、kufl 文件、复制槽
等被删除
3. 创建复制槽和快照,复制槽名称为上面的查询的复制槽名。
使用 ksql 连接数据库,假设数据库名称为 test(注意:此连接不允许关闭):

sql> ksql -d "host=10.10.3.3 user=SYSTEM password=123456 replication=database dbname=test port=54366"

注意: 此处使用了一种特殊的连接数据库方式(逻辑复制 walsender 模式)
• V8R3 和不支持 CSN 的 V8R6 手动创建复制槽生成对应的快照方法

CREATE_REPLICATION_SLOT kingbase_kfs_logical_slot LOGICAL decoderbufs;
slot_name | consistent_point | snapshot_name | output_plugin
-----------+------------------+---------------------+---------------
kingbase_kfs_logical_slot | 0/A705E0C8 | 0000000C-0001EEAF-1 | test_decoding

• 支持 CSN 的 V8R6(从 KingbaseES V008R006C005B0023 版本开始支持)手动创建复制槽生成
对应的快照方法

-- 开启事务
test=# begin transaction;
BEGIN
-- 设置事务隔离级别
test=# set transaction_isolation to "repeatable read";
SET
-- 手动创建复制槽 复制槽名称为 5.1节中记录的复制槽名称并查询快照内部标识
test=# select sys_create_logical_replication_slot('kingbase_kfs_logical_slot',
,'decoderbufs'); select sys_export_snapshot();
sys_create_logical_replication_slot
-------------------------------------
(kingbase_kfs_logical_slot,0/A6F80418)
(1 row)
sys_export_snapshot
---------------------
00000013-00000FB1-1
(1 row)

注意:
• 记录此处的快照名称,此快照名将用于备份。
• 不要关闭事务(不能执行 commit 或 rollback),也不要退出 ksql 连接
• “创建复制槽”和“查询快照内部标识”操作间隔尽可能的短。
• decoderbufs.so 文件路径为:{kes 安装路径}/Server/lib/decoderbufs.so,权限为 664。
4. 备份存量数据
使用 KES 自带的 sys_dump 进行数据库备份。备份源端数据库命令如下:

shell> sys_dump -h 10.10.3.10 -p 54321 -U SYSTEM -W -F c -d TEST --snapshot=00000013-00000FB1-1 -f /home/hes/test.dmp

注意:备份完成后,关闭 ksql 连接(如果此连接不关闭,后面启动源端 KFS 时,KFS 中会报错,导致 KFS 启动失败)。

存量数据迁移
使用 KES 自带的 sys_restore 进行数据库还原。将备份文件恢复至目标数据库如下:

shell> sys_restore -h 10.10.3.10 -p 54321 -U SYSTEM -W -d TEST -f /home/hes/test.dmp

对线上业务系统的影响
• Kingbase flysync 是基于数据库增量日志的同步,本身对线上业务无影响。

增量数据补偿

  1. 源端操作
shell> replicator start offline
shell> fsrepctl -service kes reset -all -y
shell> fsrepctl -service kes online
  1. 目标端操作
    启动目标端 KFS,等待数据追平。
shell> replicator start offline
shell> fsrepctl -service kes reset -all -y
shell> fsrepctl -service kes online
  1. 追平的判断方法
shell> fsrepctl services
Processing services command...
NAME VALUE
---- -----
appliedLastSeqno: 3 //若源端无新数据产生,则源端和目标端相同
appliedLatency : 0.297 //若源端无新数据产生,延迟时间为 0
role : master
serviceName : postgresql
serviceType : local
started : true
state : ONLINE
Finished services command...
  • 11
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值