手把手教你配置Mysql主从同步
Mysql配置文件
#每个mysql实例需要不同
server_id=自定义ID
#从库设置为只读库,如果从库被手动写入了数据会停止同步
#注意该配置对root用户无效,应该root用户始终是可读的
read_only=1
主库操作流程
配置server_id后,查询MASTER STATUS信息给从库用即可,无需多余配置
SHOW MASTER STATUS;
从库操作流程
检查 server_id 是否生效 是否开启只读
SHOW VARIABLES LIKE 'server_id'; SHOW VARIABLES LIKE 'read_only';
配置同步从 (配置内容来自主库的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;
启动 slave 服务
start slave
查看 slave 服务状态,Slave_IO_Running 和 Slave_SQL_Running 都为 YES 即成功
show slave status\G;
如果错误停止 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 协议》,转载必须注明作者和本文链接
就是有时候备库出问题了,然后错误太多不好弄,数据一致性检查。
9.1 版本 CHANGE MASTER TO 总报语法错误 不知道更新了个啥