验证迁移

本页面介绍了如何确认迁移的数据完整且准确。您至少应验证数据库和表是否存在于迁移后的 AlloyDB for PostgreSQL 集群中。

  1. 使用客户端或查询工具连接到 AlloyDB for PostgreSQL 集群,以便对迁移的数据库运行 SQL 命令(例如, Google Cloud 控制台中的 AlloyDB Studio 或 psql)。

    如需详细了解如何连接到 AlloyDB for PostgreSQL 集群和实例,请参阅 AlloyDB for PostgreSQL 连接概览。

  2. 运行与客户端无关的 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;

    检查表行数和示例数据

    运行以下查询,验证行数并检查特定表中的示例行:

    1. 验证总行数:
      SELECT COUNT(*) FROM TABLE_NAME;
    2. 查看已迁移记录的示例:
      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;
  3. 将这些查询的结果与源数据库进行比较,确保所有对象、行数和架构结构都一致。

对于运行 COUNT(*) 查询可能需要大量资源的大型表,请考虑使用开源 数据验证工具 (DVT)。它提供了一种自动化且可重复的方法,可在不同环境中执行自定义验证。

如果您检查的所有内容都符合预期,则表示 Database Migration Service 已正确迁移数据。