基本上,标题是什么.这会增强我们系统的故障转移质量,因为我们遇到的问题是人们认为他们在测试环境中运行主服务器上的drop语句,然后(显然)导致数据丢失.
相反,我想知道是否有一个db选项只是让复制拒绝运行drop table命令,并且复制停止在那时运行. (现在假设基于语句的复制). MySQLs常见问题解答似乎表明答案是“不”.
解决方法:
您的问题的答案是否定的 – 复制SQL线程隐式具有SUPER权限,因此在二进制日志中输入的任何命令都可以由从属执行.
您可以通过设置故意落后于主服务器的从服务器来帮助您的方案.这样,如果有人意外删除或删除了他们不应该删除的内容,那么您有一个宽限期可以转到从属服务器,停止复制线程,并运行已删除数据的备份.
在MySQL 5.6中,你可以configure a slave with delay:
mysql> CHANGE MASTER TO MASTER_DELAY=3600; /* 1 hour delay */
在MySQL 5.5及更早版本中,您可以使用免费工具pt-slave-delay模拟此行为.
但我同意@Phil的评论 – 如果你有人在生产主数据库上工作,他们在运行DROP TABLE之前不能小心他们使用的是哪个实例,那么你应该撤销他们的权限.
另一个提示:您可以设置MySQL客户端的提示,以指示他们连接到哪个主机.编辑$HOME / .my.cnf:
[mysql]
prompt = mysql[\h]>