使用 AWS DMS 将 Oracle 数据库迁移到目标 RDS for PostgreSQL 数据库的最佳实践

数据迁移
云迁移
0
0
<!--StartFragment--> 0 我想将数据从 Oracle 源数据库迁移到 Amazon Relation Database Service ([Amazon RDS](https://aws.amazon.com/cn/rds/?trk=cndc-detail)) for PostgreSQL 目标数据库。使用 [AWS Database Migration Service](https://aws.amazon.com/cn/dms/?trk=cndc-detail)s(AWS DMS)将数据从 Oracle 迁移到 PostgreSQL 时? ## 解决方法 ### 从 Oracle 迁移到 PostgreSQL 数据库的最佳实践 * 在开始迁移数据之前,请使用[必要的先决条件](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html)配置 Oracle 源数据库。 * 通过在任何其他 QA/DEV 数据库环境中使用相同的生产数据来测试迁移。根据结果,您可以继续进行生产迁移。请确保在测试和生产迁移中使用相同的 AWS DMS 配置。 * 为您的 AWS DMS 实例预置足够的 CPU、内存、存储和 IOPS,以避免在迁移期间出现资源争用。有关更多信息,请参阅[为迁移选择合适的 AWS DMS 复制实例](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_ReplicationInstance.Types.html)和[为复制实例选择最佳大小](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_BestPractices.SizingReplicationInstance.html)。有关升级实例相关费用的更多信息,请参阅 [AWS 数据库迁移服务定价](https://aws.amazon.com/dms/pricing/)。配置目标 [Amazon RDS](https://aws.amazon.com/cn/rds/?trk=cndc-detail) 实例时,请考虑相同的注意事项。 * 如果源数据库包含大量表,且工作负载繁重,则将这些表拆分到多个 AWS DMS 任务中。根据表在源上的大小、应用程序流量模式以及是否存在 LOB 列来拆分表。如果表有很多 LOB 列,并且源上的写入流量很高,则为该表创建单独的任务。 * 使用并行满负载以缩短繁重工作负载的迁移时间。有关更多信息,请参阅[对选定的表、视图和集合使用并行负载](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Tablesettings.html#CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Tablesettings.ParallelLoad)。 * 迁移期间,关闭目标数据库上的备份和特定于数据库的日志(例如二进制、常规、审计和 PG 查询日志)。重新打开上述备份和日志以解决任何问题。 * 迁移期间,关闭目标数据库上的触发器、流程、其他 cron 作业和事件计划程序。 * 迁移期间,避免在目标 RDS 数据库上使用多可用区概念。 * 迁移期间,请避免将任何其他外部客户端流量应用到目标数据库。 * 开始复制的变更数据捕获(CDC)阶段之前,在目标数据库上添加任意二级索引。 * 迁移前,关闭目标上的外键。使用目标额外连接属性(ECA)/端点设置来执行此操作。有关更多信息,请参阅[将 PostgreSQL 数据库用作 AWS Database Migration Service 的目标](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.PostgreSQL.html)。 ``` afterConnectScript=SET session_replication_role='replica' ``` * 使用优化的 LOB 设置(如有限或内联 LOB)进行迁移。 * 在使用批量应用 CDC 方法之前,使用默认事务 CDC 应用测试您的工作负载。有关更多信息,请参阅[如何使用 DMS 批量应用功能来提高 CDC 复制性能?](https://repost.aws/zh-Hans/knowledge-center/dms-batch-apply-cdc-replication) * 在目标端点设置中增加 **executeTimeout** 的值。此值设置 PostgreSQL 实例的客户端语句超时。默认值为 60 秒。 * 如果要为 ID 列使用序列,则将目标上的值设置为高于源上的值。确保目标值在迁移割接日期仍高于源值。这种方法可防止迁移后序列 ID 发生冲突。 * [若要增强满负载阶段的性能](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Tasks.CustomizingTasks.TaskSettings.FullLoad.html),请使用如下设置: <!----> * **MaxFullLoadSubTasks** – 默认值为 8,最大值为 49。此设置很有用,但请确保您有足够的可用资源。 * **CommitRate** – 使用此设置来指示可以一起传输的最大记录数量。 <!----> * 对于处于满负载阶段的完整 LOB 模式 – 源中的 N 行 = 目标中的 N 条插入 + N 个更新 = N 个事件,其中 CommitRate = N。 * 对于处于满负载阶段的有限 LOB 模式 – 在 CSV 文件中写入 N 行,其中 CommitRate = N)。 <!----> * 对于大型表,请增加 CSV 文件的大小。此操作由目标端点设置中的 **maxFileSize** 控制。 ### 将 Oracle 数据库迁移到 PostgreSQL 数据库 **注意**:在继续执行这些步骤之前,请按照[先决条件](https://docs.aws.amazon.com/dms/latest/sbs/chap-rdsoracle2postgresql.prerequisites.html)中的说明准备源 Oracle 数据库。 1.    在本地计算机上安装 SQL 驱动程序和 [AWS Schema Conversion Tool(AWS SCT)](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Installing.html)。 2.    配置您的 Oracle 源数据库和 PostgreSQL 目标数据库。 3.    使用 AWS SCT 将 Oracle 架构转换为 PostgreSQL。 4.    创建 AWS DMS 复制实例。 5.    创建您的 AWS DMS 源端点和目标端点。 6.    创建并运行您的 AWS DMS 任务。 7.    在 **Table mappings**(表映射)下,应用转换规则。添加 **rule-action** 参数,其值为 **convert-lowercase**。默认情况下,Oracle 引擎以大写形式存储所有对象名称,但 PostgreSQL 以小写形式存储所有对象名称。 8.    创建满负载和 CDC AWS DMS 任务以复制您的数据。使用 [StopTaskCachedChangesNotApplied](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Tasks.CustomizingTasks.TaskSettings.FullLoad.html) 在满负载阶段完成后停止任务。现在,创建二级索引。 9.    切换到 PostgreSQL。 *** ## 相关信息 [将 Oracle 数据库迁移到 PostgreSQL](https://docs.aws.amazon.com/dms/latest/sbs/chap-rdsoracle2postgresql.html) [如何将您的 Oracle 数据库迁移到 PostgreSQL](https://aws.amazon.com/blogs/database/how-to-migrate-your-oracle-database-to-postgresql/) <!--EndFragment-->
0
目录
关闭