# **基于TiDB Binlog架构的主备集群切换操作手册**

作者: Liuhaoao 原文来源: https://tidb.net/blog/dc65ef62

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

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

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

具体操作过程

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

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

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

image.png

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

编辑配置文件:

[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

image.png

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

[tidb@localhost ~]$ tiup cluster stop tidb-1 -R drainer


MySQL [(none)]> select * from tidb_binlog.checkpoint;

image.png

image.png

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

./dumpling   -u root   -P 4000   -h 127.0.0.1 \
--filetype sql \
-t 8 \
-o $dumpdir \
 
./br backup full \
    --pd "127.0.0.1:2379" \
    --storage "local://$/brbackup" \
    --ratelimit 128 \
--log-file backupfull.log

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

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

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

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

[tidb@cips1 ~]$ vim scale-out-drainer_bak.yaml
 
drainer_servers:
  - host: 10.3.65.142
    port: 28249
    deploy_dir: /tidb-deploy/drainer-28249
    data_dir: /tidb-data/drainer-28249
    config:
      initial-commit-ts: 440739573139243009(查询上游checkpoint表tso)
      syncer.db-type: "tidb"
      syncer.to.host: "10.3.65.141"
      syncer.to.user: "drainer"
      syncer.to.password: "XXX"
      syncer.to.port: 4000

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

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

image.png

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:

image.png

2、将灾备库数据全量备份,并不是必做选项,只是考虑到如果主库已经故障,业务切换到灾备库的情况下,将数据全量备份以防出现灾备库也故障等极端情况。实际操作过程中,可根据实际情况决定是否需要全量备份。

3、搭建灾备-->主的drainer同步链路时,需注意initial-commit-ts参数只可在新建的时候指定,如果该参数设置有误或需要调整,只能重新部署。

总结与思考:

灾备切换需要注意的有两点:

1)确保切换前主备数据一致,业务切换到灾备库后,可正常运行。

2)业务切换至灾备库后,增量数据可以在主库恢复后,正常同步至主库,不会有数据丢失。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/43262.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【IDEA】IDEA 中点击Download Source(下载源码)后,下载的源码存储到哪了?

【问】如上图,IDEA 中点击 Download Source(下载源码)后,下载的源码存储到哪了? 【答】 先找到此源码所属 Jar 包在哪;点击 Download Source(下载源码)后,会发现存储 J…

Android Studio Flutter 开发配置

近来比较闲,就研究下Flutter 开发,在此记录下studio 配置过程,时间是2023.7.19 在 Windows 操作系统上安装和配置 Flutter 开发环境 1.首先下载 Flutter SDKhttps://storage.flutter-io.cn/flutter_infra_release/releases/stable/windows/…

静态html引入ucharts并直接使用组件标签

