在 Linux 系统中,如果你想要实现 MySQL 主动同步(即主从同步),通常是指主数据库(Master)将数据变化同步到从数据库(Slave)。这在数据库高可用和数据备份中非常常见。
✅ 一、MySQL 主从同步的基本原理
- 主数据库(Master):负责写操作(INSERT/UPDATE/DELETE)。
- 从数据库(Slave):负责读操作(SELECT)。
- 同步机制:通过二进制日志(Binary Log)实现数据的实时传输。
✅ 二、MySQL 主从同步的实现步骤
1. 主数据库配置
在主数据库中配置二进制日志(Binary Log)和同步用户。
# 主数据库配置
echo "log-bin=mysql-bin" >> /etc/my.cnf
echo "server-id=1" >> /etc/my.cnf
echo "log-bin-index=mysql-bin.index" >> /etc/my.cnf
创建同步用户(允许从数据库连接):
mysql -u root -p
CREATE USER 'sync_user'@'slave_ip' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'sync_user'@'slave_ip';
FLUSH PRIVILEGES;
2. 从数据库配置
在从数据库中配置主库信息:
echo "server-id=2" >> /etc/my.cnf
echo "log-bin=mysql-bin" >> /etc/my.cnf
echo "replicate-do-db=your_database" >> /etc/my.cnf # 仅同步指定数据库
echo "replicate-skip-table=your_table" >> /etc/my.cnf # 仅同步指定表
启动复制:
mysql -u root -p
CHANGE MASTER TO
MASTER_HOST='master_ip',
MASTER_USER='sync_user',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_FILE='mysql-bin.000002';
启动复制线程:
START SLAVE;
✅ 三、验证同步状态
mysql -u root -p
SHOW SLAVE STATUSG
检查输出中的 Slave_IO_Running 和 Slave_SQL_Running 是否为 YES。
✅ 四、常用命令总结
| 命令 | 作用 |
|---|---|
SHOW SLAVE STATUSG |
查看复制状态 |
CHANGE MASTER TO |
设置复制配置 |
START SLAVE |
启动复制线程 |
STOP SLAVE |
停止复制线程 |
FLUSH PRIVILEGES |
重载权限 |
REPLICATION SLAVE |
启用复制功能 |
✅ 五、注意事项
- 确保主从数据库的
server-id不同。 - 确保网络连通性(防火墙、端口开放)。
- 使用
binlog_format=ROW(推荐)或STATEMENT(旧版本)。 - 使用
replicate-do-db和replicate-skip-table限制同步范围。
✅ 六、其他方式(可选)
如果你希望使用 MySQL Replication 的自动化工具(如 mysql-replicate 或 pt-slave),可以参考:
- pt-slave:Percona Toolkit 的从库工具,支持更复杂的配置。
- mysql-replicate:一个轻量级的复制工具。
✅ 七、总结
| 用途 | 命令 |
|---|---|
| 配置主从同步 | CHANGE MASTER TO |
| 启动复制 | START SLAVE |
| 查看状态 | SHOW SLAVE STATUSG |
| 配置主库 | log-bin, server-id 等 |
如你有具体场景(如多主多从、主从切换、监控等),我也可以进一步帮你定制方案。欢迎继续提问!

