【MySQL change master 报错】 Slave is not configured or failed to initialize properly

问题背景

今天数据库主库异常重启,导致数据丢失,所以在5.5版本(历史遗留问题)的MySQL主库上
重新做了一份新的备份,还原到从库(从库是5.7的版本),还原非常成功,但是在搭建主从关系的
时候,发生了如下报错:

ERROR 1794 (HY000): Slave is not configured or failed to initialize properly. You must at least set --server-id to enable either a master or a slave. Additional error messages can be found in the MySQL error log.
在这里插入图片描述
从库无法进行change master to命令

排查过程

查看error log发现报错,存储主从同步信息的表找不到:
在这里插入图片描述
去数据库里面确认:
在这里插入图片描述
发现5.5恢复过来的少了很多系统表,
这里可以看到不仅少了复制的表,而且少了统计信息相关的表。
仔细考虑一下,mysql5.5的统计信息以及复制相关都是写文件的,所以
应该是版本不兼容的原因:
所以只要修复系统表就可以:
那就可以请出我们的神器:
mysql_upgrade
mysql_upgrade检查所有数据库中的所有表是否与当前版本的MySQL Server不兼容。mysql_upgrade还会升级系统表,以便您可以利用可能已添加的新特权或功能。
执行下面的命令:
mysql_upgrade -u root -p
然后系统就会自动进行检测然后创建丢失的系统表:
执行完之后,你就会惊喜发现:
在这里插入图片描述
mysql 系统库下面的表由25个变成33个,对应丢失的表都重新创建了回来。
到这里不要着急,重点来了
表恢复成功之后一定要重启mysqld服务才会生效。
执行
systemctl restart mysqld
再次 change master to果然成功了,也不报错了。

总结

在版本升级或者跨版本恢复的过程中可能会遇到系统表不兼容丢失,这时可以使用mysql-upgrade去检查兼容性,mysql_upgrade的作用是检查所有库的所有表是否与当前的新版本兼容,并更新系统库。

额外备注:
mysql_upgrade 在8.0 版本之后将会被移除,8.0目前也无法使用,系统会自己进行校验修复。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

渔不是鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值