数据库
首页 > 数据库> > linux – 如何在获取LVM / ZFS快照之前暂停MySQL?

linux – 如何在获取LVM / ZFS快照之前暂停MySQL?

作者:互联网

我如何指示MySQL完成所有“正在进行中”的事务,但是要延迟启动新的事务(不要关闭客户端),直到我采用ZFS或LVM快照(这需要不到一秒钟).

例如

>暂停MySQL,等待“进行中”事务完成
>同步到磁盘
>获取ZFS / LVM快照
>恢复MySQL
关键是要为备份目的获取一致的快照.第2步需要几分之一秒.

第一步不应该导致客户端错误,只需要很短的暂停,直到达到第4步.

是否有可以执行1和4的MySQL命令?这些是什么?

解决方法:

一个hacky方式是,等待交易完成:

MySQL的&GT FLUSH LOCAL TABLES;
查询正常,0行受影响(11.31秒)

然后得到一个读锁定:

MySQL的&GT带读锁的冲洗表;
查询OK,0行受影响(22.55秒)

现在所有查询都被阻止(即他们等待锁定被释放),直到你的会话结束.请注意 – 您仍需要等到所有交易完成.根据您的工作量,这可能需要一段时间(更新几百万行……).

您可以使用您喜欢的脚本语言对其进行编码.

但严重 – 为什么不使用Xtrabackup?它确实为您处理了一致的mysql快照,您可以将其转储到文件系统上,并将zfs / lvm快照它.

标签:linux,mysql,lvm,zfs
来源: https://codeday.me/bug/20190813/1646819.html