如何使MySQL转储不影响服务器上的当前负载?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (15)

虽然做MySQL转储很容易,但我有一个专用的MySQL服务器,我想在上面安装复制。为此,我需要将数据库的转储导入到复制。

当我做转储的时候,MySQL就会全力支持它,并将资源绑定到连接到它的站点上。我想知道是否有一种方法可以将转储查询限制在低优先级状态,而这种状态是对活动连接的优先选择。这个想法是,来自外部站点的负载不受MySQL完成一个完整转储的努力的影响...

提问于
用户回答回答于

如果使用InnoDB表,则对mysqldump使用--单事务和-快速选项。

用户回答回答于

我有非常大的数据库,有数万个表,其中一些在数百万条条目中的10条中有多达5GB的数据。(我经营一项受欢迎的服务)...。备份这些数据库时我总是头疼。使用默认的mysqldump,它会迅速使服务器负载失控,并锁定所有的东西。影响我的用户。试图停止该进程会导致崩溃的表,并在恢复这些表的过程中导致大量的停机时间。

我现在用

mysqldump -u USER -p --single-transaction --quick --lock-tables=false DATABASE | gzip > OUTPUT.gz

在dev.mysql.com上的mysqldump引用甚至说..。

要转储大型表,应该将--单事务选项与--快速处理选项结合起来。

没有提到依赖于数据库是InnoDB,我的是我的ISAM,这对我来说非常有用。服务器负载几乎完全不受影响,在整个过程中,我的服务就像劳力士一样运行。如果有大型数据库并支持它们,则会影响最终用户...这是解决方案。

扫码关注云+社区