我可以使用Window的Robocopy安全地备份MySQL表吗?

桑威斯

我在运行Windows 7的服务器上拥有一个MySQL数据库,并且我想创建一个快速(但很安全!)副本而不关闭任何设备。我发出带有读取锁的FLUSH TABLES,运行Robocopy,然后发出UNLOCK TABLES。这是问题所在:如果我在Robocopy中使用/ B选项,它将打印很多消息,指出“该进程无法访问该文件,因为该文件正在被另一个进程使用。”,并且仅在MySql数据中复制了535个文件中的209个。目录。如果我不使用/ B选项,则Robocopy报告所有文件都已复制。但是现在我不确定。我猜想,即使在锁定状态下,MySQL也会使表文件保持打开状态,而Robocopy / B认为备份它们是不安全的。如果没有/ B,Robocopy会尽力而为,这应该可以工作,因为MySQL不执行任何I / O,但是我

罗兰多·MySQLDBA

我的ISAM

如果您有一个全MyISAM数据库,则可以使用该数据库,因为所有MyISAM表的标头中都有0个文件句柄计数。

创新数据库

如果您有任何InnoDB表,则FLUSH TABLES WITH READ LOCK;可能无法为数据完整性提供适当的隔离。早在2012年11月,我就在DBA StackExchange中撰写了有关此内容的文章(如何在不关闭MySQL从站的情况下使用Linux / tar运行冷备份?)

鉴于InnoDB架构(Percona首席技术官Vadim Tkechenko拍摄的照片)

InnoDB管道

FLUSH TABLES WITH READ LOCK;发出后有四个仍在移动的对象

  • 双写缓冲区
  • 插入缓冲区
  • 重做日志
  • 撤消日志

假设您启动FLUSH TABLES WITH READ LOCK;并进行Robocopy,并且复制需要5分钟,这意味着在5分钟内进行的任何物理更改都不会出现在备份中。更糟糕的是,文件更改将不会来自单个时间点。这意味着可能有些.ibd文件可能已更改,也可能未更改,但是保存其更改的事务未完全提交。

您将不得不将数据复制到另一台机器上,启动MySQL,并查看崩溃恢复(在mysqld启动,读取和处理这四个对象期间发生)是否使数据稳定和可用。

您最好mysqldump--single-transaction选项一起使用。

有关一些想法,请参阅我以前的DBA StackExchange帖子。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我可以使用这个方案安全地包装函数吗?

我可以使用require(“ path”)。join安全地连接网址吗?

React.js:我可以使用状态安全地访问同级组件吗?

我可以安全地从模式1删除表吗?

我可以用tar安全地备份我的Claws Mail配置吗?

我可以使用WebAssembly在我的Web应用程序中安全地执行不受信任的用户代码吗?

我可以使用正则表达式安全地替换 HTML 中的“<ul>”标签吗?

如何安全地存储对称密钥?我可以使用 pkcs12 来存储对称密钥吗?

我可以安全地排除执行备份的条目

我可以安全地在utf8mb4 mysql数据库中使用utf8表和列吗?

可以使用realloc安全地重新分配琐碎可复制对象的存储吗?

您可以使用stringstream安全地进行双向转换吗?

我可以安全地组合我的架构吗

我可以在我的存储库中安全地使用 observeForever 吗?

我可以安全地添加新分区吗?

我可以安全地删除该分区吗?

我可以安全地更新Windows 10吗?

我可以安全地移除lubuntu-desktop吗?

我可以安全地禁用软件保护服务吗?

我可以安全地对textarea进行消毒吗

我可以安全地复制vector <array>吗?

我可以安全地忽略这些错误吗?

我可以安全地删除/ var / cache吗?

在C ++中,我可以使用来自不同文件的值安全地初始化unordered_map吗?

我可以在React Router Link上安全地使用“ to”和“ onClick”道具吗?

我可以安全地在PySpark的RDD.aggregate中使用可变对象吗?

我可以在单线程上下文中安全地使用 Ordering::Relaxed 吗?

我可以在多线程C ++中安全地使用int吗?

我可以安全地使用此弱自自动键入快捷方式吗?