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

14次阅读

mysql主从复制需主库启用binlog并创建repl用户,从库配置唯一server-id后执行CHANGE MASTER TO连接主库,再START SLAVE启动复制,通过SHOW SLAVE STATUS验证IO和SQL线程运行状态及延迟。

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

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

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 STATUSG 查看关键字段:

  • 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 损坏

不复杂但容易忽略。

text=ZqhQzanResources