我想从休眠中锁定整个mysql数据库,我的意思是将所有表置于读取模式。就像是:
FLUSH TABLES WITH READ LOCK;
然后始终通过休眠来解锁数据库。
最佳答案
恕我直言,这种方法是不可取的。在获得所有表的读取锁定(可以通过解析information_schema.tables
表轻松完成)之后,将继续尝试写入数据库,直到它们超时为止。
此外,会话获取的所有锁都会在会话结束时释放。锁定会话将需要保持活动状态以保持锁定。
作为替代方案,我建议撤销对应用程序连接用户的写入权限。为此,请参阅this previous answer of mine。或者,也许您可以有两个用户,一个拥有所有特权,一个拥有只读特权。当您要将应用程序置于只读模式时,只需切换用户即可。