Mengonfigurasi database PostgreSQL sumber untuk migrasi berkelanjutan

Halaman ini menjelaskan cara mengonfigurasi instance database sumber untuk migrasi PostgreSQL homogen berkelanjutan ke cluster AlloyDB untuk PostgreSQL. Untuk mengetahui detail tentang versi sumber yang didukung, lihat Database sumber dan tujuan yang didukung. Jika Anda ingin menggunakan migrasi mulai cepat, ikuti panduan Menggunakan migrasi mulai cepat. Migrasi mulai cepat menyediakan alur migrasi yang disederhanakan yang menggunakan replikasi pgnative dan konektivitas khusus berdasarkan antarmuka Private Service Connect. Untuk mengetahui informasi selengkapnya, lihat Tentang migrasi mulai cepat dalam dokumentasi utama Database Migration Service.

Halaman ini mencakup prosedur mandiri untuk setiap sumber yang didukung:

Mengonfigurasi sumber PostgreSQL yang dihosting sendiri

Untuk mengonfigurasi instance sumber PostgreSQL yang dihosting sendiri (lokal atau dihosting di VM Compute Engine) untuk migrasi berkelanjutan, selesaikan langkah-langkah berikut:

  1. Untuk sumber PostgreSQL yang dihosting sendiri, Database Migration Service memigrasikan semua database pada instance sumber Anda, kecuali database template template0 dan template1.
  2. Pastikan instance sumber Anda menyertakan database postgres default. Jika database ini tidak ada, buat database sebelum mengonfigurasi migrasi Anda.
  3. Konfigurasikan autentikasi klien jaringan di file pg_hba.conf Anda. Tambahkan entri yang mengizinkan koneksi replikasi dan akses database dari rentang alamat IP cluster AlloyDB untuk PostgreSQL tujuan, rentang CIDR VPC, atau bastion host SSH terbalik:
    # Allow replication connections
    host  replication  MIGRATION_USER_ACCOUNT_NAME  DESTINATION_IP_OR_CIDR  md5
    # Allow database access
    host  all          MIGRATION_USER_ACCOUNT_NAME  DESTINATION_IP_OR_CIDR  md5

    Muat ulang konfigurasi PostgreSQL untuk menerapkan aturan pg_hba.conf:

    SELECT pg_reload_conf();
  4. Verifikasi ekstensi PostgreSQL yang diinstal di database sumber Anda. Database Migration Service tidak memigrasikan ekstensi yang tidak didukung oleh AlloyDB untuk PostgreSQL. Pastikan objek database sumber dan kueri aplikasi Anda tidak mereferensikan ekstensi yang tidak didukung. Hapus ekstensi dan referensi yang tidak didukung dari database sumber Anda sebelum melanjutkan.

    Ekstensi pg_cron tidak dimigrasikan secara otomatis oleh Database Migration Service, tetapi didukung di tujuan AlloyDB untuk PostgreSQL. Jika Anda menggunakan pg_cron di database sumber, instal ulang dan konfigurasikan di cluster AlloyDB untuk PostgreSQL tujuan setelah Anda mempromosikan migrasi.

  5. Buat akun pengguna migrasi khusus di instance sumber Anda dan berikan hak istimewa yang diperlukan:
    1. Hubungkan ke instance sumber menggunakan akun administratif, buat pengguna, dan tetapkan peran replikasi:
      CREATE USER MIGRATION_USER_ACCOUNT_NAME WITH PASSWORD 'PASSWORD';
      ALTER USER MIGRATION_USER_ACCOUNT_NAME WITH REPLICATION;
    2. Berikan izin yang diperlukan kepada akun pengguna migrasi untuk database postgres default serta setiap database yang ingin Anda migrasikan. Jalankan perintah berikut di setiap database untuk setiap skema, kecuali untuk skema informasi dan skema yang dimulai dengan pg_:
      GRANT USAGE ON SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME";
      GRANT USAGE ON SCHEMA pglogical TO PUBLIC;
      GRANT SELECT ON ALL TABLES IN SCHEMA pglogical TO "MIGRATION_USER_ACCOUNT_NAME";
      GRANT SELECT ON ALL TABLES IN SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME";
      GRANT SELECT ON ALL SEQUENCES IN SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME";
  6. Instal ekstensi pglogical di setiap database yang ingin Anda migrasikan, kecuali template0 dan template1:
    • Untuk PostgreSQL versi 9.4: Jalankan perintah berikut:
      CREATE EXTENSION IF NOT EXISTS pglogical;
      CREATE EXTENSION IF NOT EXISTS pglogical_origin;
    • Untuk PostgreSQL versi 9.5 dan yang lebih baru: Jalankan perintah berikut:
      CREATE EXTENSION IF NOT EXISTS pglogical;
  7. Pastikan tabel Anda memiliki kunci utama. Untuk migrasi berkelanjutan, replikasi logis PostgreSQL memerlukan tabel yang memiliki kunci utama untuk mereplikasi operasi UPDATE dan DELETE selama fase Change Data Capture (CDC):
    • Tabel dengan kunci utama mereplikasi semua operasi INSERT, UPDATE, dan DELETE secara otomatis.
    • Untuk tabel yang tidak memiliki kunci utama, Database Migration Service hanya mendukung migrasi snapshot awal dan pernyataan INSERT berikutnya selama fase CDC. Anda harus memigrasikan pernyataan UPDATE dan DELETE secara manual.

      Sebaiknya tambahkan kunci utama ke tabel yang belum memilikinya sebelum memulai migrasi. Untuk mempelajari cara membuat kueri guna mencantumkan tabel dalam database PostgreSQL tanpa kunci utama, atau cara memigrasikan operasi UPDATE dan DELETE secara manual, lihat Proses debug dan alat lainnya.

      Atau, Anda dapat mencoba menggunakan alur migrasi mulai cepat: skenario migrasi yang disederhanakan, yang memungkinkan Anda menggunakan REPLICA IDENTITY untuk memigrasikan tabel tanpa kunci utama. Untuk mengetahui informasi selengkapnya, lihat panduan Menggunakan migrasi mulai cepat.

  8. Sumber yang menjalankan PostgreSQL versi 9.5 dan yang lebih lama: Metrik penundaan replikasi tidak tersedia untuk instance sumber yang menjalankan PostgreSQL versi sebelum 9.6. Jika Anda ingin menggunakan metrik ini untuk melacak progres migrasi, lihat Mengaktifkan penundaan replikasi.
  9. Instal paket pglogical dan konfigurasikan parameter WAL dan replikasi di server PostgreSQL Anda:
    1. Instal paket pglogical di sistem operasi host server database Anda. Untuk paket dan petunjuk penginstalan distribusi Anda, lihat repositori GitHub pglogical.
    2. Hubungkan ke instance PostgreSQL Anda menggunakan akun administratif dan tetapkan parameter berikut:
      1. Tetapkan shared_preload_libraries untuk menyertakan 'pglogical':
        ALTER SYSTEM SET shared_preload_libraries = 'pglogical';
      2. Tetapkan wal_level ke 'logical':
        ALTER SYSTEM SET wal_level = 'logical';

        Lihat wal_level dalam dokumentasi PostgreSQL.

      3. Tetapkan wal_sender_timeout ke 0:
        ALTER SYSTEM SET wal_sender_timeout = 0;

        Nilai 0 menonaktifkan mekanisme waktu tunggu yang menghentikan koneksi replikasi tidak aktif. Lihat wal_sender_timeout.

      4. Tetapkan max_replication_slots setidaknya ke jumlah database yang akan dimigrasikan dikalikan dengan jumlah tugas migrasi, ditambah cadangan untuk sinkronisasi tabel:

        Misalnya, jika ada 5 database di instance sumber dan Anda membuat 2 tugas migrasi untuk sumber tersebut, jumlah slot replikasi harus minimal 5 * 2 = 10, ditambah jumlah slot replikasi yang sudah digunakan di sumber oleh tugas lain. Jika Anda berencana menggunakan setelan paralelisme dump data yang disesuaikan, pastikan untuk meningkatkan jumlah slot replikasi dan memverifikasi konfigurasi saat membuat tugas migrasi.

        ALTER SYSTEM SET max_replication_slots = MAX_REPLICATION_SLOTS;

        Nilai default untuk parameter ini adalah 10. Lihat max_replication_slots.

      5. Tetapkan max_wal_senders setidaknya ke nilai max_replication_slots ditambah jumlah pengirim yang sudah digunakan di instance Anda:

        Misalnya, jika parameter max_replication_slots ditetapkan ke 10, dan Anda sudah menggunakan 2 pengirim, jumlah proses pengirim WAL yang berjalan pada saat yang sama adalah 10 + 2 = 12. Jika Anda berencana menggunakan setelan paralelisme dump data yang disesuaikan, pastikan untuk meningkatkan jumlah pengirim dan memverifikasi konfigurasi saat membuat tugas migrasi.

        ALTER SYSTEM SET max_wal_senders = MAX_WAL_SENDERS;

        Nilai default untuk parameter ini adalah 10. Lihat max_wal_senders.

      6. Tetapkan max_worker_processes ke setidaknya jumlah database yang akan dimigrasikan ditambah proses worker yang ada di instance Anda. Jika Anda berencana menggunakan setelan paralelisme dump data yang disesuaikan, perhitungkan dua proses worker tambahan per koneksi (hingga maksimum 20 worker):
        ALTER SYSTEM SET max_worker_processes = MAX_WORKER_PROCESSES;

        Nilai default untuk parameter ini adalah 8. Lihat max_worker_processes.

  10. Mulai ulang server PostgreSQL Anda agar perubahan konfigurasi dapat diterapkan.

