本页面介绍了如何确认迁移的数据完整且准确。您至少应验证数据库和表是否存在于迁移后的 AlloyDB for PostgreSQL 集群中。
- 使用客户端或查询工具连接到 AlloyDB for PostgreSQL 集群,以便对迁移的数据库运行 SQL 命令(例如, Google Cloud 控制台中的 AlloyDB Studio 或
psql)。如需详细了解如何连接到 AlloyDB for PostgreSQL 集群和实例,请参阅 AlloyDB for PostgreSQL 连接概览。
- 运行与客户端无关的 ANSI SQL 查询,以验证迁移的数据:
列出所有数据库
运行以下查询,验证您的 AlloyDB for PostgreSQL 目标集群是否包含您迁移的所有源数据库:
SELECT datname FROM pg_database WHERE datistemplate = false;
列出数据库中的所有表
运行以下查询,列出数据库中的所有用户表:
SELECT table_schema, table_name FROM information_schema.tables WHERE table_schema NOT IN ('pg_catalog', 'information_schema') AND table_type = 'BASE TABLE' ORDER BY table_schema, table_name;
检查表列定义和数据类型
运行以下查询,验证特定表的列名称、数据类型和可为 null 性:
SELECT column_name, data_type, character_maximum_length, is_nullable, column_default FROM information_schema.columns WHERE table_name = 'TABLE_NAME' ORDER BY ordinal_position;
检查表行数和示例数据
运行以下查询,验证行数并检查特定表中的示例行:
- 验证总行数:
SELECT COUNT(*) FROM TABLE_NAME;
- 查看已迁移记录的示例:
SELECT * FROM TABLE_NAME LIMIT 10;
验证主键和约束
运行以下查询,验证主键、外键和唯一性约束条件是否已正确创建:
SELECT table_schema, table_name, constraint_name, constraint_type FROM information_schema.table_constraints WHERE table_schema NOT IN ('pg_catalog', 'information_schema') ORDER BY table_schema, table_name, constraint_type;
验证索引
运行以下查询,验证是否已在迁移的表上创建索引:
SELECT schemaname, tablename, indexname, indexdef FROM pg_indexes WHERE schemaname NOT IN ('pg_catalog', 'information_schema') ORDER BY schemaname, tablename, indexname;
验证序列
运行以下查询,验证迁移后的数据库中是否存在序列:
SELECT sequence_schema, sequence_name, data_type FROM information_schema.sequences ORDER BY sequence_schema, sequence_name;
- 验证总行数:
- 将这些查询的结果与源数据库进行比较,确保所有对象、行数和架构结构都一致。
对于运行 COUNT(*) 查询可能需要大量资源的大型表,请考虑使用开源
数据验证工具 (DVT)。它提供了一种自动化且可重复的方法,可在不同环境中执行自定义验证。
如果您检查的所有内容都符合预期,则表示 Database Migration Service 已正确迁移数据。