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
- 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;
- Antes de iniciar o job de migração, registre as estatísticas de modificação de todas as tabelas sem chaves primárias:
Em que: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');
n_tup_ins: número de linhas inseridasn_tup_upd: número de linhas atualizadas (inclui linhas atualizadas por HOT)n_tup_del: número de linhas excluídas
- Salve essas estatísticas de referência em uma tabela ou arquivo.
- Depois que a configuração da migração for concluída e antes de promover o job de migração, execute a consulta novamente.
- Compare as estatísticas iniciais com as mais recentes. Se
n_tup_updoun_tup_delmudaram 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_dumpepg_restoreespecificamente para as tabelas sem chaves primárias durante a transição de manutenção do aplicativo. - Opção 3: use o comando
COPYdo PostgreSQL para exportar e importar dados de tabelas. Consulte a documentação do PostgreSQL para mais informações.