Linux 下 MySQL 主从同步配置实战指南

Ada
Ada
发布时间:2026-10-15| 5人浏览过
原创

配置 MySQL 主从同步是实现数据冗余、读写分离及灾难恢复的基础手段。本教程基于 Linux 系统,通过创建专用同步账户、调整 mysqld 配置文件以开启二进制日志、锁定主库获取同步位点,并在从库指定主库信息进行连接验证。当从库状态显示两个关键线程均运行正常时,即代表配置成功。

准备工作与概念说明

数据库同步主要分为“主从同步”(Master-Slave,单向写入复制)和“主主同步”(Master-Master,双向互写)。本节仅演示最常用且结构稳定的主从同步方案。假设环境如下:

  • 主数据库 (A):IP 192.168.1.134,负责接收写操作并记录日志。
  • 从数据库 (B):IP 192.168.1.138,通过读取主库日志回放数据以保持一致。
  • 同步账号:用户名 bravedu,密码 brave123。

第一阶段:主数据库(Master)设置

第1步:创建专用同步用户

目的:确保从库有一个安全的账户用于拉取二进制日志,而非使用 root 等高权限账号。
入口:登录主库 A 的 MySQL 命令行客户端。
操作:授予 replication slave 权限,允许来自特定网段的连接。

grant replication slave on *.* to 'bravedu'@'192.168.1.%' identified by 'brave123';
flush privileges;

第2步:修改 MySQL 配置文件

目的:启用二进制日志功能并设定唯一的服务器 ID,这是同步的核心机制。
入口:编辑主库配置文件 /etc/my.cnf(或安装路径下的 my.ini / mysqld.cnf)。
参数说明:
- server-id:唯一标识符,必须大于 0 且不能与从库重复。
- log-bin:开启二进制日志,路径需根据实际安装目录调整。
- binlog-do-db:指定需要同步的数据库名(可选,若省略则同步所有非忽略库)。
- binlog-ignore-db:指定不同步的系统库(如 mysql)。

[mysqld]
server-id = 1
log-bin=/www/mysql/binlog/binlog 
binlog-do-db = dbname 
binlog-ignore-db=mysql

动作:修改保存后,重启 MySQL 服务使配置生效。

第3步:锁定主库并获取同步位点

目的:在不停服的情况下获取一个时间点上的数据快照基线(File 和 Position)。
风险提醒:FLUSH TABLES WITH READ LOCK 会锁定所有表的写操作,生产环境请在低峰期操作。
操作顺序:

  1. 加锁:mysql> FLUSH TABLES WITH READ LOCK;
  2. 查看状态:mysql> SHOW MASTER STATUS\G;

可观察结果:记录 File 列的值(例如 mysql-bin.000001)和 Position 列的值(例如 106)。这两个值将用于配置从库。

注意:在执行完下一步(解锁)之前,保持当前会话打开或记下数值。若在查询过程中有其他操作导致日志滚动,数值会发生变化。
  1. 解锁:mysql> UNLOCK TABLES;

第二阶段:从数据库(Slave)设置

第4步:创建同步用户(如需)

目的:部分严格的安全规范要求从库本地也建立对应的只读/复制用户。
操作:在主库已执行的基础上,若需独立管理,可在从库 B 执行相同授权语句:

grant replication slave on *.* to 'bravedu'@'192.168.1.%' identified by 'brave123';
flush privileges;

第5步:修改从库配置文件

目的:避免与主库 ID 冲突,并配置相应的日志策略。
入口:编辑从库配置文件 /etc/my.cnf。
操作:设置不同的 server-id 并开启日志。

[mysqld]
server-id = 2 
log-bin=/www/mysql/binlog/binlog 
binlog-do-db = dbname 
binlog-ignore-db=mysql,information_schema

动作:保存文件并重启 MySQL 服务。

第6步:指定主从连接关系

目的:告诉从库如何找到主库,以及从哪个日志位点开始同步。
入口:登录从库 B 的 MySQL 客户端。
重要参数:
- master_host:主库 IP(192.168.1.134)。
- master_log_file & master_log_pos:必须在第一步中记录的 File 和 Position 值。

  1. 停止现有同步**(如有)**:STOP SLAVE;
  2. 配置连接**:
    CHANGE MASTER TO 
    master_host='192.168.1.134', 
    master_user='bravedu', 
    master_password='brave123', 
    master_log_file='mysql-bin.000001', 
    master_log_pos=106;
  3. 启动同步****:START SLAVE;

第三阶段:验证与排错

第7步:检查同步状态

目的:确认主从链路是否通畅,数据是否在自动流转。
操作:在从库执行以下命令:

SHOW SLAVE STATUS\G;

核心指标:关注返回结果中的两行:
- Slave_IO_Running: Yes(负责读取主库日志)
- Slave_SQL_Running: Yes(负责在本地回放 SQL)

若这两项均为 Yes,且 Last_Error 为空,则说明配置成功。若出现 No,通常需检查网络连通性、权限是否正确,或检查主库提供的日志位置是否过期/错误。

简要总结

MySQL 主从同步依赖于二进制的日志传输与回放机制。配置的关键在于:主库开启 binlog 并分配唯一 ID;从库配置正确的连接参数指向主库的日志位点;最后通过 IO 和 SQL 线程的状态来验证健康度。正确实施上述步骤后,即可实现数据库的实时热备。

以上就是 Linux 下指定 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 算法库。