我想从休眠中锁定整个mysql数据库,我的意思是将所有表置于读取模式。就像是:

FLUSH TABLES WITH READ LOCK;


然后始终通过休眠来解锁数据库。

最佳答案

恕我直言,这种方法是不可取的。在获得所有表的读取锁定(可以通过解析information_schema.tables表轻松完成)之后,将继续尝试写入数据库,直到它们超时为止。

此外,会话获取的所有锁都会在会话结束时释放。锁定会话将需要保持活动状态以保持锁定。

作为替代方案,我建议撤销对应用程序连接用户的写入权限。为此,请参阅this previous answer of mine。或者,也许您可​​以有两个用户,一个拥有所有特权,一个拥有只读特权。当您要将应用程序置于只读模式时,只需切换用户即可。

10-07 19:40
查看更多