如何搭建mysql主从复制_基础配置流程

来源:这里教程网 时间:2026-02-28 20:37:45 作者:

主库配置:开启二进制日志并创建复制用户

MySQL主从复制依赖主库的二进制日志(binlog),所以第一步是确保主库已启用。编辑主库的 my.cnf(或 my.ini),在 [mysqld] 段添加:

server-id = 1(必须唯一,非0整数) log-bin = mysql-bin(启用binlog,文件前缀可自定义) (可选)binlog-format = ROW(推荐,语句级可能在某些函数或非确定操作下不一致)

重启MySQL服务生效。接着登录主库,创建专用复制用户并授权:

CREATE USER 'repl'@'%' IDENTIFIED BY 'your_secure_password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;

执行 SHOW MASTER STATUS; 记下当前 binlog 文件名和 Position(如 mysql-bin.000003154),后续从库配置要用到。

从库配置:指定server-id并连接主库

编辑从库的配置文件,设置唯一 server-id(不能与主库或其他从库重复,例如设为 2),无需开启 binlog(除非该从库还要做级联主库):

server-id = 2 (可选)read_only = ON(防止误写,仅对非super用户生效)

重启从库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 查看关键字段:

Slave_IO_Running: Yes(IO线程正常拉取日志) Slave_SQL_Running: Yes(SQL线程正常回放日志) Seconds_Behind_Master: 0(理想值,表示无延迟;若为 NULL 表示出错)

若任一为 No,检查 Last_IO_ErrorLast_SQL_Error 字段定位问题,常见原因包括网络不通、账号权限不足、主从数据不一致、GTID模式未统一等。

基础注意事项与建议

主从搭建只是起点,实际使用中需关注:

主从数据一致性不是自动保障的,建议定期用 pt-table-checksum 工具校验 避免在从库写入数据(即使 read_only=ON 也不能完全杜绝 super 用户误操作) 主库 crash 后,若未启用半同步复制,可能丢失部分未传到从库的 binlog 生产环境建议开启 relay_log_recovery=ON,防止从库异常重启后 relay log 损坏

不复杂但容易忽略。

相关推荐