主从复制通过binlog实现数据同步,主库记录变更到binlog,从库重放日志实现冗余。配置需设置server-id、启用binlog、创建复制用户并执行CHANGE MASTER,最后验证Slave_IO_Running和Slave_SQL_Running状态为Yes,确保数据一致性与高可用。

在 MySQL 中,使用复制(Replication)实现数据冗余是一种常见且高效的高可用方案。通过主从复制,你可以将一台数据库服务器(主库)的数据自动同步到一台或多台从库上,从而实现数据冗余、读写分离和故障恢复能力。
配置主从复制的基本原理
MySQL 复制基于二进制日志(binary log)。主库记录所有数据变更操作到 binlog,从库通过 I/O 线程读取主库的 binlog,并写入自己的中继日志(relay log),再由 SQL 线程重放这些日志,实现数据同步。
主要组件包括:
- 主库(Master):负责处理写操作并生成 binlog
- 从库(Slave):连接主库,接收并执行 binlog 中的操作
- binlog:记录数据更改的日志文件
- server-id:每台 MySQL 实例必须有唯一标识
配置步骤详解
以下是在两台服务器之间配置主从复制的关键步骤。
1. 配置主库(Master)
编辑主库的 my.cnf 或 my.ini 配置文件:
[mysqld] server-id=1 log-bin=mysql-bin binlog-format=ROW expire_logs_days=7
重启 MySQL 服务后,创建用于复制的账号:
CREATE USER 'repl'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%'; FLUSH PRIVILEGES;
查看主库状态,获取当前 binlog 文件名和位置:
SHOW MASTER STATUS;
2. 配置从库(Slave)
修改从库配置文件:
免费 盛世企业网站管理系统(SnSee)系统完全免费使用,无任何功能模块使用限制,在使用过程中如遇到相关问题可以去官方论坛参与讨论。开源 系统Web代码完全开源,在您使用过程中可以根据自已实际情况加以调整或修改,完全可以满足您的需求。强大且灵活 独创的多语言功能,可以直接在后台自由设定语言版本,其语言版本不限数量,可根据自已需要进行任意设置;系统各模块可在后台自由设置及开启;强大且适用的后台管理支
[mysqld] server-id=2 relay-log=mysql-relay-bin log-slave-updates=1 read-only=1
重启从库 MySQL 服务。然后执行 CHANGE MASTER 命令连接主库:
CHANGE MASTER TO MASTER_HOST='主库IP', MASTER_USER='repl', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', -- 来自 SHOW MASTER STATUS MASTER_LOG_POS=154; -- 来自 SHOW MASTER STATUSSTART SLAVE;
3. 验证复制状态
运行以下命令检查从库是否正常同步:
SHOW SLAVE STATUS\G
重点关注两个字段:
- Slave_IO_Running: Yes
- Slave_SQL_Running: Yes
如果都是 Yes,说明复制已正常运行。如果有错误,可根据 Last_Error 字段排查问题。
实现数据冗余的关键建议
为了确保复制真正起到数据冗余的作用,需要注意以下几点:
- 至少部署一个从库,推荐跨物理机或跨可用区部署,避免单点故障
- 定期监控复制延迟(Seconds_Behind_Master)
- 启用 relay_log_recovery 和 sync_binlog 提高可靠性
- 对关键业务可考虑使用半同步复制(semi-sync replication),确保至少一个从库接收到日志
- 定期备份从库数据,避免主库崩溃时丢失恢复手段
基本上就这些。只要正确配置并持续监控,MySQL 主从复制就能有效实现数据冗余,提升系统稳定性和容灾能力。









