MySQL 管理复制拓扑【MySQL第四课】

MySQL 管理复制拓扑

本章主要讲复制故障转移、复制内部线程、复制监控手段,还有复制故障排查。

一、故障转移(重点)

主库故障之后,要挑选一个数据最新的从库升级成为新主库。

传统日志坐标方式:需要人工查找 binlog 文件和偏移坐标,操作麻烦,循环拓扑场景下很容易出错。

GTID 方式:故障转移更简单,直 接执行CHANGE MASTER TO,不用手动找日志位置,多主、循环拓扑也很好处理。

二、复制内部线程(重点)

1.主库 Binlog 转储线程(Dump 线程):

每连接一个从库,主库就生成一个 dump 线程,把二进制日志事件发送给从库。GTID 自动定位模式下显示为 Binlog Dump GTID。

2.从属服务器线程:

I/O 线程:连接主库,接收主库传来的 binlog,写入本地中继日志。

SQL 线程:读取中继日志,把事件在本机执行,还原数据变更。

3.从库线程(单双线程):

单线程从库:默认模式,只有 1 个 SQL 线程,串行执行中继日志里的事务,回放速度慢,容易产生复制延迟。

多线程(并行复制)从库:配置slave_parallel_workers开启,生成多个工作线程,可并发回放事务,加快同步速度。支持按库、逻辑时钟两种并行策略,也可以配置参数保证事务顺序。

4.并行复制(多线程复制 MTS)

默认从库是单线程执行中继日志。开启slave_parallel_workers,就会生成多个工作线程并发回放事务,提升从库同步速度。

有两种并行策略:按数据库并行、LOGICAL_CLOCK基于提交时间戳并行。还可以配置参数保证事务提交顺序。

5.控制和重置从属服务器

控制从库:可以整体启停复制START SLAVE、STOP SLAVE;也可以单独控制 I/O、SQL 线程。还支持START SLAVE UNTIL,让复制执行到指定日志 / GTID 就自动停下,方便故障处理。

重置从库:执行RESET SLAVE,清除从库保存的主库连接、日志坐标等复制信息,断开和旧主库关联,用来重新配置复制环境。

三、复制监控(重点)

核心命令SHOW SLAVE STATUS,是监控复制最主要手段。

1.关键字段:Slave_IO_Running、Slave_SQL_Running,两个都为 Yes 代表复制正常。

2.通过中继日志坐标、主库日志坐标,可以判断复制延迟。Seconds_Behind_Master用来查看从库同步延迟秒数。

3.Last_IO_Error、Last_SQL_Error可以查看 I/O、SQL 线程报错信息。

也可以通过performance_schema里复制相关表查看复制状态。

四、复制故障排查

1.先查看线程状态:show processlist观察 dump 线程、I/O 线程、SQL 线程运行情况。

2.看报错信息:读取错误日志,读取show slave status中的错误字段,定位是网络、权限、数据冲突还是配置问题。

3.常见故障:I/O 线程异常大多是网络、账号权限、server‑id 冲突;SQL 线程报错大多是数据不一致,从库数据被人为修改、主键冲突等。

4.排查时要确认所有实例server‑id互不相同,检查从库是否被手动修改过数据。

五、次要内容

重置从库RESET SLAVE相关操作,START SLAVE UNTIL条件停止复制属于实操细节。

整体:复制出问题优先看线程状态、报错信息;GTID 可以极大简化故障转移工作;开启并行复制可以缓解从库回放慢、复制延迟。

相关推荐
ACP广源盛139246256734 分钟前
M6/M5 Pro Mac mini 端侧 AI 新形态@ACP#GSV5800 Serdes 长距离视频传输在 AI 服务中的机会与落地场景
大数据·网络·数据库·人工智能·嵌入式硬件·macos·音视频
cloudfantasy39 分钟前
docker直接二进制安装,非编译。KylinV10SP3 aarch64有效
运维·docker
新时代牛马1 小时前
Linux 驱动中断与定时完整篇:从 request_threaded_irq 到hrtimer 选型与排障
linux·运维·服务器
考虑考虑2 小时前
nginx打印请求日志
运维·后端·nginx
倔强的石头_2 小时前
事务边界与批量写入:避免长事务、锁等待和日志压力
数据库
努力努力再努力wz2 小时前
【Redis入门系列】从 KEYS 到 SCAN:渐进式遍历、Cursor 与位反转原理
数据库·redis·缓存
坐吃山猪3 小时前
【多线程】Lock与Condition
大数据·数据库
数字补给站3 小时前
Windows 10 + Hyper-V + Terraform + cloud-init:批量产出 3 台 Ubuntu 的实践笔记
运维·ai编程
Lightpwd3 小时前
Spring Boot 多数据源落地:AbstractRoutingDataSource + 注解切面(附源码)
数据库·后端
分支预测失败3 小时前
RISC-V 核间中断 IPI 实战:从 MSIP 寄存器到 IMSIC 消息投递
linux·后端