问题描述
我正在尝试将我们的 Postgres 数据库迁移到 aurora postgres 首先,我创建了一个普通任务,它仅迁移除约束之外的所有表。
我尝试克隆我们的数据库
我下载了 AWS SCT(架构转换工具),然后设置了我的配置以生成迁移报告,这是报告
我们完成了对您的 Postgresql 源数据库的分析,并 估计 100% 的数据库存储对象和 99.1% 的 数据库代码对象可以自动转换或以最少的 如果您选择 Amazon aurora(兼容 Postgresql)作为您的 迁移目标。数据库存储对象包括模式、表、 表约束、索引、类型、序列和外部表。 数据库代码对象包括触发器、视图、物化视图、 功能、域、规则、运算符、排序规则、fts 配置、 fts 字典和聚合。基于源代码语法 分析,我们估计您代码的 99.9%(基于 # 行代码) 可以转换为 Amazon aurora(兼容 Postgresql) 自动地。要完成迁移,我们建议进行 133 转换 操作范围从简单的任务到中等复杂的操作到 复杂的转化操作。
我的问题:
2- 报告提到了 if ("X" in (board[0][0] and board[2][0] and board[4][0])) or ("X" in (board[0][0] and board[0][2] and board[0][4])):
print("X wins")
board = [[" ","|"," "," "],["-","-","-"],[" ","-"]]
,我可以在其中找到这些转化操作。
3- 持续迁移是否安全,因为在我的情况下,我们需要每天运行迁移。
解决方法
-
AWS 中的 AFAIK 无法自动执行所有操作,如果存在,那么它已经添加到 SCT 中了。但是,如果在代码/DDL/函数中发生类似的错误,如某些数据类型转换。您可以创建一个脚本来进行模式转储并将所有这些数据类型转换为所需的数据类型。
-
在 SCT tool. 中选择 SQL 转换操作选项卡 SQL 转换操作选项卡包含无法自动转换的 SQL 代码项列表。还有关于如何手动转换 SQL 代码的建议。您可以查看错误并进行相应更改。
如果您要迁移到 Aurora 中相同版本的 PG,您可以只进行模式转储并将其恢复到目标 Aurora,然后使用 DMS 设置完整加载/持续复制,而您不必采取 SCT考虑到(大部分时间为我工作)。只要确保您遵守 PG 版本特有的极光 limitations
-
我们一直在我们的项目中使用持续迁移,它运行良好。我们已经开发了一些最佳实践,但会因项目而异
- 必须首先在目标上进行 DDL 更改,并在执行过程中停止复制并在完成后恢复
- 将事务较多的表与不同的 DMS 任务分开,因为这将帮助您进行故障排除,而您的其余表仍然可以工作
- 始终牢记 DMS 复制数据,而不是视图/函数/过程
- 主动监控任务和复制实例
我想建议如果您正在执行同构迁移(PG -> PG),您应该考虑 pg_dump 和 pg_restore 对于相同的版本来说既简单又复杂,并且 AWS aurora 支持它。