MySQL主从复制需主库启用binlog并创建repl用户,从库配置唯一server-id后执行CHANGE MASTER TO连接主库,再START SLAVE启动复制,通过SHOW SLAVE STATUS验证IO和SQL线程运行状态及延迟。
MySQL主从复制依赖主库的二进制日志(binlog),所以第一步是确保主库已启用。编辑主库的 my.cnf(或 my.ini),在 [mysqld] 段添加:
重启MySQL服务生效。接着登录主库,创建专用复制用户并授权:
CREATE USER 'repl'@'%' IDENTIFIED BY 'your_secure_password'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%'; FLUSH PRIVILEGES;
执行 SHOW MASTER STATUS; 记下当前 binlog 文件名和 Position(如 mysql-bin.000003 和 154),后续从库配置要用到。
编辑从库的配置文件,设置唯一 server-id(不能与主库或其他从库重复,例如设为 2),无需开启 binlog(除非该从库还要做级联主库):
重启从库MySQL。然后执行 CHANGE MASTER TO 命令,填入主库地址、端口、复制用户、密码及之前记下的 binlog 文件与位置:
CHANGE MASTER TO MASTER_HOST='192.168.1.10', MASTER_PORT=3306, MASTER_USER='repl', MASTER_PASSWORD='your_secure_password', MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=154;
注意:IP需能互通,防火墙/安全组要放行3306端口。
运行 START SLAVE; 启动复制线程。用 SHOW SLAVE STATUS\G 查看关键字段:
若任一为 No,检查 Last_IO_Error 或 Last_SQL_Error 字段定位问题,常见原因包括网络不通、账号权限不足、主从数据不一致、GTID模式未统一等。
主从搭建只是起点,实际使用中需关注:
不复杂但容易忽略。