【发布时间】:2020-05-13 09:25:48
【问题描述】:
我正在将 PostgreSQL 9.6 从本地迁移到 RDS Aurora PostgreSQL 11.4。
第一步,使用 pg_dump 导出数据库元数据(超过 700 个模式)。
接下来,想验证我没有遗漏任何约束、对象以及源和数据库是否对齐。
将 Liquibase 与 DiffChangeLog 结合使用会产生误报,例如:
- 当源中存在约束时,从目标中删除它们。
- 在源和目标中存在具有相同源代码的视图时创建视图。
这是用于单个模式的 Liquibase 命令。 我必须为数据库中的所有模式编写超过 700 个脚本:
c:\> liquibase.bat ^
--changeLogFile=d:\users\compare\changelog.postgresql.sql ^
--outputFile=d:\users\compare\Database_diff.txt ^
--classpath="D:\Program Files\liquibase\postgresql-42.2.12.jar" ^
--driver=org.postgresql.Driver ^
--url=jdbc:postgresql://<source_endpoint>:5432/<source_database> ^
--username=<source_username> ^
--password=<source_password> ^
--defaultSchemaName=<source_schema> ^
--includeSchema=true ^
DiffChangeLog ^
--referenceUrl=jdbc:postgresql://<target_endpoint>:5432/<target_databas> ^
--referenceUsername=<target_username> ^
--referencePassword=<target_password> ^
--referenceDefaultSchemaName=<target_schema>
请告知如何避免误报结果。
【问题讨论】:
-
如果您已经在使用 Liquibase,那么为什么不将您的 Liquibase 更改日志应用到新服务器上呢?或者只是转储您当前的数据库并将其导入新数据库?
-
我使用 pg_dump 并用这个转储创建了新数据库。我只想使用 Liquibase 验证在 pg_dump/pg_restore 过程中没有丢失任何内容。
标签: postgresql liquibase