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
pglogicaltidak 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
pglogicalyang digunakan untuk replikasi. Hal ini mencakup perubahan pada jenisenum.- Misalnya,
pglogicalmenyediakan fungsipglogical.replicate_ddl_commandyang 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_tableuntuk menambahkan tabel baru ke set replikasi yang ada. - Untuk mempelajari lebih lanjut replikasi DDL saat migrasi sedang berlangsung, lihat Fidelitas migrasi.
- Misalnya,
Untuk tabel yang tidak memiliki kunci utama, Database Migration Service mendukung migrasi snapshot awal dan pernyataan
INSERTselama fase pengambilan data perubahan (CDC). Memigrasikan pernyataanUPDATEdanDELETEberbeda untuk:- Migrasi standar: Pernyataan
UPDATEdanDELETEtidak dimigrasikan untuk tabel tanpa kunci utama. Anda harus menambahkan kunci utama untuk kolom sebelum melakukan migrasi, atau memigrasikan pernyataanUPDATEdanDELETEsecara manual. - Migrasi mulai cepat: Dengan migrasi mulai cepat, kunci utama
tidak diperlukan untuk mereplikasi operasi
UPDATEdanDELETEjika Anda menetapkan identitas replika keINDEXatauFULL. MengonfigurasiREPLICA IDENTITY FULLakan 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.
- Migrasi standar: Pernyataan
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
UNLOGGEDdanTEMPORARYtidak dan tidak dapat direplikasi.Jenis data Objek Besar (
oidyang merujuk kepg_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 menggunakanpg_crondi 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 denganpg_, lihat katalog sistem PostgreSQL dalam dokumentasi PostgreSQL. - Kredensial login dan peran pengguna.
- Skema informasi (
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
pgcryptodapat dimigrasikan karena Cloud SQL mendukungpgcrypto. 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
psqlstandar 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 TRIGGERatauALTER TABLE ... ENABLE ALWAYS TRIGGER.Fungsi yang ditentukan dengan
SECURITY DEFINERdibuat olehcloudsqlexternalsyncdi instance Cloud SQL tujuan, yang memiliki hak istimewa yang ditingkatkan. Batasi hak istimewa eksekusi pada fungsiSECURITY DEFINERyang 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_defaultdefault 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
pgnativedan 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.