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

相关推荐
未济6 天前
linux 配置环境变量
linux
傲世仙尊6 天前
目录即文件-Ext文件系统收尾篇
linux·c语言
虎头金猫6 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
小白男神6 天前
MySQL进阶学习四(存储过程、游标、触发器)
mysql
这个DBA有点耶6 天前
MVCC深入:Read View、版本链与快照读——InnoDB并发控制的内核
数据库·mysql·架构
DBA_G6 天前
从地面到云霄:GBase数据库在民航三大场景的落地实践
数据库
自由能燃气设备6 天前
商用全预混低氮冷凝锅炉免费方案vs付费方案对比+选型避坑指南
大数据·数据库·人工智能
科创致远6 天前
科创致远 ESOP 系统核心效能与实战价值展示
大数据·数据库·人工智能·精益工程
_艾伦 耶格尔.6 天前
进程间通信
linux
AI职业加油站6 天前
AI智能体应用工程师证书:政策红利下的职业新风口
大数据·运维·人工智能·学习·职场发展