黄东旭解析 TiDB 的核心优势
598
2023-11-24
操作背景:最近手头有个系统,刚做完灾备建设及数据同步(文章链接在这 ),需要进行灾备切换演练,验证灾备库建设是否符合预期。需要做相关测试并准备操作手册,供日后切换演练及主备切换使用。
环境准备:需要分别部署一主一备两套tidb集群,并搭建TiDB Binlog用于主备集群间数据同步,可以参考前一篇文章:基于TiDB Binlog架构的主备集群部署及数据同步操作手册
环境准备完成后,就可以开始主备切换操作了。
停止业务程序,确认业务不再有数据库写入操作。之后查询Drainer status 接口,如果返回 "Synced": true 表示主从同步完成。
curl http://10.3.65.141:8249/status {"PumpPos":{"10.3.65.141:8250":440717746593595393},"Synced":true,"LastTS":440717747379765249,"TsMap":""}
编辑配置文件:
[tidb@localhost tidb-community-toolkit-v6.5.1-linux-arm64]$ vim sync.toml ######################### Global config ######################### check-thread-count = 4 export-fix-sql = true check-struct-only = false ######################### Datasource config ######################### [data-sources] [data-sources.tidb1] host = "10.3.65.141" port = 4000 user = "root" password = "" [data-sources.tidb2] host = "10.3.65.142" port = 4000 user = "root" password = "" ######################### Task config ######################### [task] output-dir = "./output" source-instances = ["tidb1"] target-instance = "tidb2" target-check-tables = ["test.t1","test.t2","test.t3"]运行sync-diff,校验上下游数据是否一致:
[tidb@localhost tidb-community-toolkit-v6.5.1-linux-arm64]$ ./sync_diff_inspector --config=sync.toml
将业务连接的负载均衡后端地址设置为灾备集群 TiDB 地址
主库的数据同步链路">
登录灾备库grafana页面,查看QPS、connection count等指标,是否符合预期,相关日志是否正常输出。
整个切换过程并不是特别复杂,但需要注意以下几点:
1、查看drainer同步TSO时,不只是通过tidb_binlog.checkpoint表查看,还可以查看drainer日志中write save point对应的TS:["write save point"] [ts=440739573139243009]或登录数据库,执行show master status;,查看Position列对应的TSO:
2、将灾备库数据全量备份,并不是必做选项,只是考虑到如果主库已经故障,业务切换到灾备库的情况下,将数据全量备份以防出现灾备库也故障等极端情况。实际操作过程中,可根据实际情况决定是否需要全量备份。
3、搭建灾备-->主的drainer同步链路时,需注意initial-commit-ts参数只可在新建的时候指定,如果该参数设置有误或需要调整,只能重新部署。
灾备切换需要注意的有两点:
1)确保切换前主备数据一致,业务切换到灾备库后,可正常运行。
2)业务切换至灾备库后,增量数据可以在主库恢复后,正常同步至主库,不会有数据丢失。
后续业务回切至主库的操作步骤,与业务切换至备库操作过程一致,按步骤依次进行操作即可。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。