linux – 如何在获取LVM / ZFS快照之前暂停MySQL?
作者:互联网
我如何指示MySQL完成所有“正在进行中”的事务,但是要延迟启动新的事务(不要关闭客户端),直到我采用ZFS或LVM快照(这需要不到一秒钟).
例如
>暂停MySQL,等待“进行中”事务完成
>同步到磁盘
>获取ZFS / LVM快照
>恢复MySQL
关键是要为备份目的获取一致的快照.第2步需要几分之一秒.
第一步不应该导致客户端错误,只需要很短的暂停,直到达到第4步.
是否有可以执行1和4的MySQL命令?这些是什么?
解决方法:
一个hacky方式是,等待交易完成:
MySQL的> FLUSH LOCAL TABLES;
查询正常,0行受影响(11.31秒)
然后得到一个读锁定:
MySQL的>带读锁的冲洗表;
查询OK,0行受影响(22.55秒)
现在所有查询都被阻止(即他们等待锁定被释放),直到你的会话结束.请注意 – 您仍需要等到所有交易完成.根据您的工作量,这可能需要一段时间(更新几百万行……).
您可以使用您喜欢的脚本语言对其进行编码.
但严重 – 为什么不使用Xtrabackup?它确实为您处理了一致的mysql快照,您可以将其转储到文件系统上,并将zfs / lvm快照它.
标签:linux,mysql,lvm,zfs 来源: https://codeday.me/bug/20190813/1646819.html