![Mysql 复制—限制删除数据库语句](https://linux22.com/image/543515/Mysql%20%E5%A4%8D%E5%88%B6%E2%80%94%E9%99%90%E5%88%B6%E5%88%A0%E9%99%A4%E6%95%B0%E6%8D%AE%E5%BA%93%E8%AF%AD%E5%8F%A5.png)
我们有一个主从 mysql 复制设置。主服务器有多个数据库,它们经常被创建和删除。我想限制从服务器不删除数据库。我在 mysql 帮助页面上找不到任何这样的选项。我们提供 Saas 模型 ERP 应用程序,并在不同的数据库中维护每个客户。试用期过后,我们会定期从主服务器删除数据库(当然是在备份之后)。只丢失过一次磁盘,丢失了其中几个数据库。
答案1
你可以通过以下方式阻止某些命令被写入 binlog,从而阻止它们被复制:
SET sql_log_bin = 1
在当前会话中。更多信息请参见:
http://dev.mysql.com/doc/refman/5.7/en/set-sql-log-bin.html
确保执行此操作的连接未用于其他目的(例如,在连接池中),因为在您执行此操作之前,其中的任何命令都不会写入 binlog
SET sql_log_bin = 0
或者重新建立连接。
答案2
- 只读不会达到此目的。它会导致从属服务器不允许除从属线程或具有 SUPER 权限的用户之外的更新。在从属服务器上,这可以用于确保从属服务器只接受来自其主服务器的更新,而不接受来自客户端的更新。