[译] Percona XtraBackup 示例

[译] Percona XtraBackup 示例

严少安 Lv.6

原文链接:https://www.virtual-dba.com/blog/percona-xtrabackup-example/
原文作者:Steve Champion

1.jpg

在这个示例中,将使用如下软件版本:

  1. Ubuntu v20.04.3
  2. MySQL server v5.7.35
  3. Percona XtraBackup v2.4.24

需要重点注意的是 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)

2.png

图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/

3.png

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

4.png

图3:指定的目标文件夹被新建

增量备份:

在建立了初始的全备之后,接下来是增备。增备的命令与全备的命令非常相似,但是需要一个额外的目录。现在,target-dir将是新的增量文件存放的地方,选项--incremental-basedir是最近进行备份(在本例中是全备份)的位置; 图4展示了一个全备后的第一次增备。

5.png 图4: 第一个增量备份。使用incremental-basedir作为全备,并将target-dir选为新的目标来存储增备。

对于下一个增量备份,命令是相同的,但是现在target-dir将指定为下一个增备的位置,而incremental-basedir将指向最近的增备,如图5所示。

6.png 图5: 第二次增备,使用第一次增备作为incremental-basedir。

现在,存在三个备份(图6-8):一个全备和两个增备。

7.png

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

8.png

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

9.png

图8:包含第二次增备的目录

对于额外的增备,继续以这种方式,将之前的target-dir移动到当前的incremental-basedir

恢复

最后一步是还原备份。在实际执行恢复之前有一些设置:

  1. MySQL 服务必须停止。
  2. MySQL 数据目录必须为空。
10.png

图9:恢复准备步骤1 – 停止mysql服务

11.png

图10:恢复准备步骤2 – 清空MySQL数据目录

  1. 首先准备备份:

    • $xtrabackup --prepare --target-dir=/home/usr/full_bkup_directory
      • 注意--prepare选项
  2. 全量备份恢复到空数据路径:

    • $xtrabackup --copy-back --target-dir=/home/usr/full_bkup_directory
      • --copy-back是恢复的命令
  3. 必须检查或设定新的恢复备份集的权限:

    • $chown mysql:mysql mysql
      • 这将递归应用到数据目录的所有文件
  4. 恢复MySQL服务:

    • $service mysql start
12.png 图11: 准备恢复全量备份 13.png 图12: 实际恢复完全备份 14.png 图13:恢复后变更权限 15.png 图14:恢复MySQL服务

对于增备设定和copy-back的步骤是一样的,但是准备步骤不同;出最后一个增备外,需要在语句中增加参数–-apply-log-only--prepare

增备的准备步骤如下:

  1. 准备全备:
    $xtrabackup --prepare --apply-log-only --target-dir=/data/backups/full

  2. 向全备应用第一个增备:
    $xtrabackup --prepare --apply-log-only --target-dir=/data/backups/full --incremental-dir=/data/backups/inc1

  3. 向全备应用第二个增备:
    $xtrabackup --prepare --apply-log-only --target-dir=/data/backups/full --incremental-dir=/data/backups/inc2

16.png 图15:为恢复增备准备全备 17.png 图16:为恢复准备第一个增备 18.png 图17:为恢复准备第二个增备

同样的,复制回步骤将与全量备份一样,使用唯一的准备好的全备。在复制回步骤完成后,恢复完成。


译者注
考虑到兼容性问题,在使用 PXB 时需要注意 MySQL 的版本,如果使用的是 MariaDB,则建议使用 mariabackup。

  • Title: [译] Percona XtraBackup 示例
  • Author: 严少安
  • Created at: 2022-04-07 13:04:50
  • Updated at: 2022-04-07 13:04:50
  • Link: https://shawnyan.cn/2022/mysql/fanyi-percona-xtrabackup-example/
  • License: This work is licensed under CC BY-NC-SA 4.0.
 Comments
On this page