Mengonfigurasi sumber Amazon RDS for PostgreSQL

Untuk mengonfigurasi instance sumber Amazon RDS for PostgreSQL untuk migrasi berkelanjutan, selesaikan langkah-langkah berikut:

  1. Untuk sumber Amazon RDS for PostgreSQL, Database Migration Service memigrasikan semua database di instance sumber Anda, kecuali database template template0, template1, dan database internal AWS rdsadmin.
  2. Pastikan instance sumber Anda menyertakan database postgres default. Jika database ini tidak ada, buat database sebelum mengonfigurasi migrasi Anda.
  3. Konfigurasikan aturan masuk grup keamanan VPC Amazon RDS Anda. Izinkan koneksi TCP masuk di port 5432 dari rentang alamat IP cluster AlloyDB untuk PostgreSQL tujuan, rentang CIDR VPC, atau VM bastion host SSH terbalik.
  4. Verifikasi ekstensi PostgreSQL yang diinstal di database sumber Anda. Database Migration Service tidak memigrasikan ekstensi yang tidak didukung oleh AlloyDB untuk PostgreSQL. Pastikan objek database sumber dan kueri aplikasi Anda tidak mereferensikan ekstensi yang tidak didukung. Hapus ekstensi dan referensi yang tidak didukung dari database sumber Anda sebelum melanjutkan.

    Ekstensi pg_cron tidak dimigrasikan secara otomatis oleh Database Migration Service, tetapi didukung di tujuan AlloyDB untuk PostgreSQL. Jika Anda menggunakan pg_cron di database sumber, instal ulang dan konfigurasikan di cluster AlloyDB untuk PostgreSQL tujuan setelah Anda mempromosikan migrasi.

  5. Buat akun pengguna migrasi khusus di instance sumber Anda dan berikan hak istimewa yang diperlukan:
    1. Hubungkan ke instance sumber menggunakan akun administratif, buat pengguna, dan berikan peran rds_replication yang dikelola AWS:
      CREATE USER MIGRATION_USER_ACCOUNT_NAME WITH PASSWORD 'PASSWORD';
      GRANT rds_replication TO "MIGRATION_USER_ACCOUNT_NAME";
    2. Berikan izin yang diperlukan kepada akun pengguna migrasi untuk database postgres default serta setiap database yang ingin Anda migrasikan. Jalankan perintah berikut di setiap database untuk setiap skema, kecuali untuk skema informasi dan skema yang dimulai dengan pg_:
      GRANT USAGE ON SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME";
      GRANT USAGE ON SCHEMA pglogical TO PUBLIC;
      GRANT SELECT ON ALL TABLES IN SCHEMA pglogical TO "MIGRATION_USER_ACCOUNT_NAME";
      GRANT SELECT ON ALL TABLES IN SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME";
      GRANT SELECT ON ALL SEQUENCES IN SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME";
  6. Instal ekstensi pglogical di setiap database yang ingin Anda migrasikan, kecuali template0, template1, dan rdsadmin. Jalankan perintah berikut:
    CREATE EXTENSION IF NOT EXISTS pglogical;

    Untuk mengetahui detail selengkapnya tentang persyaratan, lihat Menggunakan ekstensi PostgreSQL dengan Amazon RDS untuk PostgreSQL dalam dokumentasi AWS.

  7. Pastikan tabel Anda memiliki kunci utama. Untuk migrasi berkelanjutan, replikasi logis PostgreSQL memerlukan tabel yang memiliki kunci utama untuk mereplikasi operasi UPDATE dan DELETE selama fase Change Data Capture (CDC):
    • Tabel dengan kunci utama mereplikasi semua operasi INSERT, UPDATE, dan DELETE secara otomatis.
    • Untuk tabel yang tidak memiliki kunci utama, Database Migration Service hanya mendukung migrasi snapshot awal dan pernyataan INSERT berikutnya selama fase CDC. Anda harus memigrasikan pernyataan UPDATE dan DELETE secara manual.

      Sebaiknya tambahkan kunci utama ke tabel yang belum memilikinya sebelum memulai migrasi. Untuk mempelajari cara membuat kueri guna mencantumkan tabel dalam database PostgreSQL tanpa kunci utama, atau cara memigrasikan operasi UPDATE dan DELETE secara manual, lihat Proses debug dan alat lainnya.

      Atau, Anda dapat mencoba menggunakan alur migrasi mulai cepat: skenario migrasi yang disederhanakan, yang memungkinkan Anda menggunakan REPLICA IDENTITY untuk memigrasikan tabel tanpa kunci utama. Untuk mengetahui informasi selengkapnya, lihat panduan Menggunakan migrasi mulai cepat.

  8. Konfigurasikan grup parameter DB kustom dan lampirkan ke instance Anda:
    1. Buat grup parameter kustom (lihat Bekerja dengan grup parameter DB dalam dokumentasi AWS) dan konfigurasikan parameter berikut:
      1. Tetapkan shared_preload_libraries untuk menyertakan pglogical.
      2. Tetapkan rds.logical_replication ke 1. Parameter ini mengaktifkan logging WAL logis di Amazon RDS. Lihat Replikasi logis untuk Amazon RDS for PostgreSQL.
      3. Tetapkan wal_sender_timeout ke 0. Nilai 0 menonaktifkan mekanisme waktu tunggu yang menghentikan koneksi replikasi tidak aktif.
      4. Tetapkan max_replication_slots setidaknya ke jumlah database yang akan dimigrasikan dikalikan dengan jumlah tugas migrasi, ditambah cadangan untuk sinkronisasi tabel:

        Misalnya, jika ada 5 database di instance sumber dan Anda membuat 2 tugas migrasi untuk sumber tersebut, jumlah slot replikasi harus minimal 5 * 2 = 10, ditambah jumlah slot replikasi yang sudah digunakan di sumber oleh tugas lain. Jika Anda berencana menggunakan setelan paralelisme dump data yang disesuaikan, pastikan untuk meningkatkan jumlah slot replikasi dan memverifikasi konfigurasi saat membuat tugas migrasi.

        Nilai default untuk parameter ini adalah 10.

      5. Tetapkan max_wal_senders setidaknya ke nilai max_replication_slots ditambah jumlah pengirim yang sudah digunakan di instance Anda:

        Misalnya, jika parameter max_replication_slots ditetapkan ke 10, dan Anda sudah menggunakan 2 pengirim, jumlah proses pengirim WAL yang berjalan pada saat yang sama adalah 10 + 2 = 12. Jika Anda berencana menggunakan setelan paralelisme dump data yang disesuaikan, pastikan untuk meningkatkan jumlah pengirim dan memverifikasi konfigurasi saat membuat tugas migrasi.

        Nilai default untuk parameter ini adalah 10.

      6. Tetapkan max_worker_processes ke setidaknya jumlah database yang akan dimigrasikan ditambah proses worker yang ada di instance Anda. Jika Anda berencana menggunakan setelan paralelisme dump data yang disesuaikan, perhitungkan dua proses worker tambahan per koneksi (hingga maksimum 20 worker):

        Nilai default untuk parameter ini adalah 8.

    2. Lampirkan grup parameter ke instance DB RDS Anda. Jika Anda membuat instance baru, Anda dapat menemukan opsi ini di bagian Additional Configuration. Jika tidak, ubah instance untuk melampirkan grup parameter.
  9. Mulai ulang instance Amazon RDS Anda agar perubahan grup parameter dapat diterapkan.

