Depuração e outras ferramentas

Esta página inclui scripts que ajudam na depuração e no uso do PostgreSQL.

Migrar operações UPDATE e DELETE para tabelas sem chave primária

Para tabelas sem chaves primárias, em migrações padrão, o Database Migration Service oferece suporte à migração de snapshots iniciais e instruções INSERT durante a fase de captura de dados alterados (CDC). No entanto, as instruções UPDATE e DELETE não são replicadas automaticamente para tabelas sem chave primária em migrações padrão. As migrações de início rápido oferecem suporte à replicação de operações UPDATE e DELETE quando você configura REPLICA IDENTITY.

Para detectar e sincronizar manualmente as operações UPDATE e DELETE ausentes em migrações padrão, conclua os procedimentos nas seções a seguir.

Detectar dados ausentes entre a origem e o cluster de destino do AlloyDB para PostgreSQL

  1. Identifique quais tabelas no banco de dados de origem não têm chaves primárias:
    SELECT tab.table_schema,
           tab.table_name
    FROM information_schema.tables tab
    LEFT JOIN information_schema.table_constraints tco 
              ON tab.table_schema = tco.table_schema
              AND tab.table_name = tco.table_name 
              AND tco.constraint_type = 'PRIMARY KEY'
    WHERE tab.table_type = 'BASE TABLE'
          AND tab.table_schema NOT IN ('pg_catalog', 'information_schema', 'pglogical')
          AND tco.constraint_name IS NULL
    ORDER BY table_schema,
             table_name;
  2. Antes de iniciar o job de migração, registre as estatísticas de modificação de todas as tabelas sem chaves primárias:
    SELECT schemaname,
           relname,
           n_tup_ins,
           n_tup_upd,
           n_tup_del
    FROM pg_stat_user_tables
    WHERE schemaname NOT IN ('pglogical', 'pg_catalog', 'information_schema');
    Em que:
    • n_tup_ins: número de linhas inseridas
    • n_tup_upd: número de linhas atualizadas (inclui linhas atualizadas por HOT)
    • n_tup_del: número de linhas excluídas
  3. Salve essas estatísticas de referência em uma tabela ou arquivo.
  4. Depois que a configuração da migração for concluída e antes de promover o job de migração, execute a consulta novamente.
  5. Compare as estatísticas iniciais com as mais recentes. Se n_tup_upd ou n_tup_del mudaram durante a migração, ocorreram atualizações ou exclusões na origem que não foram capturadas pela CDC.

Migrar dados manualmente da origem para o cluster de destino do AlloyDB para PostgreSQL

Se você detectar discrepâncias em tabelas sem chaves primárias, sincronize os dados usando uma das seguintes opções:

  • Opção 1: compare manualmente os dados entre o banco de dados de origem e o cluster de destino do AlloyDB para PostgreSQL usando consultas de checksum ou scripts delta e execute as atualizações SQL apropriadas para registros divergentes.
  • Opção 2: execute pg_dump e pg_restore especificamente para as tabelas sem chaves primárias durante a transição de manutenção do aplicativo.
  • Opção 3: use o comando COPY do PostgreSQL para exportar e importar dados de tabelas. Consulte a documentação do PostgreSQL para mais informações.