Halaman ini berisi skrip yang membantu proses debug dan penggunaan PostgreSQL.
Memigrasikan operasi UPDATE dan DELETE untuk tabel kunci non-utama
Untuk tabel yang tidak memiliki kunci utama, dalam migrasi standar, Database Migration Service mendukung migrasi snapshot awal dan pernyataan INSERT selama fase pengambilan data perubahan (CDC). Namun, pernyataan UPDATE dan DELETE tidak direplikasi secara otomatis untuk tabel kunci non-utama dalam migrasi standar (migrasi mulai cepat mendukung replikasi operasi UPDATE dan DELETE saat Anda mengonfigurasi REPLICA IDENTITY).
Untuk mendeteksi dan menyinkronkan operasi UPDATE dan DELETE yang tidak ada secara manual dalam migrasi standar, selesaikan prosedur di bagian berikut.
Mendeteksi data yang hilang antara sumber dan cluster tujuan AlloyDB untuk PostgreSQL
- Identifikasi tabel mana di database sumber Anda yang tidak memiliki kunci utama:
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;
- Sebelum memulai tugas migrasi, untuk semua tabel tanpa kunci utama, catat statistik modifikasinya:
Dengan: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: jumlah baris yang disisipkann_tup_upd: jumlah baris yang diperbarui (termasuk baris yang diperbarui HOT)n_tup_del: jumlah baris yang dihapus
- Simpan statistik dasar pengukuran ini ke tabel atau file.
- Setelah penyiapan migrasi selesai dan sebelum mempromosikan tugas migrasi, jalankan kueri lagi.
- Bandingkan statistik awal dengan statistik terbaru. Jika
n_tup_updataun_tup_delberubah selama migrasi, pembaruan atau penghapusan terjadi pada sumber yang tidak dicatat oleh CDC.
Memigrasikan data secara manual dari sumber ke cluster AlloyDB untuk PostgreSQL tujuan
Jika Anda mendeteksi perbedaan pada tabel tanpa kunci utama, Anda dapat menyinkronkan data menggunakan salah satu opsi berikut:
- Opsi 1: Bandingkan data secara manual antara database sumber dan cluster AlloyDB untuk PostgreSQL tujuan menggunakan kueri checksum atau skrip delta, dan jalankan update SQL yang sesuai untuk data yang berbeda.
- Opsi 2: Jalankan
pg_dumpdanpg_restorekhusus untuk tabel tanpa kunci utama selama cutover pemeliharaan aplikasi. - Opsi 3: Gunakan perintah
COPYPostgreSQL untuk mengekspor dan mengimpor data tabel. Lihat dokumentasi PostgreSQL untuk mengetahui informasi selengkapnya.