MySQL的主从复制中,删除主库中存在而从库中不存在的数据库时报错 ...

兜兜零元  金牌会员 | 2024-8-6 18:15:07 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 992|帖子 992|积分 2976

MySQL的主从复制中,删除主库中存在而从库中不存在的数据库时报错

主从复制乐成以后,看到主库中有一个数据库从库中没有,就想着删掉保护同等,结果一删除就出问题了,主库中再进行增编削查利用的时候,从库不会跟着复制利用了。最后在从库的假造机里面 show slave status\G; 的时候发现报错了…其实过细想想照旧很合乎逻辑的,从库是依靠在主库处拉去的binlog的做恢复,主库drop database test,从库同样会实行该语句,那从库发现它根本就没有这个库,此时从库认为与主库已经不同等了,主从中断。

  1. Error 'Can't drop database 'test'; database doesn't exist' on query. Default database: 'test'. Query: '/* ApplicationName=IntelliJ IDEA 2024.1.3 */ drop schema test'
复制代码
怎么解决呢?从库跳过这条不实行呗。
让指针往下移动

  1. stop slave;
  2. set global sql_slave_skip_counter=1;
  3. start slave;
复制代码
问题来了, set global sql_slave_skip_counter=N,这条语句的N到底指什么呢?
从库从主库上复制binlog二进制文件内容到当地实行。在binlog上下令以event的形式存在,并非一个下令对应一个event。
以一个insert语句为例(引擎InnoDB、binglog_format=statement), 在binlog中现实上有三个event,分别为begin\insert\commit 。 下令类型都是Query_log_event。而set global sql_slave_skip_counter=N的意思,即为在start slave时,从当前位置起,跳过N个event。
分析:当N=1时,会连续跳过若干个event,直到当前所在的事件竣事。
连续跳过若干个event,直到当前所在的事件竣事。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

兜兜零元

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表