Batasan umum

Sebelum Anda memilih untuk memigrasikan database ke Cloud SQL, pertimbangkan batasan yang diketahui untuk skenario migrasi ini.

Batasan umum untuk menggunakan database PostgreSQL sebagai sumber meliputi:

  • Ekstensi pglogical tidak mendukung replikasi kolom yang dihasilkan untuk PostgreSQL 12+.

  • Perubahan pada struktur tabel (DDL) tidak direplikasi melalui perintah DDL standar, tetapi hanya dengan perintah yang dijalankan menggunakan ekstensi pglogical yang digunakan untuk replikasi. Hal ini mencakup perubahan pada jenis enum.

    • Misalnya, pglogical menyediakan fungsi pglogical.replicate_ddl_command yang memungkinkan DDL dijalankan di database sumber dan replika pada titik yang konsisten.
    • Untuk mereplikasi data untuk tabel yang baru dibuat, Anda harus menggunakan perintah pglogical.replication_set_add_table untuk menambahkan tabel baru ke set replikasi yang ada.
    • Untuk mempelajari lebih lanjut replikasi DDL saat migrasi sedang berlangsung, lihat Fidelitas migrasi.
  • Untuk tabel yang tidak memiliki kunci utama, Database Migration Service mendukung migrasi snapshot awal dan pernyataan INSERT selama fase pengambilan data perubahan (CDC). Memigrasikan pernyataan UPDATE dan DELETE berbeda untuk:

    • Migrasi standar: Pernyataan UPDATE dan DELETE tidak dimigrasikan untuk tabel tanpa kunci utama. Anda harus menambahkan kunci utama untuk kolom sebelum melakukan migrasi, atau memigrasikan pernyataan UPDATE dan DELETE secara manual.
    • Migrasi mulai cepat: Dengan migrasi mulai cepat, kunci utama tidak diperlukan untuk mereplikasi operasi UPDATE dan DELETE jika Anda menetapkan identitas replika ke INDEX atau FULL. Mengonfigurasi REPLICA IDENTITY FULL akan meningkatkan volume write-ahead log (WAL) dan overhead resource. Sebaiknya tambahkan kunci utama jika memungkinkan. Untuk mengetahui informasi selengkapnya, lihat dokumentasi Identitas Replika PostgreSQL dan Panduan migrasi cepat.
  • Database Migration Service tidak memigrasikan data dari tampilan terwujud, hanya skema tampilan. Untuk mengisi tabel virtual di database tujuan, jalankan: REFRESH MATERIALIZED VIEW view_name.

  • Status SEQUENCE (misalnya, last_value) di tujuan mungkin berbeda dari sumber selama CDC berlangsung. Nilai urutan disinkronkan selama langkah promosi akhir.

  • Tabel UNLOGGED dan TEMPORARY tidak dan tidak dapat direplikasi.

  • Jenis data Objek Besar (oid yang merujuk ke pg_largeobject) tidak didukung oleh decoding logis PostgreSQL.

  • Hanya ekstensi yang didukung Cloud SQL untuk PostgreSQL yang dapat dimigrasikan. Database Migration Service tidak memigrasikan ekstensi yang tidak didukung oleh Cloud SQL. Keberadaan ekstensi ini tidak memblokir migrasi, tetapi untuk memastikan migrasi yang lancar, pastikan aplikasi Anda tidak mereferensikan ekstensi yang tidak didukung. Untuk mengetahui daftar ekstensi yang didukung, lihat ekstensi PostgreSQL dalam dokumentasi Cloud SQL.

  • Ekstensi pg_cron (atau cron job apa pun yang dikonfigurasi dalam ekstensi) tidak dimigrasikan oleh Database Migration Service, tetapi didukung di tujuan Cloud SQL untuk PostgreSQL. Jika Anda menggunakan pg_cron di database sumber, instal ulang ekstensi dan konfigurasikan cron job di instance tujuan setelah migrasi selesai.

  • Database Migration Service tidak mendukung migrasi dari replika baca yang berada dalam mode pemulihan.

  • Database Migration Service tidak mendukung sumber Amazon RDS tempat paket ekstensi AWS SCT diterapkan.

  • Fungsi yang ditentukan pengguna yang ditulis dalam C tidak dapat dimigrasikan, kecuali untuk fungsi yang diinstal saat membuat ekstensi yang didukung oleh Cloud SQL.

  • Jika ada ekstensi lain di database sumber dan versinya tidak didukung oleh Cloud SQL, pengujian atau memulai tugas migrasi akan gagal.

  • Database yang ditambahkan ke instance sumber setelah tugas migrasi dimulai tidak akan dimigrasikan.

  • Anda dapat memilih database tertentu saat melakukan migrasi menggunakan Database Migration Service. Semua tabel dan skema dari database yang dipilih akan dimigrasikan, kecuali:

    • Skema informasi (information_schema).
    • Skema apa pun yang diawali dengan pg_ (misalnya, pg_catalog, pg_toast, pgtemp*). Untuk daftar lengkap katalog PostgreSQL yang diawali dengan pg_, lihat katalog sistem PostgreSQL dalam dokumentasi PostgreSQL.
    • Kredensial login dan peran pengguna.
  • Jika database terenkripsi memerlukan kunci enkripsi yang dikelola pelanggan (CMEK) untuk mendekripsi data, dan Database Migration Service tidak memiliki akses ke kunci tersebut, database tidak dapat dimigrasikan. Namun, data yang dienkripsi dengan ekstensi pgcrypto dapat dimigrasikan karena Cloud SQL mendukung pgcrypto. Database Migration Service juga mendukung migrasi dari database Amazon Aurora atau Amazon RDS yang dienkripsi karena AWS menangani dekripsi secara transparan. Untuk mengetahui informasi selengkapnya, lihat Mengenkripsi resource Amazon Aurora dan Mengenkripsi resource Amazon RDS.

  • Perilaku operasional database tujuan selama migrasi:

    • Database tujuan yang dapat ditulis: Cloud SQL untuk PostgreSQL tidak menjalankan database tujuan dalam mode hanya baca selama migrasi. Instance tujuan tidak didemosi saat dibuat oleh Database Migration Service.

    • Hindari operasi tulis pada data yang dimigrasikan: Jangan lakukan operasi tulis (seperti INSERT, UPDATE, DELETE, atau perubahan skema DDL) pada tabel atau database yang berpartisipasi dalam migrasi. Menjalankan penulisan pada data yang dimigrasikan dapat menyebabkan konflik replikasi dengan aliran data pengambilan data perubahan (CDC) yang masuk.

    • Mengelola pengguna database: Anda dapat membuat dan mengelola pengguna database kapan saja menggunakan perintah psql standar atau melalui Cloud SQL di konsol Google Cloud . Untuk mengetahui informasi selengkapnya, lihat Mengelola pengguna dalam dokumentasi Cloud SQL.

    • Fitur yang ditangguhkan: Pencadangan otomatis dan pemulihan point-in-time (PITR) ditangguhkan selama replikasi berkelanjutan. Selain itu, Anda tidak dapat membuat replika baca Cloud SQL dari instance tujuan hingga tugas migrasi dipromosikan.

  • Perilaku pemicu bergantung pada konfigurasi pemicu. Secara default, pemicu tidak diaktifkan pada replika selama replikasi, kecuali jika dikonfigurasi dengan ALTER EVENT TRIGGER atau ALTER TABLE ... ENABLE ALWAYS TRIGGER.

  • Fungsi yang ditentukan dengan SECURITY DEFINER dibuat oleh cloudsqlexternalsync di instance Cloud SQL tujuan, yang memiliki hak istimewa yang ditingkatkan. Batasi hak istimewa eksekusi pada fungsi SECURITY DEFINER yang sensitif dengan mencabut izin publik dan memberikan akses secara selektif.

  • Cloud SQL tidak mendukung tablespace kustom. Semua objek di dalam tablespace kustom dimigrasikan ke tablespace pg_default default di Cloud SQL.

  • Metode konektivitas antarmuka Private Service Connect hanya didukung untuk migrasi ke instance tujuan yang ada. Jika Anda ingin menggunakan konektivitas IP pribadi dan bermigrasi ke instance tujuan baru, gunakan peering VPC.

