Questa pagina include script che aiutano a eseguire il debug e a utilizzare PostgreSQL.
Esegui la migrazione delle operazioni UPDATE e DELETE per le tabelle senza chiave primaria
Per le tabelle senza chiavi primarie, nelle migrazioni standard Database Migration Service supporta la migrazione degli snapshot iniziali e delle istruzioni INSERT durante la fase Change Data Capture (CDC). Tuttavia, le istruzioni UPDATE e DELETE non vengono replicate automaticamente per le tabelle senza chiave primaria nelle migrazioni standard (le migrazioni con avvio rapido supportano la replica delle operazioni UPDATE e DELETE quando configuri REPLICA IDENTITY).
Per rilevare e sincronizzare manualmente le operazioni UPDATE e DELETE mancanti nelle migrazioni standard, completa le procedure descritte nelle sezioni seguenti.
Rileva i dati mancanti tra l'origine e il cluster di destinazione AlloyDB per PostgreSQL
- Identifica le tabelle nel database di origine che non hanno chiavi primarie:
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;
- Prima di avviare il job di migrazione, registra le statistiche di modifica di tutte le tabelle senza chiavi primarie:
Dove: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: il numero di righe inseriten_tup_upd: numero di righe aggiornate (incluse le righe aggiornate HOT)n_tup_del: numero di righe eliminate
- Salva queste statistiche di riferimento in una tabella o un file.
- Al termine della configurazione della migrazione e prima di promuovere il job di migrazione, esegui nuovamente la query.
- Confronta le statistiche iniziali con quelle più recenti. Se
n_tup_updon_tup_delsono cambiati durante la migrazione, nell'origine si sono verificati aggiornamenti o eliminazioni che non sono stati acquisiti da CDC.
Esegui manualmente la migrazione dei dati dal cluster AlloyDB per PostgreSQL di origine a quello di destinazione
Se rilevi discrepanze nelle tabelle senza chiavi primarie, puoi sincronizzare i dati utilizzando una delle seguenti opzioni:
- Opzione 1: confronta manualmente i dati tra il database di origine e il cluster AlloyDB per PostgreSQL di destinazione utilizzando query di checksum o script delta ed esegui gli aggiornamenti SQL appropriati per i record divergenti.
- Opzione 2: esegui
pg_dumpepg_restorein modo specifico per le tabelle senza chiavi primarie durante il cutover della manutenzione dell'applicazione. - Opzione 3: utilizza il comando
COPYdi PostgreSQL per esportare e importare i dati della tabella. Per ulteriori informazioni, consulta la documentazione di PostgreSQL.