手把手教你配置Mysql主从同步

Mysql配置文件

#每个mysql实例需要不同
server_id=自定义ID

#从库设置为只读库,如果从库被手动写入了数据会停止同步
#注意该配置对root用户无效,应该root用户始终是可读的
read_only=1 

主库操作流程

配置server_id后,查询MASTER STATUS信息给从库用即可,无需多余配置

SHOW MASTER STATUS;

从库操作流程

  1. 检查 server_id 是否生效 是否开启只读

    SHOW VARIABLES LIKE 'server_id';
    SHOW VARIABLES LIKE 'read_only';
  2. 配置同步从 (配置内容来自主库的SHOW MASTER STATUS结果)

    CHANGE MASTER TO MASTER_HOST='host.docker.internal', MASTER_PORT=3001, MASTER_USER='root',MASTER_PASSWORD='root',MASTER_LOG_FILE='mysql-bin.000009',MASTER_LOG_POS=1674;
  3. 启动 slave 服务

    start slave
  4. 查看 slave 服务状态,Slave_IO_Running 和 Slave_SQL_Running 都为 YES 即成功

    show slave status\G;
  5. 如果错误停止 slave 服务后重新来过

    stop slave;

同步错误排查

select * from performance_schema.replication_applier_status_by_worker

注意事项

  • 同步的前提是两个库的数据要一样,否则slave启动是无效的。
  • 如果从库与主库数据曾经一样,但是当前主库有新数据,需要从曾经一样时的MASTER_LOG_FILE点开始,当然前提是你主库的对应的binlog没有被删除。
  • 如果从库被写入数据,主从同步会自动停止; 从库最好配置只读参数read_only,该配置对root用户无效。
  • 要注意Mysql配置文件是否生效,最好是检查server_id,尤其是docker下,要宿主机配置文件会被容器里的Mysql忽略 (可以:chmod 644 /etc/mysql/conf.d/mysqld.cnf)
本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 1

就是有时候备库出问题了,然后错误太多不好弄,数据一致性检查。

3个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!