暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL5.7主从复制:从入门到精通的运维指南

韩公子的Linux大集市 2025-04-19
301




MySQL主从复制是数据库高可用架构的基础,掌握它的配置和运维指令是每个DBA的必修课。今天我们就来深入剖析MySQL5.7版本下主从复制的核心配置要点,以及日常运维中最实用的指令集。




主库核心配置详解





在my.cnf配置文件中,主库需要特别关注以下几个参数。server-id必须设置为一个唯一值,通常建议使用服务器IP的最后一段作为标识。log_bin必须启用,这是二进制日志的基础,建议设置为绝对路径如/var/log/mysql/mysql-bin.log。binlog_format建议设置为ROW模式,这种模式下数据变更记录最为精确。



binlog_row_image在MySQL5.7中新增,建议设置为FULL以保证完整的行映像记录。sync_binlog参数控制二进制日志同步到磁盘的频率,设置为1可以保证最高安全性但会影响性能。expire_logs_days建议设置为7-14天,自动清理过期的二进制日志避免磁盘空间耗尽。




从库关键配置要点





从库配置同样需要server-id且必须与主库不同。relay_log指定中继日志位置,建议设置为绝对路径。log_slave_updates参数决定从库是否将接收到的变更写入自己的二进制日志,在级联复制场景下需要启用。


read_only参数建议设置为ON,防止从库被意外写入导致数据不一致。slave_parallel_workers是MySQL5.7引入的多线程复制参数,合理设置可以显著提升复制性能。slave_preserve_commit_order在多线程复制时保证事务提交顺序,对于有严格顺序要求的应用建议启用。




主从复制建立全流程





创建复制账号是第一步,在主库执行"CREATE USER 'repl'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON . TO 'repl'@'%';"。获取主库状态使用SHOW MASTER STATUS命令,记录File和Position值。



从库配置使用CHANGE MASTER TO命令,完整语法包含主库地址、账号密码、日志文件和位置等信息。启动复制使用START SLAVE命令,验证状态使用SHOW SLAVE STATUS\G,重点关注Slave_IO_Running和Slave_SQL_Running是否为Yes。




日常运维实用指令集





监控复制延迟使用SHOW SLAVE STATUS中的Seconds_Behind_Master字段。跳过错误可以使用SET GLOBAL sql_slave_skip_counter = 1; START SLAVE; 但需谨慎使用。重置复制流程包括STOP SLAVE; RESET SLAVE ALL; 然后重新配置。


切换主库时需要在新主库执行RESET MASTER,从库重新指向。数据一致性校验可以使用pt-table-checksum工具。复制过滤通过配置replicate-wild-do-table等参数实现,但要注意过滤可能导致数据不一致。


备份恢复时,如果使用mysqldump备份主库,恢复后需要重新配置复制。Xtrabackup工具备份时会自动记录二进制日志位置,恢复后可直接建立复制。定期检查SHOW PROCESSLIST中的复制线程状态是良好的运维习惯。




文章转载自韩公子的Linux大集市,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论