MySQL 主从同步搭建完整指南
本文将深入解析 MySQL 主从同步的核心原理,涵盖二进制日志记录、中继日志传输及 SQL 线程执行的完整流程。重点介绍在 MySQL 8.0 环境下,如何正确配置 Master 端的 binlog 与授权账户,以及如何通过参数设置让 Slave 端建立连接并验证同步状态,帮助运维人员快速搭建可靠的数据备份与读写分离架构。
一、MySQL 主从同步原理与前置条件
MySQL 的主从复制(Replication)基于二进制日志(Binary Log)实现。其核心工作原理分为四个关键步骤:
- Master 记录变更:主服务器将所有的写操作和更改数据的操作记录到二进制日志文件(由配置文件中的
log-bin指定)中,这些记录被称为二进制日志事件(binary log events)。 - 数据传输:Master 节点将这些二进制日志文件发送给 Slave 节点。
- I/O 线程接收:Slave 节点的 I/O 线程读取来自 Master 的日志内容,并将其写入本地的中继日志(Relay Log)中。
- SQL 线程执行:Slave 节点的 SQL 线程读取中继日志中的事件,并在本地重新执行,从而完成数据的最终同步存储。
在开始搭建之前,必须确保满足以下基础条件:
- 主从服务器的操作系统版本及系统位数应当保持一致。
- Master 和 Slave 的 MySQL 数据库版本号最好保持一致,以避免兼容性问题。
- 初始化阶段,Master 和 Slave 数据库中的数据必须完全一致。
- Master 必须开启二进制日志功能,且 Master 和 Slave 的
server_id在局域网内必须唯一。
二、Master 主库配置操作
第1步:修改 Master 配置文件以启用 Binlog
目的:允许主服务器生成二进制日志文件,这是同步的前提。
编辑 MySQL 配置文件 my.cnf(或 my.ini),在 [mysqld] 段落下添加以下内容:
[mysqld] # 启用二进制日志,文件名前缀自定义 log-bin=mysql-bin # 服务器ID,局域网内必须唯一 server-id=1
保存后,重启 MySQL 服务使配置生效:
systemctl restart mysql
第2步:创建同步专用账号并授权
目的:创建一个专门用于从库连接主库进行日志拉取的用户,遵循最小权限原则。
登录 MySQL 客户端,执行以下命令:
-- 创建同步用户 'hugh',允许任意主机连接,使用原生密码认证插件 CREATE USER 'hugh'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; -- 授予 REPLICATION SLAVE 权限 GRANT REPLICATION SLAVE ON *.* TO 'hugh'@'%'; -- 刷新权限表 FLUSH PRIVILEGES;
第3步:获取当前二进制日志状态
目的:记录当前的日志文件名和位置点,作为从库同步的起始坐标。
在主库执行以下查询:
SHOW MASTER STATUS;
请仔细记录输出结果中的 File 列值(如 mysql-bin.000006)和 Position 列值(如 856)。如果在此之后有新的大量写入操作,建议锁定表备份数据后再进行操作,或重新获取最新的状态值。
三、Slave 从库配置操作
第4步:配置 Slave 唯一的 Server ID
目的:确保从库在集群中有独立标识,防止 ID 冲突。
编辑从库的配置文件 my.cnf,添加:
[mysqld] # id 必须唯一,不能与 Master 及其他 Slave 重复 server-id=2
保存并重启 MySQL 服务:
systemctl restart mysql
第5步:配置主库连接信息并开始同步
目的:告诉从库如何连接主库,以及从哪里开始读取日志。
登录从库 MySQL 客户端,根据上一步记录的 Master 状态,执行 CHANGE MASTER TO 命令。请将下列 IP、用户名、密码、日志文件名及位置替换为实际环境值:
CHANGE MASTER TO MASTER_HOST='master的IP地址', MASTER_USER='hugh', MASTER_PASSWORD='123456', MASTER_LOG_FILE='binlog.000006', MASTER_LOG_POS=856;
第6步:启动同步线程并验证状态
注意:新版本的 MySQL(8.0+)通常会自动启动 IO 和 SQL 线程,若未自动启动,可能需要执行 START SLAVE;(注意:部分新版本可能改为 START REPLICA;,具体视版本而定,但通常配置完 CHANGE MASTER TO 后即自动关联)。
检查同步状态:
SHOW SLAVE STATUS\G;
查看输出结果中的以下关键字段,两者均显示为 Yes 即代表搭建成功:
Slave_IO_Running: Yes Slave_SQL_Running: Yes
此外,还需关注 Last_IO_Error 和 Last_SQL_Error 是否为空。若有错误,通常会在此处提示具体的连接失败原因或语法错误。
以上就是 MySQL 主从同步配置的详细内容,更多关于 MySQL 高可用架构搭建的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









