跳转至

21. 主从复制-io线程故障

1. IO线程作用

1.连接主库
2.请求、接收binlog
3.将日志写入relay-log
4.读写master.info

2. 故障1——连接master失败

2.1 原因

1 user,password,ip,port错误
2 网络不通、防火墙
3 master未启动
4 master连接数达到上限
5 master压力太大
6 未加skip-name-resolve参数

2.2 问题排查

#使用用户名密码等信息登录主库测试
mysql -urepl -p1234 -h 192.168.178.151 -p3307
#1.如果登录成功,说明信息没问题
#2.如果登录失败,则找到正确信息,然后按如下步骤操作

stop slave;
reset slave all;

change master to 
master_host='192.168.178.151',
master_user='repl',
master_password='123',
master_port=3307,
master_log_file='mysql-bin.000003',     #登录主库show mastar status查看
master_log_pos=248,                    #登录主库show mastar status查看
master_connect_retry=10;                #可以省略

start slave;

2.3 案例

#某日10:00,监控到io线程故障:

1.查看故障具体信息
show slave status\G
#io


2.记录故障时间点,从库获取到的主库日志信息
show slave status\G
#以下2条



3.处理故障
stop slave;
reset slave all;

change master to 
master_host='192.168.178.151',
master_user='repl',
master_password='123',
master_port=3307,
master_log_file='mysql-bin.000003',     #show slave status查看
master_log_pos=248,                    #show slave status查看
master_connect_retry=10;                

start slave;

3. 故障2——请求、接收binlog故障(出现概率最大)

3.1 原因

#1.binlog文件(出现概率最大)
1.找不到
2.损坏
3.断节

3.2 案例模拟:主库reset master清空二进制日志导致错误

#主库
#1.查看当前二进制日志
show master status; 

#2.清空
reset master;

#3.再次查看当前二进制日志
show master status;

#4.创建新库(看一下不建库是否也有报错信息)
create database db1;
#从库查看报错信息
show slave status\G

切记:主从复制的主库,不可使用reset master 命令!

3.3 处理方案

stop slave;
reset slave all;

#使用备份恢复,重新初始化数据。

change master to 
master_host='192.168.178.151',
master_user='repl',
master_password='123',
master_port=3307,
master_log_file='mysql-bin.000001',     #直接从第一个开始
master_log_pos=120,                    #直接从第一个位置开始
master_connect_retry=10;            

start slave;

最后更新: 2022-02-25 03:53:42