Mengonfigurasi database PostgreSQL sumber untuk migrasi berkelanjutan

Halaman ini menjelaskan cara mengonfigurasi instance database sumber untuk migrasi PostgreSQL homogen standar. 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 bagian untuk setiap sumber yang didukung:

Mengonfigurasi sumber PostgreSQL yang dikelola sendiri

Untuk mengonfigurasi instance sumber PostgreSQL yang dikelola sendiri (lokal atau dihosting di VM Compute Engine) untuk proses migrasi Anda, lakukan hal berikut:

  1. Untuk sumber PostgreSQL yang dikelola 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 alamat IP keluar Cloud SQL 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 Cloud SQL. 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 Cloud SQL untuk PostgreSQL. Jika Anda menggunakan pg_cron di database sumber, instal ulang dan konfigurasikan di instance 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 Anda dengan menjalankan pengujian tugas migrasi saat Anda 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 Anda dengan menjalankan pengujian tugas migrasi saat Anda 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 proses migrasi Anda, lakukan hal 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 alamat IP keluar Cloud SQL 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 Cloud SQL. 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 Cloud SQL untuk PostgreSQL. Jika Anda menggunakan pg_cron di database sumber, instal ulang dan konfigurasikan di instance 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:
    • 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;

    Untuk mengetahui detail selengkapnya tentang persyaratan, lihat Using PostgreSQL extensions with Amazon RDS for 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. 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. 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 Anda dengan menjalankan pengujian tugas migrasi saat Anda 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 Anda dengan menjalankan pengujian tugas migrasi saat Anda 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.
  10. Mulai ulang instance Amazon RDS Anda agar perubahan grup parameter dapat diterapkan.

Mengonfigurasi sumber Amazon Aurora untuk PostgreSQL

Untuk mengonfigurasi cluster sumber Amazon Aurora PostgreSQL untuk proses migrasi Anda, lakukan hal 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 alamat IP keluar Cloud SQL 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 Cloud SQL. 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 Cloud SQL untuk PostgreSQL. Jika Anda menggunakan pg_cron di database sumber, instal ulang dan konfigurasikan di instance 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 Anda dengan menjalankan pengujian tugas migrasi saat Anda 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 Anda dengan menjalankan pengujian tugas migrasi saat Anda 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 Microsoft Azure Database for PostgreSQL Flexible Server

Untuk mengonfigurasi instance sumber Microsoft Azure Database for PostgreSQL Flexible Server untuk proses migrasi Anda, lakukan hal berikut:

  1. Untuk sumber Microsoft Azure Database for PostgreSQL Flexible Server, Database Migration Service memigrasikan semua database di instance sumber Anda, kecuali database sistem dan template Azure: azure_maintenance, azure_sys, 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 setelan firewall dan SSL/TLS Azure:
    1. Di setelan jaringan Azure, tambahkan aturan firewall yang mengizinkan koneksi TCP masuk di port 5432 dari alamat IP keluar Cloud SQL tujuan, rentang CIDR VPC, atau VM bastion host SSH terbalik.
    2. Periksa nilai parameter server require_secure_transport. Secara default, database Azure memerlukan enkripsi SSL/TLS untuk koneksi masuk. Bergantung pada setelan require_secure_transport, pilih salah satu setelan enkripsi berikut saat Anda membuat profil koneksi sumber:
      • Jika require_secure_transport ditetapkan ke on, pilih Basic, TLS, atau mTLS.
      • Jika require_secure_transport ditetapkan ke off, pilih None.
  4. Verifikasi ekstensi PostgreSQL yang diinstal di database sumber Anda. Database Migration Service tidak memigrasikan ekstensi yang tidak didukung oleh Cloud SQL. 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 Cloud SQL untuk PostgreSQL. Jika Anda menggunakan pg_cron di database sumber, instal ulang dan konfigurasikan di instance 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 azure_maintenance, azure_sys, 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. Konfigurasikan parameter server berikut di Azure. Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi parameter server di Azure Database for PostgreSQL.
    1. Tetapkan shared_preload_libraries untuk menyertakan pglogical.
    2. Tetapkan azure.extensions untuk menyertakan pglogical.
    3. Tetapkan wal_level ke logical.
    4. Tetapkan wal_sender_timeout ke 0. Nilai 0 menonaktifkan mekanisme waktu tunggu yang menghentikan koneksi replikasi tidak aktif.
    5. 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 Anda dengan menjalankan pengujian tugas migrasi saat Anda membuat tugas migrasi.

      Nilai default untuk parameter ini adalah 10.

    6. 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 Anda dengan menjalankan pengujian tugas migrasi saat Anda membuat tugas migrasi.

      Nilai default untuk parameter ini adalah 10.

    7. 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.

    Untuk mengetahui detail parameter selengkapnya, lihat daftar semua Parameter server di Azure Database for PostgreSQL dalam dokumentasi Microsoft.

  10. Mulai ulang instance Microsoft Azure Database for PostgreSQL Flexible Server agar perubahan parameter server dapat diterapkan.

Mengonfigurasi sumber Cloud SQL untuk PostgreSQL

Untuk mengonfigurasi instance sumber Cloud SQL untuk PostgreSQL untuk proses migrasi Anda, lakukan hal 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 instance tujuan Cloud SQL yang menggunakan rentang alamat IP 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 Cloud SQL. 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 Cloud SQL untuk PostgreSQL. Jika Anda menggunakan pg_cron di database sumber, instal ulang dan konfigurasikan di instance 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.
    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 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. 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. 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 Anda dengan menjalankan pengujian tugas migrasi saat Anda 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 Anda dengan menjalankan pengujian tugas migrasi saat Anda 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.

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

Langkah berikutnya