1. 启用主从复制:在主库上执行SQL命令设置server-id和log-bin,创建复制用户GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' IDENTIFIED BY 'password';
主库配置步骤
编辑my.cnf文件,添加 [mysqld] server-id=1 log-bin=mysql-bin binlog-format=ROW expire_logs_days=7,然后重启MySQL服务。创建同步用户:CREATE USER 'repl'@'%' IDENTIFIED BY 'replpass'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
从库配置步骤
同样编辑my.cnf,设置server-id=2 relay-log=relay-log binlog-format=ROW,重启服务。然后在从库执行CHANGE MASTER TO MASTER_HOST='主库IP', MASTER_USER='repl', MASTER_PASSWORD='replpass', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=154; 接着START SLAVE;
检查同步状态
在从库执行SHOW SLAVE STATUSackslash G; 查看Slave_IO_Running和Slave_SQL_Running是否均为Yes,如果有错误查看Last_Error信息修复。
优化同步性能
主库设置sync_binlog=1 innodb_flush_log_at_trx_commit=1 从库增大relay-log空间,避免数据延迟。监控pt-heartbeat工具检查延迟时间。
常见问题解决
如果同步停止,检查网络、防火墙、GTID模式一致性。数据不一致用pt-table-checksum校验。
Q: 主从同步延迟怎么处理?
A: 增大从库slave_parallel_workers参数,优化慢查询,使用SSD存储。
Q: GTID模式怎么开启?
A: my.cnf加gtid_mode=ON enforce_gtid_consistency=ON,重启后设置。
Q: 忘记MASTER_LOG_POS怎么办?
A: 主库SHOW MASTER STATUS; 获取最新binlog位置。
Q: 多从库怎么设置?
A: 主库一个复制用户,从库分别CHANGE MASTER并START SLAVE。