mysql salve 1872_Mysql slave 主从同步异常处理 Error:1872

目录

1、报错原因:

今日收到zabbix磁盘报警,通过du命令查找到mysql目录过大,发现relay日志没有设置过期时间,所以手动删除从库中继日志,之后重启mysql后主从复制状态异常:

du -h --max-depth=1 / |sort #查看根目录下各目录大小,并进行排序

2、报错信息:

[ERROR] Slave SQL: Slave failed to initialize relay log info structure from the repository, Error_code: 1872

3、查看mstaer log日志记录点

mysql> show master status G

*************************** 1. row ***************************

File: mysql-bin.000033

Position: 199787569

Binlog_Do_DB:

Binlog_Ignore_DB:

Executed_Gtid_Set: 950c9b3d-737f-11e7-8956-000c29fb7e00:1-38188942

1 row in set (0.00 sec)

mysql> show master status;

+------------------+-----------+--------------+------------------+-------------------------------------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+------------------+-----------+--------------+------------------+-------------------------------------------------+

| mysql-bin.000033 | 199787569 | | | 950c9b3d-737f-11e7-8956-000c29fb7e00:1-38188942 |

+------------------+-----------+--------------+------------------+-------------------------------------------------+

1 row in set (0.00 sec)

4、由于是rm删除中继日志,导致mysql无法进一步处理相关日志,此时需要停掉slave stop 然后 reset初始化

通过上面的报错以及relay log介绍,很容易知道由于mysql.slave_relay_log_info表中保留了以前的复制信息,导致新从库启动时无法找到对应文件,那么我们清理掉该表中的记录不就可以了。再次提醒,不要手动删该表数据,MySQL已经提供工具给我们了:reset slave:

4.1 清除relay_log 日志

mysql> start slave;

938bbaf23972e03b6cb84061c1e6ee7f.gif

ce5505d5927bf8de771865ca084c610f.png

错误主要是因为relay异常,下面就解释下关于relay_log的设置

1.修改配置文件 /etc/my.cnf

设置 relay_log_purge=0,禁止 SQL 线程在执行完一个 relay log 后自动将其删除

设置 relay_log_purge=1, 自动清除relay_log

------------

2,手动删除 relay log

SET GLOBAL relay_log_purge = 1

flush logs

mysql>reset slave

mysql>change master to master_log_file='mysql-bin.000033',master_log_pos=199787569 ; #与masterbinlog点进行关联

mysql>start slave;

4.2 reset slave功能介绍:

1、删除slave_master_info ,slave_relay_log_info两个表中数据;

2、删除所有relay log文件,并重新创建新的relay log文件;

3、不会改变gtid_executed 或者 gtid_purged的值

5、 验证主从状态

mysql> show slave statusG

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: 192.168.0.37 #master主库

Master_User: rep

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql-bin.000033

Read_Master_Log_Pos: 199850445

Relay_Log_File: DB03-relay-bin.000003

Relay_Log_Pos: 25581

Relay_Master_Log_File: mysql-bin.000033

Slave_IO_Running: Yes #主要看这里

Slave_SQL_Running: Yes #主要这里

Replicate_Do_DB:

Replicate_Ignore_DB:

Replicate_Do_Table:

Replicate_Ignore_Table:

Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table:

Last_Errno: 0

Last_Error:

Skip_Counter: 0

Exec_Master_Log_Pos: 199850445

Relay_Log_Space: 25958

Until_Condition: None

Until_Log_File:

Until_Log_Pos: 0

Master_SSL_Allowed: No

Master_SSL_CA_File:

Master_SSL_CA_Path:

Master_SSL_Cert:

Master_SSL_Cipher:

Master_SSL_Key:

Seconds_Behind_Master: 0

Master_SSL_Verify_Server_Cert: No

Last_IO_Errno: 0

Last_IO_Error:

Last_SQL_Errno: 0

Last_SQL_Error:

Replicate_Ignore_Server_Ids:

Master_Server_Id: 1

Master_UUID: 950c9b3d-737f-11e7-8956-000c29fb7e00

Master_Info_File: /application/mysql-5.6.35/data/master.info

SQL_Delay: 0

SQL_Remaining_Delay: NULL

Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it

Master_Retry_Count: 86400

Master_Bind:

Last_IO_Error_Timestamp:

Last_SQL_Error_Timestamp:

Master_SSL_Crl:

Master_SSL_Crlpath:

Retrieved_Gtid_Set: 950c9b3d-737f-11e7-8956-000c29fb7e00:38188963-38188981

Executed_Gtid_Set: 291d8a91-75f5-11e7-995f-000c29ea7194:1-8,

950c9b3d-737f-11e7-8956-000c29fb7e00:1-38188981

Auto_Position: 1

1 row in set (0.00 sec)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值