【问题标题】:What is the best way to do incremental backups in MySQL?在 MySQL 中进行增量备份的最佳方法是什么?
【发布时间】:2010-09-29 08:55:42
【问题描述】:

我们使用的是 MySQL 5.0 版,并且大部分表都是 InnoDB。我们运行复制到从服务器。我们正在考虑每天备份 MySQL 日志文件。

问题

  • 有没有其他方法可以在不使用日志文件的情况下进行增量备份?
  • 进行增量备份时的最佳做法是什么?

【问题讨论】:

    标签: mysql database backup


    【解决方案1】:

    AFAIK 进行增量备份的唯一方法是使用二进制日志。如果您想进行完整备份(InnoDB hotcopy),您还有其他选择,但增量意味着您需要记录所有的事务。

    您需要问自己为什么要备份数据。既然你有一个从属服务器进行复制,我假设备份主要是为了在意外删除的情况下恢复数据?

    我可能会每 1 小时轮换一次日志并对其进行备份。这意味着,还原最多会使数据保留 1 小时,并且您可以还原到自上次完整快照以来的任何时间点。

    【讨论】:

    • 那么我们该怎么做呢?你有一些 PHP/MySQL 的示例代码吗?
    • 轮换日志的命令是 FLUSH BINARY LOGS。请注意,二进制文件确实包含所有数据库的更改。在开始应用二进制日志之前,您必须将所有数据库恢复到相同的情况。
    【解决方案2】:

    您可以使用 mysqldump 定期转储您的架构,每个架构始终使用相同的文件名和路径(即替换最新的)

    然后将其与任何支持增量/增量备份的备份工具结合使用,例如 rdiff-backup、duplicity、Duplici 或 Areca Backup。来自重复文档的示例:

    因为 duplicity 使用 librsync,所以增量归档是空间 高效且仅记录自那以后更改的文件部分 上次备份

    这样,您的第一个备份将是第一个完整转储的压缩副本,第二个备份将包含与第一个和第二个转储的压缩差异,依此类推。您可以恢复任意时间点的mysqldump文件,然后将该文件恢复到MySQL中。

    【讨论】:

    【解决方案3】:

    自上次回答以来已经过去了很长时间,在此期间出现了一些用于实施增量备份的解决方案和工具。

    两个主要的:

    • Percona XtraBackup - 是 MySQL 的开源热备份实用程序 - 在备份期间不会锁定数据库的基于服务器的服务器。它 还允许您创建增量备份。更多详情here.

      这很简单,看起来像这样:

      xtrabackup --backup --target-dir=/data/backups/inc1 --incremental-basedir=/data/backups/base
      
    • mysqlbackup 是一个实用程序,包含在 mysql 企业版中 版。它很像 percona xtrabackup。详细比较
      可以找到here
      它具有参数--incremental,允许您进行增量备份。更多详情here

      mysqlbackup --defaults-file=/home/dbadmin/my.cnf --incremental --incremental-base=history:last_backup --backup-dir=/home/dbadmin/temp_dir --backup-image=incremental_image1.bi backup-to-image
      

    这两个实用程序可以进行物理备份(复制数据库文件),但您仍然可以对 binlog 文件进行逻辑备份。

    您可以自己编写脚本,也可以使用 github 上的现成脚本:

    macournoyer/mysql_s3_backup

    Abhishek-S-Patil/mysql-backup-incremental

    还有一些付费解决方案,实际上是这些工具的精美包装:

    SqlBak

    databasethink

    进行增量备份时的最佳做法是什么?

    这完全取决于您的架构、数据量以及您可以接受的最大允许停机时间间隔。允许的最大数据丢失间隔。在设置备份之前考虑这些事情。

    我只想提一个很好的做法,但非常重要,而且经常被遗忘。在另一台不相关的服务器上定期测试和运行恢复脚本。

    【讨论】:

      猜你喜欢
      • 2017-02-11
      • 2017-04-15
      • 2014-01-01
      • 1970-01-01
      • 2015-08-09
      • 1970-01-01
      • 2011-05-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多