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