

# 针对 Amazon RDS for Db2 从 Linux 迁移到 Linux
<a name="db2-one-time-migration-linux"></a>

通过这种迁移方法，您可以将自行管理的 Db2 数据库备份到 Amazon S3 存储桶。然后，使用 Amazon RDS 存储过程将 Db2 数据库还原到 Amazon RDS for Db2 数据库实例。有关使用 Amazon S3 的更多信息，请参阅[将 Amazon RDS for Db2 数据库实例与 Amazon S3 集成](db2-s3-integration.md)。

RDS for Db2 的备份和还原遵循 IBM Db2 支持的升级路径和限制。有关更多信息，请参阅 IBM Db2 文档中的 [Supported upgrade paths for Db2 servers](https://www.ibm.com/docs/en/db2/11.5?topic=servers-supported-upgrade-paths-db2) 和 [Upgrade restrictions for Db2 servers](https://www.ibm.com/docs/en/db2/11.5?topic=servers-upgrade-restrictions)。

**Topics**
+ [使用原生还原的限制和建议](#db2-linux-migration-limitations)
+ [将数据库备份到 Amazon S3](#db2-linux-backing-up-database)
+ [创建默认自动存储组](#db2-linux-creating-auto-storage-group)
+ [还原 Db2 数据库](#db2-linux-restoring-db2-database)

## 使用原生还原的限制和建议
<a name="db2-linux-migration-limitations"></a>

以下限制和建议适用于使用原生还原：
+ Amazon RDS 仅支持迁移与支持的 RDS for Db2 版本相匹配的 Db2 本地版本。有关支持的版本的更多信息，请参阅 [Amazon RDS Db2 实例的升级管理](Db2.Concepts.VersionMgmt.Supported.md)。
+ Amazon RDS 仅支持用于原生还原的离线和在线备份。Amazon RDS 不支持增量或 Delta 备份。
+ 您无法从与 RDS for Db2 数据库实例所在区域不同的 AWS 区域中的 Amazon S3 存储桶进行还原。
+ Amazon S3 将上传到 Amazon S3 存储桶的文件大小限制为 5TB。如果数据库备份文件超过 5TB，则将备份文件拆分为较小的文件。
+ Amazon RDS 不支持非防护外部例程、增量还原或 Delta 还原。
+ 您无法从加密的源数据库中还原，但可以还原到加密的 Amazon RDS 数据库实例。

根据您的配置，还原过程会有所不同。

如果 `USE_STREAMING_RESTORE` 设置为 `TRUE`，Amazon RDS 将在还原期间直接从 S3 存储桶流式传输您的备份。流式传输可显著降低存储要求。您只需预调配等于或大于备份大小或原始数据库大小（以较大者为准）的存储空间即可。

如果 `USE_STREAMING_RESTORE` 设置为 `FALSE`，Amazon RDS 将首先将备份下载到 RDS for Db2 数据库实例，然后提取备份。提取需要额外的存储空间。您必须预调配的存储空间大小应等于或大于备份大小与原始数据库大小之和。

还原数据库的最大大小等于支持的最大数据库大小减去还原过程中临时存储所需的所有空间。

## 将数据库备份到 Amazon S3
<a name="db2-linux-backing-up-database"></a>

要在 Amazon S3 上备份数据库，您需要以下 AWS 组件：
+ *用于存储备份文件的 Amazon S3 存储桶*：上传您要迁移到 Amazon RDS 的所有备份文件。建议您使用离线备份进行可以应对停机的迁移。如果您已有一个 S3 存储桶，则可以使用该存储桶。如果没有 S3 存储桶，请参阅《Amazon S3 用户指南》**中的[创建存储桶](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)。
**注意**  
如果数据库很大，需要很长时间才能传输到 S3 存储桶，则可以订购 AWS Snow Family 设备并要求 AWS 执行备份。将文件复制到设备并将其返还给 Snow 系列团队后，该团队会将备份的映像传输到您的 S3 存储桶。有关详情，请参阅 [AWS Snow Family 文档](https://docs.aws.amazon.com/snowball/)。
+ *访问 S3 存储桶的 IAM 角色*：如果已经有一个 IAM 角色，则可以使用该角色。如果您还没有角色，请参阅[步骤 2：创建 IAM 角色并附加您的 IAM policy](db2-s3-integration.md#db2-creating-iam-role)。
+ *一个 IAM 策略，其中包含附加到 IAM 角色的信任关系和权限*：有关更多信息，请参阅[步骤 1：创建 IAM policy](db2-s3-integration.md#db2-creating-iam-policy)。
+ *添加到 RDS for Db2 数据库实例的 IAM 角色*：有关更多信息，请参阅[步骤 3：将您的 IAM 角色添加到 RDS for Db2 数据库实例](db2-s3-integration.md#db2-adding-iam-role)。

## 创建默认自动存储组
<a name="db2-linux-creating-auto-storage-group"></a>

源数据库必须具有默认自动存储组。如果数据库没有默认自动存储组，则必须创建一个这类组。

**创建默认自动存储组**

1. 连接到您的源数据库。在以下示例中，将 *source\$1database* 替换为数据库的名称。

   ```
   db2 connect to source_database 
   ```

1. 创建自动存储组并将其设置为默认存储组。在以下示例中，将 *storage\$1path* 替换为存储组所在位置的绝对路径。

   ```
   db2 "create stogroup IBMSTOGROUP ON storage_path set as default"
   ```

1. 终止后端进程。

   ```
   db2 terminate
   ```

1. 停用数据库并停止所有数据库服务。在以下示例中，将 *source\$1database* 替换为您为其创建了存储组的数据库的名称。

   ```
   db2 deactivate db source_database
   ```

1. 备份数据库。在以下示例中，将 *source\$1database* 替换为您为其创建了存储组的数据库的名称。将 *file\$1system\$1path* 替换为要在其中备份数据库的绝对路径。

   ```
   db2 backup database source_database to file_system_path 
   ```

## 还原 Db2 数据库
<a name="db2-linux-restoring-db2-database"></a>

在 Amazon S3 上备份数据库并创建自动存储组后，就可以将 Db2 数据库还原到 RDS for Db2 数据库实例了。

**将 Db2 数据库从 Amazon S3 存储桶还原到 RDS for Db2 数据库实例**

1. 连接到 RDS for Db2 数据库实例。有关更多信息，请参阅 [连接到 Db2 数据库实例](USER_ConnectToDb2DBInstance.md)。

1. （可选）要确保为您的数据库配置了最佳设置，请通过调用 [rdsadmin.show\$1configuration](db2-sp-managing-databases.md#db2-sp-show-configuration) 来检查以下参数的值：
   + `RESTORE_DATABASE_NUM_BUFFERS`
   + `RESTORE_DATABASE_PARALLELISM`
   + `RESTORE_DATABASE_NUM_MULTI_PATHS`
   + `USE_STREAMING_RESTORE`

   根据需要使用 [rdsadmin.set\$1configuration](db2-sp-managing-databases.md#db2-sp-set-configuration) 修改这些值。正确配置这些参数可以显著提高还原包含大量数据的数据库时的性能。对于大多数迁移场景，我们建议将 `USE_STREAMING_RESTORE` 设置为 `TRUE`，因为它可以降低存储需求并可以提高还原速度。

1. 通过调用 `rdsadmin.restore_database` 还原您的数据库。有关更多信息，请参阅 [rdsadmin.restore\$1database](db2-sp-managing-databases.md#db2-sp-restore-database)。