当前位置:   article > 正文

数据库|基于TiDB Binlog架构的主备集群切换操作手册_tidb主从同步

tidb主从同步

目录

一、具体操作过程

//1、停业务,待drainer追平主、备库数据

//2、使用sync-diff-inspector校验主从库数据是否一致

//3、关停主库到灾备库drainer同步链路后记录当前drainer同步TSO

//4、使用dumpling/BR对灾备库进行数据全量备份(备份期间可继续进行下一步操作)

//5、启动应用并将访问入口切换为灾备集群负载均衡设备

//6、搭建灾备库-->主库的数据同步链路

//7、切换完成,进行简单验证

//注意事项

二、总结与思考


最近手头有个系统,刚做完灾备建设及数据同步文章链接在这 ),需要进行灾备切换演练,验证灾备库建设是否符合预期。需要做相关测试并准备操作手册,供日后切换演练及主备切换使用。

环境准备:需要分别部署一主一备两套tidb集群,并搭建TiDB Binlog用于主备集群间数据同步,可以参考前一篇文章:基于TiDB Binlog架构的主备集群部署及数据同步操作手册  

环境准备完成后,就可以开始主备切换操作了。

一、具体操作过程

//1、停业务,待drainer追平主、备库数据

停止业务程序,确认业务不再有数据库写入操作。之后查询Drainer status 接口,如果返回  "Synced": true 表示主从同步完成。

  1. curl 'http://10.3.65.141:8249/status'
  2. {"PumpPos":{"10.3.65.141:8250":440717746593595393},"Synced":true,"LastTS":440717747379765249,"TsMap":""}

图片

//2、使用sync-diff-inspector校验主从库数据是否一致

编辑配置文件:

  1. [tidb@localhost tidb-community-toolkit-v6.5.1-linux-arm64]$ vim sync.toml
  2. ######################### Global config #########################
  3. check-thread-count = 4
  4. export-fix-sql = true
  5. check-struct-only = false
  6. ######################### Datasource config #########################
  7. [data-sources]
  8. [data-sources.tidb1]
  9.     host = "10.3.65.141"
  10.     port = 4000
  11.     user = "root"
  12.     password = ""
  13. [data-sources.tidb2]
  14.     host = "10.3.65.142"
  15.     port = 4000
  16.     user = "root"
  17.     password = ""
  18. ######################### Task config #########################
  19. [task]
  20.     output-dir = "./output"
  21.     source-instances = ["tidb1"]
  22.     target-instance = "tidb2"
  23.     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

图片

//3、关停主库到灾备库drainer同步链路后记录当前drainer同步TSO

  1. [tidb@localhost ~]$ tiup cluster stop tidb-1 -R drainer
  2. MySQL [(none)]> select * from tidb_binlog.checkpoint;

图片

图片

//4、使用dumpling/BR对灾备库进行数据全量备份(备份期间可继续进行下一步操作)

  1. ./dumpling -u root -P 4000 -h 127.0.0.1 \
  2. --filetype sql \
  3. -t 8 \
  4. -o $dumpdir \
  5.  
  6. ./br backup full \
  7.     --pd "127.0.0.1:2379" \
  8.     --storage "local://$/brbackup" \
  9.     --ratelimit 128 \
  10. --log-file backupfull.log

//5、启动应用并将访问入口切换为灾备集群负载均衡设备

将业务连接的负载均衡后端地址设置为灾备集群 TiDB 地址

//6、搭建灾备库-->主库的数据同步链路

6.1 编辑搭建从灾备机房到主机房的复制链路所需拓扑文件

  1. [tidb@cips1 ~]$ vim scale-out-drainer_bak.yaml
  2.  
  3. drainer_servers:
  4.   - host: 10.3.65.142
  5.     port: 28249
  6.     deploy_dir: /tidb-deploy/drainer-28249
  7.     data_dir: /tidb-data/drainer-28249
  8.     config:
  9.       initial-commit-ts: 440739573139243009(查询上游checkpoint表tso)
  10.       syncer.db-type: "tidb"
  11.       syncer.to.host: "10.3.65.141"
  12.       syncer.to.user: "drainer"
  13.       syncer.to.password: "XXX"
  14.       syncer.to.port: 4000

6.2 扩容灾备库到主库的drainer同步链路

[tidb@cips1 ~]$ tiup cluster scale-out cips ./scale-out-drainer_bak.yaml --user tidb -p

图片

//7、切换完成,进行简单验证

登录灾备库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)业务切换至灾备库后,增量数据可以在主库恢复后,正常同步至主库,不会有数据丢失。

后续业务回切至主库的操作步骤,与业务切换至备库操作过程一致,按步骤依次进行操作即可。

作者:刘昊| 数据库开发工程师

版权声明:本文由神州数码云基地团队整理撰写,若转载请注明出处。

公众号搜索神州数码云基地,后台回复数据库,加入数据库技术交流群。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/373301?site
推荐阅读
相关标签
  

闽ICP备14008679号