

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# Percona XtraBackup
<a name="percona-xtrabackup"></a>

**重要**  
MariaDB 10.3 或更高版本不支持 Percona XtraBackup ，10.1 和 10.2 版本仅部分支持 Percona。

[Percona XtraBackup 是适用于](https://docs.percona.com/percona-xtrabackup/8.0/index.html) MySQL和MariaDB的常见开源热备份软件，可为InnoDB和XtraDB存储引擎进行非阻塞备份。它可以与 MySQL 或 MariaDB 服务器协同工作。有关该工具及其部分功能和优势的更多信息，请参阅Percona文档 XtraBackup中的[关于Percona](https://docs.percona.com/percona-xtrabackup/8.0/about-xtrabackup.html)。 XtraBackup 

此工具使用物理迁移方法。它直接复制 MySQL 或 MariaDB 数据目录及其中的文件。对于大型数据库（例如大于 100 GB 的数据库），与其他一些工具相比，这可以提供明显更好的恢复时间。您可以创建本地源数据库的备份，将备份文件迁移到云，然后在新的目标数据库实例上恢复备份。

下图显示了使用 Percona XtraBackup 备份文件迁移数据库所涉及的高级步骤。根据备份文件的大小，可通过两种选项将备份传输到 AWS Cloud中的 Amazon Simple Storage Service（Amazon S3）存储桶。



![迁移 Percona XtraBackup 文件并将其还原到 AWS 数据库实例的示意图。](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/migration-large-mysql-mariadb-databases/images/percona-xtrabackup-migration-aws.png)


以下是使用 Percona 将数据库迁移 XtraBackup 到的步骤： AWS Cloud

1. 在本地服务器 XtraBackup 上安装 Percona。如果你使用的是 Amazon Aurora MySQL 版本 2 或亚马逊 RDS，请参阅[安装 Percona XtraBackup](https://docs.percona.com/percona-xtrabackup/2.4/installation.html) 2.4。如果你使用的是 Amazon Aurora MySQL 版本 3，请参阅 [Percona 文档中的安装 Percona XtraBackup 8.0](https://docs.percona.com/percona-xtrabackup/8.0/installation.html)。 XtraBackup

1. 创建 MySQL 或 MariaDB 源数据库的完整备份。有关 Percona XtraBackup 2.4 的说明，请参阅[完整](https://docs.percona.com/percona-xtrabackup/2.4/backup_scenarios/full_backup.html)备份。有关 Percona XtraBackup 8.0 的说明，请参阅[创建](https://docs.percona.com/percona-xtrabackup/8.0/create-full-backup.html)完整备份。

1. 使用组织中经批准的服务或工具，通过 Internet 传输备份文件，例如：
   + [AWS Site-to-Site VPN](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html)
   + [AWS Client VPN](https://docs.aws.amazon.com/vpn/latest/clientvpn-user/client-vpn-user-what-is.html)
   + [AWS Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html)
   + [Amazon S3 文件网关](https://docs.aws.amazon.com/filegateway/latest/files3/what-is-file-s3.html)（有关更多信息，请参阅本指南中的 [使用 Amazon S3 文件网关传输备份文件](amazon-s3-file-gateway.md)。）
   + [AWS Command Line Interface (AWS CLI)](https://aws.amazon.com/getting-started/hands-on/backup-to-s3-cli/)

1. 从 Amazon S3 存储桶中，将备份文件还原到目标数据库实例。有关说明，请参阅：
   + 有关 Aurora MySQL 兼容版，请参阅 Amazon RDS 文档中的[通过使用 Amazon S3 存储桶从 MySQL 中迁移数据](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Migrating.ExtMySQL.html#AuroraMySQL.Migrating.ExtMySQL.S3.Restore)。
   + 对于 Amazon RDS for MySQL 或 Amazon EC2，请参阅[将数据导入 MySQL 数据库实例](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/MySQL.Procedural.Importing.Other.html)。
   + 对于 Amazon RDS for MariaDB 或适用于 Amazon EC2 的 Amazon RDS，请参阅[将数据导入 MariaDB 数据库实例](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/MariaDB.Procedural.Importing.html)。

1. （可选）您可以在源数据库和目标数据库实例之间设置复制。您可以使用二进制日志（binlog）复制来减少停机时间。有关更多信息，请参阅下列内容：
   + MySQL 文档中的 [Setting the replication source configuration](https://dev.mysql.com/doc/refman/5.7/en/replication-howto-masterbaseconfig.html)
   + 对于 Amazon Aurora，请参阅以下内容：
     + Aurora 文档中的[通过复制同步 Amazon Aurora MySQL 数据库集群和 MySQL 数据库](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Migrating.ExtMySQL.html#AuroraMySQL.Migrating.ExtMySQL.S3.RepSync)
     + Aurora 文档中的[在 Amazon Aurora 中使用二进制日志复制](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Replication.MySQL.html)
   + 对于 Amazon RDS，请参阅以下内容：
     + Amazon RDS 文档中的[使用 MySQL 复制](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_MySQL.Replication.html)
     + Amazon RDS 文档中的[使用 MariaDB 复制](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_MariaDB.Replication.html)
   + 对于 Amazon EC2，请参阅以下内容：
     + MySQL 文档中的[设置二进制日志文件基于位置的复制](https://dev.mysql.com/doc/mysql-replication-excerpt/8.0/en/replication-howto.html)
     + MySQL 文档中的[设置副本](https://dev.mysql.com/doc/refman/8.0/en/replication-setup-replicas.html)
     + MariaDB 文档中的[设置复制](https://mariadb.com/kb/en/setting-up-replication/)

## 优点
<a name="advantages-percona-xtrabackup"></a>
+ 由于 Percona XtraBackup 使用物理迁移方法，因此恢复过程通常比使用逻辑迁移方法的工具更快。这是因为性能受磁盘或网络吞吐量的限制，而不是受数据处理所需的计算资源的限制。
+ 由于还原过程是将文件从 S3 存储桶直接复制到目标数据库实例，因此 Percona XtraBackup 文件的恢复速度通常比使用其他工具创建的备份文件更快。
+ Percona 适应 XtraBackup 性强。例如，它支持多线程以帮助您更快地复制文件，并支持压缩以减小备份的大小。

## 限制
<a name="limitations-percona-xtrabackup"></a>
+ 无法进行离线备份，因为 Percona XtraBackup 必须有权访问源数据库服务器。
+ Percona XtraBackup 只能用于具有相同系统架构的系统。例如，无法将在 Intel for Windows Server 上运行的源数据库的备份恢复到 ARM for Linux 目标服务器。
+ MariaDB 版本 10.3 或更高版本 XtraBackup 不支持 Percona，MariaDB 版本 10.2 和 10.1 版本仅部分支持 Percona。有关更多信息，请参阅 MariaDB 知识库中的 [Percona XtraBackup 概述：与 MariaDB 的兼容性](https://mariadb.com/kb/en/percona-xtrabackup-overview/#compatibility-with-mariadb)。
+ 你不能使用 Percona XtraBackup 将源 MariaDB 数据库恢复到目标 MySQL 数据库实例，例如适用于 MySQL 的亚马逊 RDS 或兼容 Aurora MySQL 的 Aurora MySQL。
+ 您可以在 S3 存储桶中存储的数据总量和对象数量不受限制，但最大文件大小为 5 TB。如果备份文件超过 5 TB，则可以将其分为多个较小的文件。
+ 关闭该`innodb_file_per_table`设置后，Percona XtraBackup 不支持使用`--tables`、、、`--tables-exclude``--tables-file``--databases``--databases-exclude`、或的部分备份。`--databases-file`有关 Percona XtraBackup 版本 2.4 的更多信息，请参阅[部分](https://docs.percona.com/percona-xtrabackup/2.4/innobackupex/partial_backups_innobackupex.html)备份。有关 Percona 8.0 XtraBackup 版本的更多信息，请参阅[创建](https://docs.percona.com/percona-xtrabackup/8.0/create-partial-backup.html)部分备份。

## 最佳实践
<a name="best-practices-percona-xtrabackup"></a>
+ 要提高备份过程的性能，请执行以下操作：
  + 使用 [--parallel=<threads>](https://docs.percona.com/percona-xtrabackup/2.4/xtrabackup_bin/xbk_option_reference.html#-parallel) 并行复制多个文件
  + 使用 [--compress-threads=<threads>](https://docs.percona.com/percona-xtrabackup/2.4/xtrabackup_bin/xbk_option_reference.html#-compress-threads) 并行压缩多个文件
  + 使用 [--use-memory=<size>](https://docs.percona.com/percona-xtrabackup/2.4/xtrabackup_bin/xbk_option_reference.html#-use-memory) 增加内存
  + 使用 [--encrypt-threads=<threads>](https://docs.percona.com/percona-xtrabackup/2.4/xtrabackup_bin/xbk_option_reference.html#-encrypt-threads) 并行加密多个文件
+ 确保源服务器上有足够的空间来生成数据库备份文件。
+ 使用 Percona xbstream（.xbstream）格式文件生成数据库备份。有关更多信息，请参阅 Per XtraBackup cona [文档中的 xbstream 二进制文件概述](https://docs.percona.com/percona-xtrabackup/8.0/xbstream-binary-overview.html)。