我想从休眠状态锁定整个 mysql 数据库,我的意思是把所有表都置于读取模式。就像是:
FLUSH TABLES WITH READ LOCK;
然后解锁数据库,总是通过hibernate。
恕我直言,这种方法是不可取的。在获得所有表的读锁后(可以通过解析information_schema.tables
表轻松完成),后续写入数据库的尝试将一直保持到超时。
此外,会话获得的所有锁都会在会话结束时释放。锁定会话需要保持活动状态才能保持锁定。
作为替代方案,我建议撤销应用程序连接的用户的写入权限。要做到这一点,请参考我以前的答案。或者你可以有两个用户,一个拥有所有权限,一个只有读取权限。当您想将应用程序置于只读模式时,只需切换用户即可。