Ringkasan
Sebelum Anda memilih untuk memigrasikan database ke Cloud SQL, pastikan Anda mempertimbangkan batasan yang diketahui untuk skenario migrasi ini.
Batasan yang diketahui untuk menggunakan database PostgreSQL sebagai sumber mencakup:
Ekstensi
pglogicaltidak mendukung replikasi kolom yang dibuat 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 padaenumjenis.Misalnya,
pglogicalmenyediakan fungsipglogical.replicate_ddl_commandyang memungkinkan DDL dijalankan di database sumber dan replika pada titik yang konsisten. Pengguna yang menjalankan perintah ini di sumber harus sudah ada di replika.Untuk mereplikasi data untuk tabel baru, Anda harus menggunakan perintah
pglogical.replication_set_add_tableuntuk menambahkan tabel baru ke set replikasi yang ada.Untuk mempelajari replikasi DDL lebih lanjut saat migrasi sedang ber langsung, lihat bagian tentang fidelitas migrasi.
Untuk tabel yang tidak memiliki kunci utama, Database Migration Service mendukung migrasi snapshot awal dan pernyataan
INSERTselama fase pengambilan data perubahan (CDC). Anda harus memigrasikan pernyataanUPDATEdanDELETEsecara manual.Database Migration Service tidak memigrasikan data dari tampilan materialisasi, hanya skema tampilan. Untuk mengisi tampilan, jalankan perintah berikut:
REFRESH MATERIALIZED VIEW view_name.Status
SEQUENCE(misalnya,last_value) di tujuan Cloud SQL baru mungkin berbeda dari statusSEQUENCEsumber.Tabel
UNLOGGEDdanTEMPORARYtidak dan tidak dapat direplikasi.Jenis data Objek Besar tidak didukung. Detail selengkapnya di bagian tentang fidelitas migrasi.
Hanya ekstensi dan bahasa prosedural 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 proses migrasi yang lancar, pastikan objek atau aplikasi Anda tidak mereferensikan ekstensi yang tidak didukung. Sebaiknya hapus ekstensi dan referensi ini dari database sumber sebelum Anda melanjutkan.
Ekstensi
pg_cron(atau setelancronapa pun yang terkait dengan ekstensi) tidak dimigrasikan oleh Database Migration Service, tetapi didukung di tujuan Cloud SQL untuk PostgreSQL. Jika Anda menggunakan ekstensipg_crondi database sumber, Anda dapat menginstalnya kembali 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 fungsi yang diinstal di database PostgreSQL saat Anda menginstal ekstensi yang didukung oleh Cloud SQL.
Jika ekstensi dan bahasa prosedural lainnya ada di database sumber, atau jika versinya tidak didukung, tugas migrasi akan gagal saat Anda menguji atau memulainya.
Database yang ditambahkan setelah tugas migrasi dimulai tidak akan dimigrasikan.
- Anda dapat memilih database tertentu saat melakukan migrasi menggunakan Database Migration Service. Namun, Anda tidak dapat memilih tabel atau skema tertentu dalam database tersebut.
Database Migration Service memigrasikan semua tabel dan skema dari database yang dipilih, kecuali yang berikut:
- Skema informasi (
information_schema). - Skema apa pun yang dimulai dengan
pg_(misalnya,pg_catalog,pg_toast,pgtemp*). Untuk mengetahui daftar lengkap katalog PostgreSQL yang dimulai denganpg_, lihat katalog sistem PostgreSQL dalam dokumentasi PostgreSQL. - Informasi tentang pengguna dan peran pengguna tidak dimigrasikan.
- Skema informasi (
Jika database terenkripsi memerlukan kunci enkripsi yang dikelola pelanggan untuk mendekripsi database, dan jika Database Migration Service tidak memiliki akses ke kunci tersebut, database tidak dapat dimigrasikan.
Namun, jika data pelanggan dienkripsi oleh ekstensi
pgcrypto, data tersebut dapat dimigrasikan dengan Database Migration Service (karena Cloud SQL mendukung ekstensi tersebut).Database Migration Service juga mendukung migrasi data dari database Amazon Aurora atau Amazon RDS terenkripsi karena database ini menangani dekripsi secara transparan dalam layanannya. Untuk mengetahui informasi selengkapnya, lihat Mengenkripsi resource Amazon Aurora dan Mengenkripsi resource Amazon RDS.
Database Cloud SQL tujuan dapat ditulis selama migrasi untuk memungkinkan perubahan DDL diterapkan jika diperlukan. Berhati-hatilah untuk tidak melakukan perubahan apa pun pada konfigurasi database atau struktur tabel yang dapat merusak proses migrasi atau memengaruhi integritas data.
Perilaku pemicu bergantung pada cara pemicu dikonfigurasi. Perilaku defaultnya adalah pemicu tidak akan dipicu, tetapi jika dikonfigurasi menggunakan pernyataan
ALTER EVENT TRIGGERatauALTER TABLEdan status pemicu ditetapkan ke replika atau selalu, pemicu akan dipicu pada replika selama replikasi.Fungsi dengan definer keamanan akan dibuat oleh
cloudsqlexternalsyncdi replika Cloud SQL. Saat dijalankan oleh pengguna mana pun, fungsi tersebut akan dijalankan dengan hak istimewacloudsqlexternalsyncyang memiliki perancloudsqlsuperuserdancloudsqlreplica. Sebaiknya batasi penggunaan fungsi definer keamanan hanya untuk beberapa pengguna. Untuk melakukannya, pengguna harus mencabut hak istimewa PUBLIK default, lalu memberikan hak istimewa eksekusi secara selektif.Cloud SQL tidak mendukung tablespace yang disesuaikan. Semua data di dalam tablespace yang disesuaikan dimigrasikan ke tablespace
pg_defaultdi instance tujuan 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 melakukan migrasi ke instance tujuan baru, gunakan peering VPC.
Batasan untuk migrasi ke instance tujuan yang ada
- Instance tujuan yang ada hanya dapat berisi database sistem default
yang disiapkan secara otomatis saat Anda membuat instance tujuan.
Migrasi ke instance tujuan yang ada
yang berisi data pengguna (seperti tabel dalam skema sistem, atau database)
tidak didukung.
Jika Anda mengalami masalah karena data tambahan di instance tujuan yang ada hapus database di instance tujuan, lalu 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 melakukan migrasi 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), setelah mempromosikan instance, Anda harus menyesuaikan setelan pencadangan lagi. Selama proses promosi, Cloud SQL akan mereset setelan pencadangan ke nilai default.
- Untuk pengguna Terraform: Database Migration Service mengubah setelan pencadangan dan pemulihan instance tujuan Anda. Hal ini dapat menyebabkan setelan instance tujuan berbeda dengan konfigurasi Terraform yang Anda gunakan untuk penyediaan. Jika Anda mengalami masalah ini, ikuti panduan di Mendiagnosis masalah.
Kuota
- Maksimal 2.000 profil koneksi dan 1.000 tugas migrasi dapat ada kapan saja. Untuk membuat ruang bagi lebih banyak tugas migrasi, tugas migrasi (termasuk yang telah selesai) dan profil koneksi dapat dihapus.
- Instance tujuan yang ada hanya dapat berisi database sistem default
yang disiapkan secara otomatis saat Anda membuat instance tujuan.
Migrasi ke instance tujuan yang ada
yang berisi data pengguna (seperti tabel dalam skema sistem, atau database)
tidak didukung.