Proses debug dan alat lainnya

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

  1. 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;
  2. Sebelum memulai tugas migrasi, untuk semua tabel tanpa kunci utama, catat statistik modifikasinya:
    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');
    Dengan:
    • n_tup_ins: jumlah baris yang disisipkan
    • n_tup_upd: jumlah baris yang diperbarui (termasuk baris yang diperbarui HOT)
    • n_tup_del: jumlah baris yang dihapus
  3. Simpan statistik dasar pengukuran ini ke tabel atau file.
  4. Setelah penyiapan migrasi selesai dan sebelum mempromosikan tugas migrasi, jalankan kueri lagi.
  5. Bandingkan statistik awal dengan statistik terbaru. Jika n_tup_upd atau n_tup_del berubah 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_dump dan pg_restore khusus untuk tabel tanpa kunci utama selama cutover pemeliharaan aplikasi.
  • Opsi 3: Gunakan perintah COPY PostgreSQL untuk mengekspor dan mengimpor data tabel. Lihat dokumentasi PostgreSQL untuk mengetahui informasi selengkapnya.