频繁的数据库备份工作流程

时间:2014-02-03 18:18:14

标签: mysql workflow backup database-backups

我们有一个数据库(mysql)驱动的应用程序,其中包含业务关键信息,正在寻找构建一个系统,允许我们经常备份数据库(比如每15分钟),以便我们减少任何危险数据丢失。在两个设置之间撕裂的地方:

在cron上每隔15分钟添加一个备份作业,并将这些备份存储在另一台服务器上。 (为节省空间,我们会在3天后删除大部分备份,但保留06:00,12:00,18; 00小时版本。)

是否存在类似RAID的设置,我们的所有数据都将被自动复制到另一个硬盘驱动器或本例服务器,在这种情况下,如果我们丢失数据会发生什么情况,将损失传送到其他服务器(我们会还可以在我们的版本中为我们的档案运行标准的每日备份吗?

是否有另一种建立频繁备份的既定方法?

2 个答案:

答案 0 :(得分:3)

在我看来,最佳备份方案将遵循。

  1. Delayed slave。它允许您在主机故障时快速恢复数据库。在DROP DATABASE或其他错误的SQL的情况下,可能帮助。所以,你还需要一些东西。

  2. 每天使用Xtrabackup来自延迟的奴隶进行增量备份。您也可以选择TwinDB检查增量备份。

  3. 只要您需要15分钟的粒度,您就可以从MySQL 5.6中使用mysqlbinlog从主服务器中提取二进制日志(即使主服务器是5.5或5.1)。因此,mysqlbinlog在远程主机上运行并从主服务器中提取日志。

  4. 如果您需要恢复数据库,您有两种方法。

    1. 如果您可以从延迟的从站恢复,则将该从站用作新的主站。

    2. 如果由于某种原因您无法使用延迟的从站(您错过了DROP命令),那么您将从增量备份中恢复昨晚的副本并应用自上次备份以来的二进制日志,直到发生事故时刻(再次,如果事故是错误的DROP表你重播记录到DROP之前的最后一个事件。)

    3. 从性能角度来看,此架构将是最佳的(对应用程序没有影响),并且根本不会丢失任何数据。

答案 1 :(得分:1)

如果您的备份时间超过一小时,那么您需要的是replication。设置可以作为热备用的辅助数据库服务器比通过重复读取滥用数据库要好得多。

如果您经常备份数据库,请查看innobackupex以快照表格,或者LVM snapshots