Mengonfigurasi sumber Amazon Aurora PostgreSQL

Untuk mengonfigurasi cluster sumber Amazon Aurora PostgreSQL untuk migrasi berkelanjutan, selesaikan langkah-langkah berikut:

  1. Untuk sumber Amazon Aurora for PostgreSQL, Database Migration Service memigrasikan semua database di cluster sumber Anda, kecuali database template template0, template1, dan database internal AWS rdsadmin.
  2. Pastikan cluster sumber Anda menyertakan database postgres default. Jika database ini tidak ada, buat database sebelum mengonfigurasi migrasi Anda.
  3. Konfigurasikan aturan masuk grup keamanan VPC cluster Amazon Aurora Anda. Izinkan koneksi TCP masuk di port 5432 dari rentang alamat IP cluster AlloyDB untuk PostgreSQL tujuan, rentang CIDR VPC, atau VM bastion host SSH terbalik.
  4. Verifikasi ekstensi PostgreSQL yang diinstal di database sumber Anda. Database Migration Service tidak memigrasikan ekstensi yang tidak didukung oleh AlloyDB untuk PostgreSQL. Pastikan objek database sumber dan kueri aplikasi Anda tidak mereferensikan ekstensi yang tidak didukung. Hapus ekstensi dan referensi yang tidak didukung dari database sumber Anda sebelum melanjutkan.

    Ekstensi pg_cron tidak dimigrasikan secara otomatis oleh Database Migration Service, tetapi didukung di tujuan AlloyDB untuk PostgreSQL. Jika Anda menggunakan pg_cron di database sumber, instal ulang dan konfigurasikan di cluster AlloyDB untuk PostgreSQL tujuan setelah Anda mempromosikan migrasi.

  5. Buat akun pengguna migrasi khusus di cluster sumber Anda dan berikan hak istimewa yang diperlukan:
    1. Hubungkan ke cluster sumber menggunakan akun administratif, buat pengguna, dan berikan peran rds_replication yang dikelola AWS:
      CREATE USER MIGRATION_USER_ACCOUNT_NAME WITH PASSWORD 'PASSWORD';
      GRANT rds_replication TO "MIGRATION_USER_ACCOUNT_NAME";
    2. Berikan izin yang diperlukan kepada akun pengguna migrasi untuk database postgres default serta setiap database yang ingin Anda migrasikan. Jalankan perintah berikut di setiap database untuk setiap skema, kecuali untuk skema informasi dan skema yang dimulai dengan pg_:
      GRANT USAGE ON SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME";
      GRANT USAGE ON SCHEMA pglogical TO PUBLIC;
      GRANT SELECT ON ALL TABLES IN SCHEMA pglogical TO "MIGRATION_USER_ACCOUNT_NAME";
      GRANT SELECT ON ALL TABLES IN SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME";
      GRANT SELECT ON ALL SEQUENCES IN SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME";
  6. Instal ekstensi pglogical di setiap database yang ingin Anda migrasikan, kecuali template0, template1, dan rdsadmin:
    CREATE EXTENSION IF NOT EXISTS pglogical;
  7. Pastikan tabel Anda memiliki kunci utama. Untuk migrasi berkelanjutan, replikasi logis PostgreSQL memerlukan tabel yang memiliki kunci utama untuk mereplikasi operasi UPDATE dan DELETE selama fase Change Data Capture (CDC):
    • Tabel dengan kunci utama mereplikasi semua operasi INSERT, UPDATE, dan DELETE secara otomatis.
    • Untuk tabel yang tidak memiliki kunci utama, Database Migration Service hanya mendukung migrasi snapshot awal dan pernyataan INSERT berikutnya selama fase CDC. Anda harus memigrasikan pernyataan UPDATE dan DELETE secara manual.

      Sebaiknya tambahkan kunci utama ke tabel yang belum memilikinya sebelum memulai migrasi. Untuk mempelajari cara membuat kueri guna mencantumkan tabel dalam database PostgreSQL tanpa kunci utama, atau cara memigrasikan operasi UPDATE dan DELETE secara manual, lihat Proses debug dan alat lainnya.

      Atau, Anda dapat mencoba menggunakan alur migrasi mulai cepat: skenario migrasi yang disederhanakan, yang memungkinkan Anda menggunakan REPLICA IDENTITY untuk memigrasikan tabel tanpa kunci utama. Untuk mengetahui informasi selengkapnya, lihat panduan Menggunakan migrasi mulai cepat.

  8. Konfigurasikan grup parameter cluster DB kustom dan lampirkan ke cluster Anda:
    1. Buat grup parameter cluster DB kustom dan konfigurasikan parameter berikut:
      1. Tetapkan shared_preload_libraries untuk menyertakan pglogical.
      2. Tetapkan rds.logical_replication ke 1. Parameter ini mengaktifkan logging WAL logis.
      3. Tetapkan wal_sender_timeout ke 0. Nilai 0 menonaktifkan mekanisme waktu tunggu yang menghentikan koneksi replikasi tidak aktif.
      4. Tetapkan max_replication_slots setidaknya ke jumlah database yang akan dimigrasikan dikalikan dengan jumlah tugas migrasi, ditambah cadangan untuk sinkronisasi tabel:

        Misalnya, jika ada 5 database di instance sumber dan Anda membuat 2 tugas migrasi untuk sumber tersebut, jumlah slot replikasi harus minimal 5 * 2 = 10, ditambah jumlah slot replikasi yang sudah digunakan di sumber oleh tugas lain. Jika Anda berencana menggunakan setelan paralelisme dump data yang disesuaikan, pastikan untuk meningkatkan jumlah slot replikasi dan memverifikasi konfigurasi saat membuat tugas migrasi.

        Nilai default untuk parameter ini adalah 10.

      5. Tetapkan max_wal_senders setidaknya ke nilai max_replication_slots ditambah jumlah pengirim yang sudah digunakan di instance Anda:

        Misalnya, jika parameter max_replication_slots ditetapkan ke 10, dan Anda sudah menggunakan 2 pengirim, jumlah proses pengirim WAL yang berjalan pada saat yang sama adalah 10 + 2 = 12. Jika Anda berencana menggunakan setelan paralelisme dump data yang disesuaikan, pastikan untuk meningkatkan jumlah pengirim dan memverifikasi konfigurasi saat membuat tugas migrasi.

        Nilai default untuk parameter ini adalah 10.

      6. Tetapkan max_worker_processes ke setidaknya jumlah database yang akan dimigrasikan ditambah proses worker yang ada di instance Anda. Jika Anda berencana menggunakan setelan paralelisme dump data yang disesuaikan, perhitungkan dua proses worker tambahan per koneksi (hingga maksimum 20 worker):

        Nilai default untuk parameter ini adalah 8.

    2. Lampirkan grup parameter cluster DB ke cluster DB Aurora.
  9. Mulai ulang cluster DB Amazon Aurora Anda agar perubahan grup parameter dapat diterapkan.

