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 可以极大简化故障转移工作;开启并行复制可以缓解从库回放慢、复制延迟。

相关推荐
西安景驰电子1 小时前
《PTP精确时间协议系列》第二篇:工程部署、调试与性能优化
运维·服务器·网络·数据库·windows·性能优化
xiaohua10091 小时前
Linux-JVM线程查询
linux·jvm
Aision_2 小时前
代码安全学习手记(二):SCA 软件成分分析原理与 OWASP Dependency-Check 集成实战
运维·人工智能·学习·安全·web安全·网络安全
xrkhy2 小时前
redis-shake的使用windows版本
数据库·windows·redis
yinshuzhineng2 小时前
如何提升生产线自动化水平,降低人工成本?
运维·人工智能·自动化·制造
码云骑士2 小时前
110-多模型热切换-API网关-LiteLLM代理-负载均衡故障转移
运维·python·负载均衡
blueSatchel2 小时前
u-boot启动过程(bootROM到SPL到u-boot)
linux·u-boot
小王C语言2 小时前
MySQL 内置函数:日期函数、字符串函数、数学函数、其他函数
数据库·mysql