Batasan untuk migrasi ke instance tujuan yang ada

  • Penurunan instance tujuan untuk migrasi standar: Untuk migrasi standar ke instance Cloud SQL yang ada, Database Migration Service menurunkan instance mandiri untuk mengonfigurasinya sebagai replika eksternal database sumber.
    • Mendemosikan instance tidak akan menempatkan mesin PostgreSQL ke mode hanya baca, tetapi Anda harus menghindari operasi tulis pada tabel yang dimigrasikan untuk mencegah konflik replikasi.
    • Mendemosikan instance akan menangguhkan pencadangan otomatis dan pemulihan point-in-time (PITR) serta mencegah penambahan replika baca Cloud SQL hingga promosi.
    • Anda harus mengonfirmasi demosi saat membuat tugas migrasi di konsol Google Cloud dengan memasukkan ID instance tujuan (atau dengan menjalankan gcloud database-migration migration-jobs demote-destination).
    • Migrasi mulai cepat menggunakan replikasi logis PostgreSQL pgnative dan tidak memerlukan atau melakukan penurunan versi instance tujuan.
  • Instance tujuan yang ada hanya dapat berisi database sistem default yang disiapkan secara otomatis saat Anda membuat instance tujuan. Migrasi ke instance tujuan yang sudah ada dan berisi data pengguna tidak didukung.

    Jika Anda mengalami masalah karena data tambahan di instance tujuan yang ada, hapus database di instance tujuan dan coba lagi tugas migrasi. Lihat Menghapus data tambahan dari instance tujuan yang ada.

  • Anda hanya dapat mengonfigurasi satu tugas migrasi per instance tujuan.
  • Anda hanya dapat bermigrasi ke instance Cloud SQL mandiri. Migrasi ke replika server eksternal tidak didukung.
  • Setelah mempromosikan instance, Anda harus mengaktifkan pemulihan point-in-time.
  • Jika instance Anda memiliki setelan pencadangan yang disesuaikan (misalnya, lokasi pencadangan kustom), Anda harus memulihkan setelan pencadangan lagi setelah promosi. Selama proses promosi, Cloud SQL mereset setelan cadangan ke nilai defaultnya.
  • Untuk pengguna Terraform: Database Migration Service mengubah setelan pencadangan dan pemulihan instance tujuan Anda. Hal ini dapat menyebabkan setelan instance tujuan berbeda dari konfigurasi Terraform yang digunakan untuk penyediaan. Jika Anda mengalami masalah ini, lihat panduan di Mendiagnosis masalah.

Kuota

  • Hingga 2.000 profil koneksi dan 1.000 tugas migrasi dapat ada kapan saja. Untuk menyediakan ruang bagi lebih banyak tugas migrasi dan profil koneksi, hapus tugas migrasi dan profil koneksi yang tidak digunakan.

Kompatibilitas versi ekstensi PostgreSQL selama upgrade versi utama

Saat Anda bermigrasi ke versi utama PostgreSQL yang lebih tinggi, Database Migration Service menggunakan utilitas pg_restore, yang menginstal versi ekstensi default dari versi utama PostgreSQL target. Anda tidak dapat menentukan versi ekstensi yang tepat untuk utilitas pg_restore.

Jika database sumber Anda menggunakan versi ekstensi yang skemanya tidak kompatibel dengan versi default yang diinstal pada versi utama PostgreSQL target, migrasi mungkin gagal karena ketidakcocokan skema atau error internal.

Untuk menghindari kegagalan migrasi, verifikasi kompatibilitas skema. Sebelum melakukan migrasi, upgrade ekstensi di database sumber ke versi yang kompatibel dengan versi utama PostgreSQL target.