0

我尝试将我们的 Postgres 数据库迁移到 Aurora postgres,首先我创建了一个正常任务,它只迁移所有表,除了它的约束。

我尝试克隆我们的数据库

我下载了 AWS SCT (Schema Conversion Tool) 然后设置我的配置以生成迁移报告,这是报告

我们完成了对您的 PostgreSQL 源数据库的分析,并估计如果您选择 Amazon Aurora(兼容 PostgreSQL)作为迁移目标,100% 的数据库存储对象和 99.1% 的数据库代码对象可以自动转换或只需极少的更改。数据库存储对象包括模式、表、表约束、索引、类型、序列和外部表。数据库代码对象包括触发器、视图、物化视图、函数、域、规则、运算符、排序规则、fts 配置、fts 字典和聚合。根据源代码语法分析,我们估计您的代码中有 99.9%(基于 # 行代码)可以自动转换为 Amazon Aurora(兼容 PostgreSQL)。要完成迁移,

我的问题:

1-有没有办法自动化包括我的源数据库中的所有内容

2- 报告提到we recommend 133 conversion action(s)我可以在哪里找到这些转化操作。

3-持续迁移是否安全,因为在我的情况下,我们需要每天运行迁移。

4

2 回答 2

2

Sequence、Index 和 Constraint 没有迁移,AWS 官方文档中提到了。

你可以使用这个来源。这将帮助您一次迁移序列、索引和约束。

ps:这不包括视图和例程。

于 2022-01-16T12:45:32.700 回答
1
  • AWS 中的 AFAIK 无法自动执行所有操作,如果存在,那么它已经添加到 SCT 中。但是,如果代码/DDL/函数中发生类似的错误,例如某些数据类型转换。您可以创建一个脚本,该脚本将进行模式转储并将所有这些数据类型转换为所需的数据类型。

  • 在SCT 工具中选择 SQL Conversion Actions 选项卡。 SQL Conversion Actions 选项卡包含无法自动转换的 SQL 代码项的列表。还有关于如何手动转换 SQL 代码的建议。您可以查看错误并进行相应的更改。

如果您在 aurora 中迁移到相同版本的 PG,您可以只使用模式转储并将其恢复到目标 aurora,然后使用 DMS 设置完全加载/持续复制,您不必考虑 SCT(大部分时间为我工作)。只需确保您遵守特定于 PG 版本的极光限制

  • 我们一直在我们的项目中使用正在进行的迁移,它运行良好。我们已经开发了一些最佳实践,但会因项目而异

    1. 必须首先在目标上进行 DDL 更改,并在执行时停止复制并在完成后恢复
    2. 将具有高事务的表分隔为不同的 DMS 任务,因为这将帮助您进行故障排除,并且您的其余表仍然可以工作
    3. 始终牢记 DMS 复制数据,而不是视图/功能/过程
    4. 主动监控任务和复制实例

我想建议如果您正在执行同构迁移(PG -> PG),您应该考虑 pg_dump 和 pg_restore 对于相同的版本来说简单而复杂,并且AWS aurora支持它。

于 2021-06-20T08:53:10.633 回答