针对 Amazon RDS for Db2 从 Linux 迁移到 Linux,停机时间接近零 - Amazon Relational Database Service

针对 Amazon RDS for Db2 从 Linux 迁移到 Linux,停机时间接近零

使用这种迁移方法,您可以将基于 Linux 的 Db2 数据库从自行管理的 Db2 数据库(源)迁移到 Amazon RDS for Db2。这种方法可使应用程序或用户最大限度地减少甚至没有中断或停机时间。这种方法可以备份您的数据库并通过日志重播进行还原,这有助于防止中断正在进行的操作并提供数据库的高可用性。

为了实现停机时间接近零的迁移,RDS for Db2 实施带日志重播的还原。此方法对自行管理的基于 Linux 的 Db2 数据库进行备份,然后在 RDS for Db2 服务器上还原它。使用 Amazon RDS 存储过程,您可以应用后续的事务日志来使数据库保持最新。

停机时间接近零的迁移的限制和建议

以下限制和建议适用于使用停机时间接近零的迁移。

  • Amazon RDS 需要在线备份才能实现近乎零停机的迁移。这是因为在您上传存档的事务日志时,Amazon RDS 会使您的数据库处于前滚挂起状态。有关更多信息,请参阅 迁移 Db2 数据库

  • 您无法从与 RDS for Db2 数据库实例所在区域不同的 AWS 区域中的 Amazon S3 存储桶进行还原。

  • 如果您的 RDS for Db2 数据库实例已包含数据库,则无法还原数据库。

  • Amazon S3 将上传到 S3 存储桶的文件大小限制为 5TB。如果数据库备份文件超过 5TB,则将备份文件拆分为较小的文件。

  • Amazon RDS 不支持非防护外部例程、增量还原或 Delta 还原。

  • 您无法从加密的源数据库中还原,但可以还原到加密的 Amazon RDS 数据库实例。

还原数据库时,Amazon RDS 将复制备份,然后在 RDS for Db2 数据库实例上提取该备份。建议您为 RDS for Db2 数据库实例预调配存储空间,其大小等于或大于备份大小加上磁盘上原始数据库大小之和。

还原数据库的最大大小是支持的最大数据库大小减去备份的大小。例如,如果支持的最大数据库大小为 64TiB,备份的大小为 30TiB,则还原数据库的最大大小为 34TiB。

64 TiB - 30 TiB = 34 TiB

将数据库备份到 Amazon S3

要在 Amazon S3 上备份数据库,您需要以下 AWS 组件:

  • 用于存储备份文件的 Amazon S3 存储桶:上传您要迁移到 Amazon RDS 的所有备份文件。Amazon RDS 需要在线备份才能实现近乎零停机的迁移。如果您已有一个 S3 存储桶,则可以使用该存储桶。如果没有 S3 存储桶,请参阅《Amazon S3 用户指南》中的创建存储桶

    注意

    如果数据库很大,需要很长时间才能传输到 S3 存储桶,则可以订购 AWS Snow Family 设备并要求 AWS 执行备份。将文件复制到设备并将其返还给 Snow 系列团队后,该团队会将备份的映像传输到您的 S3 存储桶。有关更多信息,请参阅 AWS Snow Family 文档

  • 用于访问 S3 存储桶的 IAM 角色:如果您已经有一个 AWS Identity and Access Management(IAM)角色,则可以使用该角色。如果您还没有角色,请参阅步骤 2:创建 IAM 角色并附加您的 IAM policy

  • 一个 IAM 策略,其中包含附加到 IAM 角色的信任关系和权限:有关更多信息,请参阅步骤 1:创建 IAM policy

  • 添加到 RDS for Db2 数据库实例的 IAM 角色:有关更多信息,请参阅步骤 3:将您的 IAM 角色添加到 RDS for Db2 数据库实例

创建默认自动存储组

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

创建默认自动存储组
  1. 连接到您的源数据库。在以下示例中,将 source_database 替换为数据库的名称。

    db2 connect to source_database
  2. 创建自动存储组并将其设置为默认存储组。在以下示例中,将 storage_path 替换为存储组所在位置的绝对路径。

    db2 "create stogroup IBMSTOGROUP ON storage_path set as default"
  3. 终止后端进程。

    db2 terminate

迁移 Db2 数据库

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

执行停机时间接近零的迁移
  1. 对源数据库进行联机备份。有关更多信息,请参阅 IBM Db2 文档中的 BACKUP DATABASE 命令

  2. 将数据库备份复制到 Amazon S3 存储桶。有关使用 Amazon S3 的更多信息,请参阅 Amazon Simple Storage Service 用户指南

  3. 使用 RDS for Db2 数据库实例的 master_usernamemaster_password 连接到 rdsadmin 服务器。

    db2 connect to rdsadmin user master_username using master_password
  4. (可选)要确保为您的数据库配置了用于还原操作的最佳设置,您可以调用 rdsadmin.show_configuration 来检查 RESTORE_DATABASE_PARALLELISMRESTORE_DATABASE_NUM_BUFFERS 的值。根据需要,调用 rdsadmin.set_configuration 来更改这些值。显式设置这些值可以提高还原包含大量数据的数据库时的性能。

  5. 通过调用 rdsadmin.restore_database,在 RDS for Db2 服务器上还原备份。将 backup_type 设置为 ONLINE。有关更多信息,请参阅 rdsadmin.restore_database

  6. 将源服务器中的归档日志复制到 S3 存储桶。有关更多信息,请参阅 IBM Db2 文档中的归档日志记录

  7. 根据需要,通过调用 rdsadmin.rollforward_database 多次应用归档日志。将 complete_rollforward 设置为 FALSE 可使数据库保持 ROLL-FORWARD PENDING 状态。有关更多信息,请参阅 rdsadmin.rollforward_database

  8. 应用所有归档日志后,通过调用 rdsadmin.complete_rollforward 使数据库联机。有关更多信息,请参阅 rdsadmin.complete_rollforward

  9. 通过更新数据库的应用程序端点或更新 DNS 端点以将流量重定向到 RDS for Db2 服务器,将应用程序连接切换到 RDS for Db2 服务器。还可以使用 RDS for Db2 数据库端点在自行管理的 Db2 数据库上使用 Db2 自动客户端重新路由功能。有关更多信息,请参阅 IBM Db2 文档中的 Automatic client reroute description and setup

  10. (可选)关闭源数据库。