写点什么

使用 Online unsafe recovery 恢复 v6.2 同城应急集群

  • 2022-11-04
    北京
  • 本文字数:1379 字

    阅读完需:约 5 分钟

作者: 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 恢复同城应急集群,让同城应急集群对外提供服务。

集群拓扑

主生产拓扑为:


   2个pd节点
5个tikv节点(5个voter副本)
复制代码


同城应急拓扑为:


   1个pd节点
1个tikv节点(1个learner副本)
复制代码


整个集群拓扑如下图所示:



同城应急的节点为: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


[cdacs@centos76_vm ~]$ tiup ctl:v6.2.0 pd -u http://172.16.11.113:2379 unsafe remove-failed-stores 1,2,6,9,12Starting component `ctl`: /home/cdacs/.tiup/components/ctl/v6.2.0/ctl pd -u http://172.16.11.113:2379 unsafe remove-failed-stores 1,2,6,9,12Success![cdacs@centos76_vm ~]$[cdacs@centos76_vm ~]$ tiup ctl:v6.2.0 pd -u http://172.16.11.113:2379 unsafe remove-failed-stores show
复制代码


7、使用 show 命令查看恢复进度

使用如下命令进行查看 online unsafe recovery 恢复进度:


[cdacs@centos76_vm ~]$ tiup ctl:v6.2.0 pd -u http://172.16.11.113:2379 unsafe remove-failed-stores show
复制代码




当出现“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 角色,在主集群出现问题的情况下,同城应急集群可以对外提供服务。


发布于: 刚刚阅读数: 3
用户头像

TiDB 社区官网:https://tidb.net/ 2021-12-15 加入

TiDB 社区干货传送门是由 TiDB 社区中布道师组委会自发组织的 TiDB 社区优质内容对外宣布的栏目,旨在加深 TiDBer 之间的交流和学习。一起构建有爱、互助、共创共建的 TiDB 社区 https://tidb.net/

评论

发布
暂无评论
使用Online unsafe recovery恢复v6.2同城应急集群_实践案例_TiDB 社区干货传送门_InfoQ写作社区