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, Database Migration Service mendukung migrasi snapshot awal dan pernyataan INSERT selama fase pengambilan data perubahan (CDC).

Untuk memperbarui proses UPDATE dan DELETE yang tidak ada, lihat bagian selanjutnya dalam dokumen ini.

Mendeteksi data yang hilang antara instance sumber dan tujuan Cloud SQL

  1. Identifikasi tabel 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 migrasi, untuk semua tabel tanpa kunci utama, periksa apakah ada update atau penghapusan menggunakan kueri ini:
    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 hasil ini dalam tabel terpisah atau dalam file.
  4. Setelah penyiapan migrasi selesai, jalankan kueri lagi.
  5. Bandingkan hasilnya dengan hasil dari langkah 3.

Jika ada perbedaan nilai n_tup_upd atau n_tup_del di sumber selama migrasi, mungkin ada beberapa pembaruan atau penghapusan di sumber.

Memigrasikan data secara manual dari sumber ke instance tujuan Cloud SQL

Jika mendeteksi adanya perbedaan antara instance sumber dan tujuan Cloud SQL, Anda dapat memigrasikan data menggunakan salah satu opsi berikut:

  • Opsi 1: Bandingkan data secara manual antara sumber dan tujuan Cloud SQL, lalu jalankan kueri SQL yang sesuai untuk memperbarui hanya data yang berbeda antara sumber dan replika.

  • Opsi 2: Jalankan pg_dump dan pg_restore untuk tabel tanpa kunci utama. Lihat Mengekspor data dari server PostgreSQL lokal menggunakan pg_dump untuk mengetahui informasi selengkapnya.

  • Opsi 3: Gunakan perintah COPY PostgreSQL untuk memigrasikan data Anda. Lihat dokumentasi PostgreSQL untuk mengetahui informasi selengkapnya. Perhatikan bahwa langkah ini mengharuskan VM replika dapat terhubung ke VM sumber.