使用 Online unsafe recovery 恢复 v6.2 同城应急集群
作者: cchouqiang 原文来源:https://tidb.net/blog/75f7933e
环境准备
安装介质
tikv 6.2.0 release
https://download.pingcap.org/tidb-community-server-v6.2.0-linux-amd64.tar.gz
背景
对于 rawkv 来说,无法使用 binlog 进行数据同步,但可以采用 raft 协议进行数据同步。主集群 tikv 的角色为 voter,提供读写服务;同城应急的 tikv 角色为 learner,通过 raft 协议同步主集群数据,提供灾备能力。当主集群出现问题,可以将灾备节点的 learner 角色升级为 voter 角色,对外提供服务。
若整个主生产出现问题,使用 online unsafe recovery 恢复同城应急集群,让同城应急集群对外提供服务。
集群拓扑
主生产拓扑为:
同城应急拓扑为:
整个集群拓扑如下图所示:
同城应急的节点为:172.16.11.113:2379、172.16.11.120:20160
其余节点均为主生产的节点。
online unsafe recovery 恢复步骤
1、模拟主生产故障,整个集群 down
使用 tiup cluster stop <cluster-name> 命令,将整个集群关闭。
2、启动同城应急的 pd
由于 pd 高可用限制,必须启动多数派时,才能正常启动 pd 对外服务。
此时无法使用 tiup 命令将单个 pd 启动。
3、使用force-new-cluster
参数强制启动一个 pd 节点
若想单独启动一个 pd,需要修改 pd 的启动脚本。
在同城应急的 pd 部署目录,修改 run_pd.sh 脚本,添加 force-new-cluster: true
4、启动同城应急的 pd
手动启动一个 pd 节点:
$ nohup sh run_pd.sh &
5、启动同城应急的 tikv
使用 tiup cluster start <cluster-name> -N xx.xx.xx.xx:20160 命令启动某个 tikv 节点
启动 172.16.11.120:20160 节点:
使用 tiup cluster display <cluster-name> 命令查看集群状态:
此时同城应急的 pd 和 tikv 均启动
6、进行 online unsafe recovery
使用 online unsafe recovery 将同城应急的 tikv learner 角色提升为 voter 角色。
online unsafe recovery 文档如下:
https://docs.pingcap.com/zh/tidb/dev/online-unsafe-recovery
7、使用 show 命令查看恢复进度
使用如下命令进行查看 online unsafe recovery 恢复进度:
当出现“unsafe recovery finished”时,恢复完成。
8、对 pd 和 tikv 进行扩缩容操作
此时 tikv 变为 Tombstone,可以使用 tiup cluster prune tidb-test 命令删除 Tombstone 状态的节点。
并针对实际情况进行扩缩容操作。
总结和思考
灵活运用 raft 协议来提供 rawkv 的容灾能力;
在 v5 版本下可以使用 Learner recover,但在 v6 版本下,Learner recover 则无法使用,因为 v5 和 v6 的 raft engine 不同;
使用 Online Unsafe Recovery 功能来实现 learner 角色升级成 voter 角色,在主集群出现问题的情况下,同城应急集群可以对外提供服务。
版权声明: 本文为 InfoQ 作者【TiDB 社区干货传送门】的原创文章。
原文链接:【http://xie.infoq.cn/article/36c3ae573e96d9609d11d55e4】。文章转载请联系作者。
评论