场景模拟举例:
1. 如master上创建了一个db test,slave成功复制后,我使用管理员权限帐号登录slave mysql,并drop掉这个库。这个时候slave还不会报错的,因为test没有变化。
2. 但是此时master又在test库上创建了一个表pet,那么slave接收到这个 *** 作语句后,它会发现test db不存在,就报错了。
解决方法:
解决这个问题首先要解决的是如何保证slave上test 数据库的数据与master保持一致,也即要知道slave出错以来test db都发生了什么变化。如果真要去弄清楚test db在此期间做了哪些更新 *** 作,那么可能问题变得十分复杂。我觉得最快让slave恢复工作的方法是从master server上将test db复制过来,这很可能要停库,因为这个错误已经不能让slave正常复制数据了,是一个非常严重的问题。
还有,此类错误,代码不一定都是1008,我后来的实验中错误代码是1049,1051。
通过这个实验,slave上帐号权限管理须得小心,对于线上的db server,除非有特殊需要(如对mysql等不进行异步复制的数据库进行更新 *** 作),否则不要对slave进行任何写 *** 作。
删除数据库:
drop database <数据库名>(1)是不是数据库不存在,或者之前已经被你删除掉了,可以先查看一下数据库里是否还存在要删除的数据库。
(2)新建一个数据库(无用的),然后利用删除命令进行删除,测试还出错不?
提示:
ERROR 1008 (HY000): Can't drop database 'text01'database doesn't exist
// 发生错误,不能删除'text01'数据库,该数据库不存在。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)