MySQL通过主从复制实现灾备是一种常见且高效的方式。它能将主库的数据实时同步到一个或多个从库,一旦主库出现故障,可快速切换到从库继续提供服务,保障业务连续性。下面介绍具体的配置方法和关键注意事项。
1. 确认主从服务器环境
灾备的基础是搭建主从复制架构。需要准备两台MySQL服务器:一台作为主库(Master),另一台作为从库(Slave)。
确保以下条件满足:
主从服务器使用相同或兼容的MySQL版本 网络互通,从库能访问主库的3306端口 主库开启二进制日志(binlog),这是复制的核心2. 配置主库(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 'repl_password';GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;
记录当前主库的binlog位置,用于从库初始化:
SHOW MASTER STATUS;记下File和Position值,后续会用到。
3. 配置从库(Slave)
修改从库的配置文件:
[mysqld]server-id=2
relay-log=relay-bin
log-slave-updates=1
read-only=1
重启从库MySQL服务。导入主库当前数据(建议使用mysqldump):
mysqldump -u root -p --all-databases --master-data=2 > backup.sql将备份文件导入从库:
mysql -u root -p在从库执行CHANGE MASTER命令,连接主库:
CHANGE MASTER TOMASTER_HOST='主库IP',
MASTER_USER='repl',
MASTER_PASSWORD='repl_password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=154;
START SLAVE;
其中MASTER_LOG_FILE和MASTER_LOG_POS使用之前SHOW MASTER STATUS的结果。
4. 验证复制状态与监控
查看从库复制是否正常运行:
SHOW SLAVE STATUS\G重点关注以下字段:
Slave_IO_Running: 应为Yes,表示IO线程正常拉取日志 Slave_SQL_Running: 应为Yes,表示SQL线程正常应用日志 Seconds_Behind_Master: 显示延迟秒数,应接近0定期检查该状态,确保灾备链路稳定。
当主库发生故障时,可手动将从库提升为主库(执行STOP SLAVE; RESET SLAVE ALL;),并重新配置应用连接。也可结合MHA、Orchestrator等工具实现自动故障转移。
基本上就这些。关键是保证网络稳定、权限正确、数据一致,并做好定期演练。不复杂但容易忽略细节。