Mengonfigurasi sumber Cloud SQL untuk PostgreSQL

Untuk mengonfigurasi instance sumber Cloud SQL untuk PostgreSQL untuk migrasi berkelanjutan, selesaikan langkah-langkah berikut:

  1. Untuk sumber Cloud SQL untuk PostgreSQL, Database Migration Service akan memigrasikan semua database pada instance sumber Anda, kecuali database template template0 dan template1.
  2. Pastikan instance sumber Anda menyertakan database postgres default. Jika database ini tidak ada, buat database sebelum mengonfigurasi migrasi Anda.
  3. Jika Anda bermigrasi dari instance sumber Cloud SQL yang dikonfigurasi dengan alamat IP pribadi ke cluster AlloyDB untuk PostgreSQL tujuan yang menggunakan rentang IP alamat non-RFC 1918, tambahkan rentang non-RFC 1918 ke jaringan yang diizinkan dari instance sumber Anda. Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi jaringan yang diizinkan.
  4. Verifikasi ekstensi PostgreSQL yang diinstal di database sumber Anda. Database Migration Service tidak memigrasikan ekstensi yang tidak didukung oleh AlloyDB untuk PostgreSQL. Pastikan objek database sumber dan kueri aplikasi Anda tidak merujuk ke ekstensi yang tidak didukung. Hapus ekstensi dan referensi yang tidak didukung dari database sumber Anda sebelum melanjutkan.

    Ekstensi pg_cron tidak dimigrasikan secara otomatis oleh Database Migration Service, tetapi didukung di tujuan AlloyDB untuk PostgreSQL. Jika Anda menggunakan pg_cron di database sumber, instal ulang dan konfigurasikan di cluster AlloyDB untuk PostgreSQL tujuan setelah Anda mempromosikan migrasi.

  5. Buat akun pengguna migrasi khusus di instance sumber Anda dan berikan hak istimewa yang diperlukan:
    1. Ikuti langkah-langkah di halaman Membuat pengguna dalam dokumentasi Cloud SQL untuk membuat akun pengguna.
    2. Berikan peran cloudsqlsuperuser ke akun pengguna migrasi:
      GRANT cloudsqlsuperuser TO "MIGRATION_USER_ACCOUNT_NAME";
    3. Berikan izin yang diperlukan kepada akun pengguna migrasi untuk database postgres default serta setiap database yang ingin Anda migrasikan. Jalankan perintah berikut di setiap database untuk setiap skema, kecuali untuk skema informasi dan skema yang dimulai dengan pg_:
      GRANT USAGE ON SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME";
      GRANT USAGE ON SCHEMA pglogical TO PUBLIC;
      GRANT SELECT ON ALL TABLES IN SCHEMA pglogical TO "MIGRATION_USER_ACCOUNT_NAME";
      GRANT SELECT ON ALL TABLES IN SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME";
      GRANT SELECT ON ALL SEQUENCES IN SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME";
  6. Instal ekstensi pglogical di setiap database yang ingin Anda migrasikan, kecuali template0 dan template1. Jalankan perintah berikut:
    CREATE EXTENSION IF NOT EXISTS pglogical;
  7. Pastikan tabel Anda memiliki kunci utama. Untuk migrasi berkelanjutan, replikasi logis PostgreSQL memerlukan tabel yang memiliki kunci utama untuk mereplikasi operasi UPDATE dan DELETE selama fase Change Data Capture (CDC):
    • Tabel dengan kunci utama mereplikasi semua operasi INSERT, UPDATE, dan DELETE secara otomatis.
    • Untuk tabel yang tidak memiliki kunci utama, Database Migration Service memigrasikan snapshot awal dan pernyataan INSERT berikutnya selama fase CDC. Anda harus memigrasikan pernyataan UPDATE dan DELETE secara manual.

      Sebaiknya tambahkan kunci utama ke tabel yang belum memilikinya sebelum memulai migrasi. Untuk mempelajari cara membuat kueri guna mencantumkan tabel dalam database PostgreSQL tanpa kunci utama, atau cara memigrasikan operasi UPDATE dan DELETE secara manual, lihat Proses debug dan alat lainnya.

      Atau, Anda dapat mencoba menggunakan alur migrasi mulai cepat: skenario migrasi yang disederhanakan, yang memungkinkan Anda menggunakan REPLICA IDENTITY untuk memigrasikan tabel tanpa kunci utama. Untuk mengetahui informasi selengkapnya, lihat panduan Menggunakan migrasi mulai cepat.

  8. Konfigurasikan flag database berikut pada instance sumber Cloud SQL Anda:
    1. Tetapkan cloudsql.logical_decoding ke on.
    2. Tetapkan cloudsql.enable_pglogical ke on.
    3. Tetapkan wal_sender_timeout ke 0. Nilai 0 menonaktifkan mekanisme waktu tunggu yang menghentikan koneksi replikasi tidak aktif.
    4. Tetapkan max_replication_slots setidaknya ke jumlah database yang akan dimigrasikan dikalikan dengan jumlah tugas migrasi, ditambah cadangan untuk sinkronisasi tabel.

      Misalnya, jika ada 5 database di instance sumber dan Anda membuat 2 tugas migrasi untuk sumber tersebut, jumlah slot replikasi harus minimal 5 * 2 = 10, ditambah jumlah slot replikasi yang sudah digunakan di sumber oleh tugas lain. Jika Anda berencana menggunakan setelan paralelisme dump data yang disesuaikan, pastikan untuk meningkatkan jumlah slot replikasi dan memverifikasi konfigurasi saat membuat tugas migrasi.

      Nilai default untuk flag ini adalah 10.

    5. Tetapkan max_wal_senders setidaknya ke nilai max_replication_slots ditambah jumlah pengirim yang sudah digunakan di instance Anda.

      Misalnya, jika flag max_replication_slots ditetapkan ke 10, dan Anda sudah menggunakan 2 pengirim, jumlah proses pengirim WAL yang berjalan pada saat yang sama adalah 10 + 2 = 12. Jika Anda berencana menggunakan setelan paralelisme dump data yang disesuaikan, pastikan untuk meningkatkan jumlah pengirim dan memverifikasi konfigurasi saat membuat tugas migrasi.

      Nilai default untuk flag ini adalah 10.

    6. Tetapkan max_worker_processes ke setidaknya jumlah database yang akan dimigrasikan ditambah proses worker yang ada di instance Anda. Jika Anda berencana menggunakan setelan paralelisme dump data yang disesuaikan, perhitungkan dua proses worker tambahan per koneksi (hingga maksimum 20 worker).

      Nilai default untuk flag ini adalah 8.

    Untuk mengetahui informasi selengkapnya tentang cara mengubah flag, lihat Mengonfigurasi flag database dalam dokumentasi Cloud SQL.

  9. Mulai ulang instance Cloud SQL sumber Anda agar perubahan flag database dapat diterapkan.

Langkah berikutnya