内容提要
本文介绍MySQL主从复制配置:主节点启用log-bin并设server-id=1,用mysqldump导出数据同步到从节点;创建复制用户并授权,查看master状态获取日志文件与位置;从节点设server-id=2,导入数据后执行change master指向主节点,启动slave并查看状态;还给出停止复制、reset slave all及reset master等命令。
延伸解读
配置前的数据一致性准备
文章强调先用 mysqldump 导出主节点所有表并同步到从节点,再导入数据,这是保证主从初始数据一致的关键步骤。若跳过或顺序错误,从节点可能因数据缺失或冲突导致复制失败。同时,导出后需记录主节点二进制日志文件名和位置,供后续 change master 使用,否则从节点无法准确接续复制。
复制用户权限的最小化
文中创建复制用户时仅授予 replication slave 和 replication client 权限,并限定从节点 IP 访问,这符合最小权限原则。实际配置中应避免直接使用 root 或授予过多权限,以降低安全风险。授权后执行 flush privileges 使权限生效,是确保从节点能正常连接主节点拉取日志的必要操作。
server-id 与日志文件名的易错点
主节点设 server-id=1、从节点设 server-id=2,两者必须不同,否则复制会因标识冲突而异常。change master 中的 MASTER_LOG_FILE 和 MASTER_LOG_POS 需替换为主节点 show master status 的实际值,文中示例使用了占位符,直接照抄会导致复制无法启动。配置后应通过 show slave status 检查 IO 和 SQL 线程状态。
重置命令的适用场景
文章给出 stop slave、reset slave all 和 reset master 等命令。reset slave all 用于清除从节点复制配置,show slave status 返回空即表示已重置;reset master 则会删除主节点所有二进制日志并重置日志索引,操作前需确认无其他从节点依赖这些日志,否则可能破坏现有复制链路,应谨慎使用。
Q&A
MySQL主从复制配置中,主节点需要设置哪些参数?
主节点需要启用log-bin并设置server-id=1。
如何将主节点的数据同步到从节点?
使用mysqldump导出主节点所有表:mysqldump -uroot -p密码 -A > /tmp/out.sql,然后通过scp将out.sql复制到从节点主机,再在从节点上导入:mysql -uroot -p < out.sql。
在MySQL主从复制中,如何创建复制用户并授权?
在主节点上执行:CREATE USER '用户'@'从节点IP地址' IDENTIFIED BY '密码'; 然后授权:grant replication slave, replication client on *.* to '用户'@'从节点IP地址'; 最后flush privileges;。
如何获取主节点的二进制日志文件名和位置?
在主节点上执行show master status; 命令,输出中的File和Position字段即为日志文件名和位置。
从节点如何配置并启动复制?
从节点需设置server-id=2,然后执行change master to master_host='主节点IP',master_user='主节点的用户',master_password='主节点的用户密码',MASTER_LOG_FILE='日志文件名',MASTER_LOG_POS=日志位置; 接着start slave; 最后用show slave status\G查看状态。
如何停止MySQL主从复制并重置从节点配置?
在从节点上执行stop slave; 停止复制,然后执行reset slave all; 清除所有复制配置,之后show slave status\G将返回空。