问题触发原因
mysql 从库容器recreate后,再启动slave同步时而抛出改异常:
ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository
分析原因
mysql从库容器重启后再启动的slave同步不能读取之前的relay log。可以使用reset slave
重置slave,清除master和relay日志信息(不会从数据盘删除),再重建slave中继日志。
解决过程
运行reset slave
,此时不能直接start slave;
会报1062错误。因为新创建slave会读取之前的slave信息,而导致重复同步数据。因此需要使用最后的同步记录的pos,在销毁容器之前的同步日志的pos在 mysql.slave_master_info表中有记录。
使用如下命令修改slave:1
2
3
4
5
6
7CHANGE MASTER TO
MASTER_HOST='masterhost',
MASTER_PORT=1234,
MASTER_USER='replication',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='binlog.000006',
MASTER_LOG_POS=1493213;
再start slave;
即可。