首页 > 数据库 > 国内数据库 > [译] Percona XtraBackup 示例
原文链接:https://www.virtual-dba.com/blog/percona-xtrabackup-example/ 原文作者:Steve Champion

在这个示例中,将使用如下软件版本:
需要重点注意的是 Percona XtraBackup 8.0 的引入是为了在 MySQL 8.0 版本上使用,与 MySQL 5.7 版本不兼容。在写本文时,不存在与 MySQL 的最新版本(8.0.28)兼容的 Percona XtraBackup 版本。详情请参阅 https://www.percona.com/doc/percona-xtrabackup/8.0/index.html
本文将逐步展示在 MySQL 5.7 上使用 Percona XtraBackup 建立和恢复增量备份。
本文将使用“$”表示操作系统终端中的命令,并使用“>”表示MySQL客户端命令行中的任何命令。
执行 Percona XtraBackup 所需的权限可以很容易地在 Percona网站 上找到,如下所示(在这个例子中,所有的操作系统权限都使用了root权限):
| # | 权限列表 | 示例 | 权限使用示例 |
|---|---|---|---|
| 操作系统 | MySQL数据文件夹的文件系统级权限:READ, WRITE, EXECUTE | $sudo xtrabackup | $sudo -i |
| MySQL | RELOAD, LOCK TABLES, REPLICATION CLIENT, CREATE TABLESPACE, PROCESS, SUPER | >GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON . TO ‘user’@’localhost’; | >GRANT ALL ON . TO ‘user’@’localhost’;(root user) |
表1: Percona XtraBackup 所需的最小权限。注意:
$用于表示操作系统命令行,而
>用于表示MySQL客户端命令行。
全量备份:
增量备份必须先从一个全量备份开始。命令如此:
$xtrabackup --backup --user=bkupusr --password --target-dir=/home/user/fullBackupDestination,这里
target-dir是全备的目标文件夹,在这个示例中,目标文件夹是
/home/bkupusr/xtra/full。如果目标文件夹不存在,将会被创建。(如图2和图3)

图1: 使用 Percona XtraBackup 完成全备。注意,这个例子没有使用
--user或
--password选项,因为已经使用mysql_config_editor程序设置了
login-path。
图1显示了正在进行的全备,但是没有
--user或
--password选项,因为登录凭证是使用
$mysql_config_editor设置的。关于这个主题的教程可以在这里找到:
https://www.virtual-dba.com/blog/how-to-use-mysql-config-editor/

图2:当目标文件夹不存在时进行备份

图3:指定的目标文件夹被新建
增量备份:
在建立了初始的全备之后,接下来是增备。增备的命令与全备的命令非常相似,但是需要一个额外的目录。现在,
target-dir将是新的增量文件存放的地方,选项
--incremental-basedir是最近进行备份(在本例中是全备份)的位置; 图4展示了一个全备后的第一次增备。
图4: 第一个增量备份。使用incremental-basedir作为全备,并将target-dir选为新的目标来存储增备。
对于下一个增量备份,命令是相同的,但是现在target-dir将指定为下一个增备的位置,而incremental-basedir将指向最近的增备,如图5所示。
图5: 第二次增备,使用第一次增备作为incremental-basedir。
现在,存在三个备份(图6-8):一个全备和两个增备。

图6:包含全量备份的目录

图7:包含第一次增备的目录

图8:包含第二次增备的目录
对于额外的增备,继续以这种方式,将之前的
target-dir移动到当前的
incremental-basedir。
最后一步是还原备份。在实际执行恢复之前有一些设置:
图9:恢复准备步骤1 – 停止mysql服务

图10:恢复准备步骤2 – 清空MySQL数据目录
首先准备备份:
$xtrabackup --prepare --target-dir=/home/usr/full_bkup_directory
--prepare选项全量备份恢复到空数据路径:
$xtrabackup --copy-back --target-dir=/home/usr/full_bkup_directory
--copy-back是恢复的命令必须检查或设定新的恢复备份集的权限:
$chown mysql:mysql mysql
恢复MySQL服务:
$service mysql start

图11: 准备恢复全量备份

图12: 实际恢复完全备份

图13:恢复后变更权限
图14:恢复MySQL服务
对于增备设定和copy-back的步骤是一样的,但是准备步骤不同;出最后一个增备外,需要在语句中增加参数
–-apply-log-only和
--prepare。
增备的准备步骤如下:
准备全备:
$xtrabackup --prepare --apply-log-only --target-dir=/data/backups/full
向全备应用第一个增备:
$xtrabackup --prepare --apply-log-only --target-dir=/data/backups/full --incremental-dir=/data/backups/inc1
向全备应用第二个增备:
$xtrabackup --prepare --apply-log-only --target-dir=/data/backups/full --incremental-dir=/data/backups/inc2

图15:为恢复增备准备全备
图16:为恢复准备第一个增备
图17:为恢复准备第二个增备
同样的,复制回步骤将与全量备份一样,使用唯 一的准备好的全备。在复制回步骤完成后,恢复完成。
译者注 考虑到兼容性问题,在使用 PXB 时需要注意 MySQL 的版本,如果使用的是 MariaDB,则建议使用 mariabackup。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31492144/viewspace-3013307/ ,如需转载,请注明出处,否则将追究法律责任。