备份的生成使我的网站瘫痪了 - 有没有简单的解决方案?

备份的生成使我的网站瘫痪了 - 有没有简单的解决方案?

在我的数据库服务器上有一个 cronjob,它以一种易于恢复的方式备份所有数据库。

它是这样的:
0 5 * * * /usr/local/bin/backup.php

问题是,网站(使用该数据库服务器)在此过程中非常慢。甚至,Pingdom 在该过程开始时向我发送了“网站关闭”警报。

为了解决这个问题,我尝试了这个更改:
0 5 * * * /bin/nice -n 19 /usr/local/bin/backup.php

但这似乎并没有改善情况。

这怎么可能?问题可能是备份脚本锁定了数据库。但如果我不锁定表,备份可能不一致。

在这些要求下,您将如何解决问题?1. 无需购买任何硬件 2. 易于实施和维护 3. 没有专有解决方案

答案1

这是一个非常常见的问题,可以通过多种方式解决。最佳和最可靠的方法之一是使用主/从复制。简而言之:

  • 运行数据库的第二个实例(必须在另一个端口上)。该实例通常与主实例保持同步。
  • 当需要备份时,您可以锁定从属服务器上的表并进行备份。
  • 一旦备份完成,释放锁并且从属服务器将赶上主服务器。

当然,优点是,为您的网站提供服务的主人不会错过任何一个节拍。

相关内容