由于官方不能直接使用qiun-vue-ucharts在静态html页面使用。 DIY可视化对此类库进行了改进,把它的包独立打包成一个可以依赖的JS。 首先定义一个核心JS,用于打包生成uchart import qiunVueUcharts from qiun/vue-ucharts;const install (app) > {…

【学习笔记】Unity基础(十)【Unity界面之Scene窗口工具栏】

目录 一 总览二 Scene 视图导航2.1 Orientation 场景视角2.2 场景视角的移动、旋转和缩放2.3 场景对象聚焦 三 对象可见性与场景可见性3.1 对象可见性控件3.2 场景可见性控件3.3 Isolate selected GameObjects 四 Overlays五 Position GameObjects5.1 Transform Tools5.2 Tool …

设计模式与技术场景面试题详解

工厂方法模式 简单工厂模式 工厂方法模式 抽象工厂模式 策略模式 工厂模式策略模式(登录案例) 责任链模式 技术场景 单点登录怎么实现 权限认证是如何实现的 上传数据的安全性你们怎么控制 你负责的项目遇到了哪些棘手的问题?怎么解决的 你们…

部署ELK+Kafka+Filebeat日志收集分析系统

部署ELKKafkaFilebeat日志收集分析系统 文章目录 部署ELKKafkaFilebeat日志收集分析系统一、ELK 简介1、ELK日志分析系统组成2、Elasticsearch(es)3、Logstash4、Kibana5、日志处理步骤 二、Elasticsearch介绍1、Elasticsearch核心概念2、开启分片副本的…

用户管理功能

后端 # 获取用户列表 bp.get("/user/list") def user_list():users UserModel.query.order_by(UserModel.join_time.desc()).all()user_list [user.to_dict() for user in users]return restful.ok(datauser_list)# 用户是否可用 bp.post("/user/active"…

kettle开发-Day40-AI分流之case/switch

前言: 前面我们讲到了很多关于数据流的AI方面的介绍,包括自定义组件和算力提升这块的,今天我们来学习一个关于kettle数据分流处理非常重要的组件Switch / Case 。当我们的数据来源于类似日志、csv文件等半结构化数据时,我们需要在…

Java多线程基础复习

文章目录 多线程1.进程进程属性并发和并行虚拟地址空间 2.线程概念线程的创建方式 3.Thread类常见构造方法和属性线程的状态优先级后台线程线程是否存活start和run 4. 线程的一些基本操作线程中断(interrupted)线程等待joincurrentThread(获取当前线程引用&#xff…

pytest常用执行参数详解

1. 查看pytest所有可用参数 我们可以通过pytest -h来查看所有可用参数。 从图中可以看出,pytest的参数有很多,下面是归纳一些常用的参数: -s:输出调试信息,包括print打印的信息。-v:显示更详细的信息。…

hdu7298 Coin(网络流+按时间拆点)

题目 t(t<10)组样例&#xff0c;每次给n(n<3e3)个人&#xff0c; 第i个人&#xff0c;在任意时刻&#xff0c;都最多只能有ai(1<ai<3e3)个硬币 其中k(k<n)个是小F的朋友&#xff0c;依次用点号的形式给出 初始时&#xff0c;每个人都有一个硬币&#xff0c;…

opencv 图像腐蚀膨胀 erode dilate

#include "iostream" #include "opencv2/opencv.hpp" using namespace std; using namespace cv;int main() {Mat img, dst, dstbin, distancetransform,rel, rel2;img imread("m3.jpg");//转为灰度图cvtColor(img, dst, COLOR_BGR2GRAY);//二…

(css)自定义登录弹窗页面

(css)自定义登录弹窗页面 效果&#xff1a; 代码&#xff1a; <!-- 登录弹窗 --> <el-dialog:visible.sync"dialogVisible"title"用户登录"width"25%"centerclass"custom-dialog":show-close"false":close-on-cli…

动态规划入门第2课,经典DP问题1 --- 线性

动态规划要点 阶段的2个方向&#xff1a;从上到下&#xff1b;从下到上。 动态规划要点 从递归到DP 动态规划要点 两个2个方向 优化的可能性 第1题 合唱队形 N位同学站成一排&#xff0c;音乐老师要请其中的(N-K)位同学出列&#xff0c;使得剩下的K位同学排成合唱队形…

macOS coreAudio 之 AudioQueue 播放本地音频文件

macOS的音频模块使用还是和 iOS有细微差别的。 今天记录是的是 使用 AudioQueue 配合 AudioFile 进行播放macOS 本地音频文件 本文打仓库代码为&#xff1a; JBPlayLocalMusicFile.m CoreAudio 作为Apple音频系统中音频库的集合&#xff0c;今天需要使用到的库为&#xff1a…

Spring Cloud Gateway - 新一代微服务API网关

Spring Cloud Gateway - 新一代微服务API网关 文章目录 Spring Cloud Gateway - 新一代微服务API网关1.网关介绍2.Spring Cloud Gateway介绍3.Spring Cloud Gateway的特性4.Spring Cloud Gateway的三大核心概念5.Gateway工作流程6.Gateway核心配置7.动态路由8.Predicate自定义P…

【腾讯云 Cloud Studio 实战训练营】使用Cloud Studio制作蛋仔派对兑换码工具

目录 &#x1f373;前言&#x1f373;实验介绍&#x1f373;产品介绍&#x1f373;抓包分析&#x1f603;登录分析&#x1f603;&#x1f603;第一步&#xff0c;获取验证码&#x1f603;&#x1f603;第二步&#xff0c;保存验证码&#x1f603;&#x1f603;第三步&#xff0…

山西电力市场日前价格预测【2023-07-24】

日前价格预测 预测明日&#xff08;2023-07-24&#xff09;山西电力市场全天平均日前电价为338.25元/MWh。其中&#xff0c;最高日前电价为377.59元/MWh&#xff0c;预计出现在20: 30。最低日前电价为283.56元/MWh&#xff0c;预计出现在13: 30。 价差方向预测 1&#xff1a;实…

LiveNVR监控流媒体Onvif/RTSP功能-支持无人机、IPC等设备RTMP推流转码分发H5无插件播放也支持GB28181输出

LiveNVR支持无人机、IPC等设备RTMP推流转码分发H5无插件播放也支持GB28181输出 1、无人机推流转国标2、获取RTMP推流地址2.1、RTMP推流地址格式2.2、推流地址示例 2、设备RTMP推流3、配置拉转RTMP3.1、直播流地址格式3.2、直播流地地址示例3.3、通道配置直播流地址 4、配置级联…

精准测试之分布式调用链底层逻辑

目录 前言&#xff1a; ⼀、分布式调⽤链系统概述 分布式架构所带来的问题 分布式链路监控的作用 ⼆、调用链系统的演进 链路监控系统列表 三、调用链系统的底层实现逻辑 调用链系统的本质 调用链基本元素 事件捕捉 事件串联 事件的开始与结束 上传 四、Span 内容…
最新文章