我很惊讶它xtrabackup
支持增量备份。xtrabackup
复制数据文件并了解数据文件的格式(可以看看里面)?什么是假人 LSN?我发现What is log sequence number ? 它是如何在MySQL中使用的?.
来自增量备份的引用
增量备份复制其 LSN 比先前增量或完整备份的 LSN 更新的每个页面。有两种算法用于查找要复制的此类页面集。第一个适用于所有服务器类型和版本,是通过读取所有数据页直接检查页面 LSN。Percona Server 提供的第二个功能是在服务器上启用更改页面跟踪功能,该功能会在页面更改时记录下来。然后,此信息将写入一个紧凑的独立所谓位图文件中。xtrabackup 二进制文件将使用该文件只读取增量备份所需的数据页,从而可能节省许多读取请求。如果 xtrabackup 二进制文件找到位图文件,则默认情况下启用后一种算法。
我仍然不明白这是如何工作的。你使用xtrabackup
增量备份吗?你推荐xtrabackup
增量备份吗?
LSN 又名日志序列号是一个 8 字节整数,充当 REDO 日志条目 (
ib_logfile*
) 的版本。对数据的每次更改都会在 REDO 日志中创建一个条目并获得一个新的 LSN。LSN 随每次更改而递增。每个 InnoDB 索引页(存储用户数据的地方)在标头中都有 LSN 字段。这是最后修改页面的 LSN。
所以。如果我们知道进行完整备份时的最后一个 LSN(我们称之为
lsn_full
)是什么,我们就知道从那时起某个特定页面是否发生了变化。因为如果页面的 LSN(我们称它为lsn_current
)高于lsn_full
,则该页面自上次备份以来已更改。Xtrabackup就是利用这个思想来实现增量备份的。事实上,您可以使用 Xtrabackup 实现增量备份和差异备份。查看选项
--incremental-lsn
和--incremental-basedir
。是否使用增量备份取决于您对整个过程的信心程度。如果您不完全了解备份和恢复过程中发生的事情,就很容易搞砸。(在 TwinDB,我必须处理许多增量备份因任何原因不可用的情况)。
我强烈建议验证备份。确保备份副本可用的最可靠方法是从中恢复数据库。所以我建议算法: