MySQL主从复制容易出现的故障排错

MySQL主从复制容易出现的故障排错

在我们对MySQL主从复制进行排错的时候,我们首先要明白,MySQL主从复制的原理是什么,知道原理才知道如何去排错。

一、MySQL主从复制:

核心:2日志,3线程。
2日志:
master日志:bin-log
slave日志:relay-log
3线程:
master线程:dump线程
slave线程:I/O和SQL线程
在主从复制中,MySQL-master的dump线程,会监听bin-log的更新,如果bin-log有更新,通知到MySQL-slave的I/O线程,I/O线程读取bin-log里面的更新日志,然后放到relay-log里,SQL监听到relay-log更新后,同步给slave。

二、MySQL主从复制报错:

1、ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository

在我MySQL修复数据时候报错;
原因:
从库已经存在之前的relay log;
解决方法:
使用RESET SLAVE语句,清除master信息和relay日志的信息,删除所有的relay日志文件,并开始创建一个全新的中继日志。
mysql> stop slave;
mysql> reset slave;

2、mysql主从复制 Slave_IO_Running: NO

原因一:mysql5.6以上版本使用唯一uuid表示符,数据迁移是使用的物理备份,uuid会重复,修改uuid不一致即可。(克隆容易出现)
vim /var/lib/mysql/auto.cnf 
[auto]
server-uuid=85dba00a-e0ef-11e9-b341-000c29812345
# 任意修改几位,重启mysql
原因二:确认server-id 是否唯一, mysql 有可能并没有加载my.cnf 文件中的server-id
# 修改/etc/my.cnf
server-id=3  #主从要不一致

mysql>  show variables like 'server_id';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id     | 3     |
+---------------+-------+

mysql> set global server-id=3; # 如果与my.cnf中设置的不一样,请修改一致
# 重启mysql
原因三:这种原因有可能是主库重启造成的二进制文件位置从库于主库不一致

解决: 需要手动将这些文件二进制日志mysql-bin.00000x,mysql-bin.index删除,rm -rf 掉 在重启数据库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值