MySQL 主从同步搭建完整指南

宋时安
宋时安
发布时间:2026-10-16| 7人浏览过
原创

本文将深入解析 MySQL 主从同步的核心原理,涵盖二进制日志记录、中继日志传输及 SQL 线程执行的完整流程。重点介绍在 MySQL 8.0 环境下,如何正确配置 Master 端的 binlog 与授权账户,以及如何通过参数设置让 Slave 端建立连接并验证同步状态,帮助运维人员快速搭建可靠的数据备份与读写分离架构。

一、MySQL 主从同步原理与前置条件

MySQL 的主从复制(Replication)基于二进制日志(Binary Log)实现。其核心工作原理分为四个关键步骤:

  1. Master 记录变更:主服务器将所有的写操作和更改数据的操作记录到二进制日志文件(由配置文件中的 log-bin指定)中,这些记录被称为二进制日志事件(binary log events)。
  2. 数据传输:Master 节点将这些二进制日志文件发送给 Slave 节点。
  3. I/O 线程接收:Slave 节点的 I/O 线程读取来自 Master 的日志内容,并将其写入本地的中继日志(Relay Log)中。
  4. 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 高可用架构搭建的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。