• MySQL主从复制、同步、故障排查
  • 发布于 2个月前
  • 532 热度
    0 评论

一.前言

复制,在生物世界中是细胞分裂,繁衍生命的基本法则;在数字世界中,则是数据的同步,保障信息一致性和系统稳定性的关键技术。今天,我们就来揭开数据库复制的神秘面纱,看看这种信息界的"分裂"是如何实现的。


二.主从复制的原理
如何理解主从复制
想象一下,如果你是一个热爱做饭的人,你的菜谱被朋友称赞后,他们都想要一份。你会怎么做?最简单的方法就是复印你的菜谱,然后发给他们。数据库的主从复制也是类似的过程。主数据库(Master)就像是你的原版菜谱,而从数据库(Slave)则是那些复印出来的副本。

主从复制的工作流程
1.Master 记录事务日志(Binary Log)
2.Slave 连接到Master,请求未同步的数据
3.Master 将请求的数据发送给Slave
4.Slave 将接收到的数据写入中继日志(Relay Log)
5.Slave 重放中继日志中的事件,更新自己的数据集
这个过程,就像是你告诉朋友们你更新了菜谱,他们将更新记在自己的笔记本上,然后再去更新自己手头的复印件。

主从复制的实战代码
假设我们有一个数据库,我们要配置MySQL的主从复制。
「Master配置」
[mysqld]
# 开启二进制日志
log-bin=mysql-bin
# 设置服务器ID,确保主从各不相同
server-id=1
「Slave配置」
[mysqld]
# 设置服务器ID,确保主从各不相同
server-id=2
# 开启中继日志
relay-log= /var/lib/mysql/mysql-relay-bin.log
# 指定Master信息(在MySQL客户端操作)
CHANGE MASTER TO
  MASTER_HOST='master_ip',
  MASTER_USER='replica_user',
  MASTER_PASSWORD='replica_password',
  MASTER_LOG_FILE='recorded_log_file_name',
  MASTER_LOG_POS=recorded_log_position;
「启动Slave复制进程」
START SLAVE;
执行完这些操作后,Slave将开始复制Master的数据。

三.GTID和复制一致性
GTID的概念
就像每个人都有唯一的身份证号一样,GTID(Global Transaction Identifier)是用来确保MySQL事务全球唯一的标识。在使用GTID的复制过程中,我们可以确保即便发生故障,复制也能够自动和准确地继续。

如何利用GTID保持一致性
1.每个事务提交时都会生成一个唯一的 GTID
2.GTID 会记录到 Master 的二进制日志中
3.Slave 复制时,会记录已经执行的GTID

4.即使在复制中断后,Slave 也可以根据GTID找到正确的复制位置

GTID复制的配置示例
「Master配置」
[mysqld]
# 开启GTID模式
gtid_mode = ON
enforce_gtid_consistency = ON
「Slave配置」
[mysqld]
# 开启GTID模式
gtid_mode = ON
enforce_gtid_consistency = ON

# 设置Master信息,使用GTID
CHANGE MASTER TO
  MASTER_HOST='master_ip',
  MASTER_USER='replica_user',
  MASTER_PASSWORD='replica_password',
  MASTER_AUTO_POSITION = 1;
「启动GTID复制」
START SLAVE;
这样配置后,复制就会按照GTID来进行,即使中断也能保持数据的一致性。

四.复制的故障排查
常见故障及排查思路
在主从复制的过程中,可能会遇到各种问题,比如网络问题、数据不一致、Slave落后Master太多等。
网络问题:检查网络连通性,查看错误日志。
数据不一致:使用校验工具如pt-table-checksum进行数据校验。
Slave落后过多:检查Slave的IO_THREAD和SQL_THREAD状态,必要时增加Slave资源。
故障排查实战代码
1.查看Slave状态
SHOW SLAVE STATUS\G
2.解决网络问题
如果发现网络问题,可能需要检查网络配置或联系网络管理员。
3.数据校验
pt-table-checksum --host=master_ip --user=root --password=root_pwd
使用Percona Toolkit中的pt-table-checksum可以帮助我们校验数据。图片在这堂课中,我们探索了数据库复制的魔法,从基本的主从复制到高级的GTID复制,再到复杂的故障排查,就像是在数字世界中施展了一场场复制咒语。但记住,与魔法一样,复制也是需要谨慎操作的艺术。掌握这些技能,你就能确保你的数据像生命一样得以延续和繁衍。
用户评论