Halaman ini menjelaskan proses AlloyDB untuk PostgreSQL dalam memperbarui versi server database, dan menjelaskan cara memigrasikan data ke cluster yang kompatibel dengan PostgreSQL versi yang lebih baru.
Untuk mengetahui informasi selengkapnya tentang cara membuat cluster, lihat Membuat cluster dan instance utamanya.
Kompatibilitas versi PostgreSQL dan cluster
Saat membuat cluster AlloyDB, Anda memilih versi utama PostgreSQL yang kompatibel dengan instance di cluster. Secara default, nilainya adalah 16.
AlloyDB melakukan upgrade versi database minor otomatis selama pemeliharaan berkala. Misalnya, jika Anda membuat cluster dengan kompatibilitas 16, AlloyDB akan terus mengupgrade server database ke versi minor 16 terbaru.
Namun, upgrade versi utama PostgreSQL mengharuskan Anda merencanakan, menguji, dan melakukan upgrade sendiri.
Ada beberapa metode untuk melakukan upgrade versi utama cluster Anda:
- Upgrade versi utama di tempat yang sebaiknya Anda gunakan.
- Memigrasikan data dengan ekspor data berbasis file.
- Menggunakan Database Migration Service.
Setiap solusi upgrade menawarkan kelebihan dan kekurangan yang berbeda. Lihat tabel berikut untuk perbandingan singkat yang akan membantu Anda memilih pendekatan yang tepat untuk skenario Anda.
Upgrade versi utama secara langsung | Ekspor data berbasis file | Migrasi dengan Database Migration Service |
---|---|---|
Cluster Anda, termasuk instance baca, akan diupgrade ke versi utama yang lebih tinggi yang dipilih. | Ekspor berbasis file memindahkan ringkasan database Anda satu kali. | Database Migration Service menawarkan kemampuan replikasi berkelanjutan selama proses migrasi, sehingga mengurangi kemungkinan kehilangan data di cluster baru Anda. |
Anda dapat terus mengerjakan cluster selama tahap pra-upgrade. | Aplikasi Anda mengalami periode nonaktif yang lebih lama yang dimulai saat Anda mengekspor data. Anda tidak dapat menerima penulisan database di cluster asli hingga cluster baru beroperasi sepenuhnya. | Aplikasi Anda akan mengalami periode nonaktif yang lebih singkat yang dimulai saat Anda ingin mengalihkan aplikasi untuk menggunakan cluster baru. |
Anda dapat memperkirakan waktu nonaktif sekitar 20 menit atau lebih selama proses upgrade, bergantung pada skema Anda. Setelah upgrade, Anda dapat mengakses cluster dengan alamat IP yang sama. | Anda memiliki kontrol terperinci yang lebih besar atas data yang akan disertakan dalam ekspor dan dapat memilih untuk tidak memigrasikan tabel tertentu atau entitas lainnya. | Database Migration Service secara otomatis memigrasikan semua database yang ada di instance Anda, dan semua instance di cluster Anda. Anda tidak dapat memilih untuk mengecualikan tabel atau tampilan tertentu dari data migrasi Anda. |
Cluster Anda dapat mengaktifkan mode penerapan SSL. | Untuk tujuan migrasi, Database Migration Service mengharuskan Anda menonaktifkan mode penerapan SSL di cluster sumber. |
Bagian berikutnya menjelaskan proses melakukan upgrade versi utama,
termasuk memigrasikan data Anda.
Upgrade versi utama secara langsung
Hal ini memberikan pengalaman upgrade yang lancar tanpa mengharuskan Anda menyiapkan cluster tambahan. Untuk mengetahui informasi selengkapnya, lihat Mengupgrade versi utama database yang diterapkan.
Melakukan migrasi menggunakan ekspor data berbasis file
Untuk menggunakan server database yang kompatibel dengan versi utama PostgreSQL yang lebih tinggi, Anda harus membuat cluster yang identik secara fungsional di region yang sama, lalu memigrasikan data Anda ke dalamnya.
Ikuti langkah-langkah berikut:
Buat cluster yang dikonfigurasi dengan kompatibilitas versi utama PostgreSQL yang ingin Anda gunakan. Buat cluster di region yang sama dengan cluster Anda saat ini.
Siapkan cluster baru dengan versi utama baru agar sesuai dengan konfigurasi cluster saat ini:
Buat cluster sekunder sesuai kebutuhan.
Saat membuat cluster sekunder, Anda tidak perlu menentukan nomor versi utama PostgreSQL. AlloyDB menerapkan versi PostgreSQL cluster utama ke semua cluster sekundernya.
Perbarui flag database cluster baru agar sesuai dengan setelan flag cluster saat ini.
Ekspor data Anda dari cluster lama ke dalam file menggunakan
psql
ataupg_dump
.
Aplikasi Anda kini dapat terhubung ke instance cluster baru di alamat IP barunya.
Melakukan migrasi menggunakan Database Migration Service
Anda dapat menggunakan Database Migration Service untuk memindahkan data dari database PostgreSQL ke cluster AlloyDB. Database Migration Service tidak menyediakan konfigurasi khusus untuk sumber data AlloyDB, tetapi AlloyDB kompatibel dengan PostgreSQL sehingga Anda dapat menggunakan konfigurasi yang ditujukan untuk sumber PostgreSQL umum.
Jalur migrasi ini bukan upgrade di tempat dan menghasilkan pembuatan cluster baru dengan alamat IP yang berbeda. Sebaiknya clone cluster Anda terlebih dahulu dan lakukan migrasi pengujian untuk memverifikasi apakah aplikasi Anda kompatibel dengan pendekatan ini.
Pertimbangan penting
Sebelum Anda bersiap untuk bermigrasi dengan Database Migration Service, pertimbangkan dengan cermat batasan berikut untuk memastikan jalur migrasi ini sesuai dengan skenario upgrade Anda.
- Batasan
-
- Koneksi SSL harus dinonaktifkan di cluster sumber Anda.
- Instance AlloyDB yang dikonfigurasi dengan Private Service Connect tidak didukung.
- Anda tidak dapat melakukan update instance atau permintaan failover pada cluster sumber selama migrasi. Operasi ini dapat menyebabkan tugas migrasi gagal.
- Semua batasan standar untuk migrasi PostgreSQL ke AlloyDB berlaku untuk skenario ini. Untuk daftar lengkap batasan lainnya, lihat Batasan umum dalam dokumentasi Database Migration Service.
- Kualitas migrasi
- Jenis data tertentu, seperti objek besar, tidak dimigrasikan. Untuk mengetahui daftar lengkap data yang didukung, lihat Fidelitas migrasi dalam dokumentasi Database Migration Service.
- Penguncian dan periode nonaktif database sumber
-
Database Migration Service menggunakan migrasi berkelanjutan untuk memindahkan data ke cluster AlloyDB. Jenis migrasi ini menimbulkan penguncian singkat (kurang dari 10 detik) pada tabel database sumber, satu per satu, saat dump data awal dibuat.
Setelah migrasi selesai, Anda harus menghentikan semua penulisan di database sumber sebelum dapat mengalihkan aplikasi ke cluster baru. Prosedur ini memerlukan periode nonaktif. Untuk ringkasan yang lebih mendetail, lihat Migrasi berkelanjutan dalam dokumentasi Database Migration Service.
- Batasan replikasi
-
Setelah tugas migrasi berpindah ke fase change data capture (CDC), Database Migration Service akan terus mereplikasi data baru yang ditulis ke database sumber Anda.
Untuk tabel yang tidak memiliki kunci utama, hanya pernyataan
INSERT
yang direplikasi selama fase CDC. Setiap tindakanCREATE
,UPDATE
, atauDELETE
yang dilakukan pada tabel yang tidak memiliki kunci utama selama fase CDC harus dibuat ulang di database tujuan secara manual untuk menghindari kehilangan data.
Sebelum memulai
-
Enable the Database Migration Service API.
-
Make sure that you have the following role or roles on the project:
- One of the following:
- Cloud AlloyDB > Cloud AlloyDB admin
- Basic > Owner
- Basic > Editor
- You must also have the
compute.networks.list
permission in the Google Cloud project you are using. To gain this permission while following the principle of least privilege, ask your administrator to grant you the Compute Engine > Compute Network User role (roles/compute.networkUser
). - Database Migration admin
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
Buka IAM - Pilih project.
- Klik Berikan akses.
-
Di kolom Akun utama baru, masukkan ID pengguna Anda. Biasanya berupa alamat email untuk Akun Google.
- Di daftar Pilih peran, pilih peran.
- Untuk memberikan peran tambahan, klik Tambahkan peran lain, lalu tambahkan setiap peran tambahan.
- Klik Simpan.
- Pastikan jaringan VPC di Google Cloud project yang Anda gunakan dikonfigurasi untuk akses layanan pribadi ke AlloyDB.
- Tentukan region tempat Anda ingin membuat cluster tujuan. Semua entitas Database Migration Service (profil koneksi, tugas migrasi) harus dibuat di region yang sama dengan cluster tujuan Anda.
- Siapkan pengguna database yang ingin Anda hubungkan ke cluster dan jalankan pernyataan migrasi di database sumber. Pengguna database ini memerlukan serangkaian izin dan peran tertentu. Sebaiknya buat pengguna database baru dan tetapkan pengguna tersebut secara khusus untuk tujuan melakukan migrasi.
Mengonfigurasi instance sumber Anda
Database Migration Service memerlukan konfigurasi tertentu agar dapat terhubung dan menyalin data dari cluster sumber ke cluster tujuan baru.
Untuk mengonfigurasi instance sumber AlloyDB, lakukan langkah-langkah berikut:
-
Mengonfigurasi flag database di setiap instance dalam cluster sumber Anda.
Gunakan nilai berikut:
Flag Nilai alloydb.logical_decoding
Tetapkan ke on
.alloydb.enable_pglogical
Tetapkan ke on
.max_replication_slots
Flag ini menentukan jumlah maksimum slot replikasi yang dapat didukung oleh instance sumber. Nilai minimum untuk flag ini adalah 50
.Hitung nilai minimum menggunakan formula berikut:
(the number of databases in your instance) * (the number of simultaneous migration jobs you want to perform) + (slots reserved for table synchronization) + (the number of replication slots you currently use for your read replicas)
Pertimbangkan contoh saat hal berikut benar:
- Anda tidak memiliki replika baca di sumber Anda.
- Anda memiliki 30 database di instance sumber utama.
- Anda ingin membuat 2 tugas migrasi untuk cluster sumber.
- Anda ingin menggunakan 10 slot untuk replikasi tabel.
max_replication_slots
harus minimal70
, yang dihitung sebagai30 * 2 + 10 + 0
.max_wal_senders
Tetapkan tanda ini setidaknya 10 lebih banyak dari nilai max_replication_slots
ditambah jumlah pengirim yang sudah digunakan di instance Anda.Misalnya, jika Anda menetapkan
max_replication_slots flag
ke70
dan Anda sudah menggunakan 2 pengirim, makamax_wal_senders
harus minimal82
(dihitung sebagai70 + 10 + 2 = 82
).max_worker_processes
Tetapkan tanda ini ke setidaknya jumlah database di instance Anda ditambah jumlah max_worker_processes
yang sudah Anda gunakan.Misalnya, jika Anda memiliki 30 database di instance sumber dan tidak menggunakan proses pekerja, tetapkan flag ini ke
30
. - Nonaktifkan mode penerapan SSL di setiap instance dalam cluster sumber Anda.
Mengonfigurasi database sumber
Anda harus menginstal ekstensi
pglogical
dan memberikan izin yang diperlukan kepada pengguna database yang Anda tetapkan sebagai pengguna migrasi di setiap database dalam instance Anda.Untuk mengonfigurasi database, lakukan langkah-langkah berikut:
- Hubungkan ke database
postgres
default menggunakan klienpsql
. Instal ekstensi
pglogical
dengan menjalankan perintah berikut:CREATE EXTENSION IF NOT EXISTS pglogical;
Berikan izin kepada pengguna database migrasi di semua skema kecuali skema
information
dan skema yang namanya dimulai dengan prefikspg_
. Jalankan pernyataan berikut:GRANT USAGE on SCHEMA SCHEMA_NAME to USER_NAME; GRANT SELECT on ALL TABLES in SCHEMA SCHEMA_NAME to USER_NAME; GRANT SELECT on ALL SEQUENCES in SCHEMA SCHEMA_NAME to USER_NAME;
Ganti kode berikut:
- SCHEMA_NAME: nama skema yang ada di database Anda
- USER_NAME: nama pengguna database yang Anda siapkan di bagian Sebelum memulai
Ulangi langkah ini untuk setiap skema di database Anda kecuali skema
information
, dan skema yang namanya dimulai dengan awalanpg_
. Anda dapat mencantumkan semua skema database dengan meta-perintah \dn.Berikan izin yang diperlukan lainnya. Jalankan pernyataan berikut:
GRANT USAGE on SCHEMA pglogical to PUBLIC; GRANT SELECT on ALL TABLES in SCHEMA pglogical to USER_NAME; ALTER USER USER_NAME with REPLICATION;
Ganti USER_NAME dengan nama pengguna database yang Anda siapkan di bagian Sebelum memulai.
Hubungkan ke setiap database lain di instance Anda dan ulangi langkah 2, 3, dan 4.
Anda dapat mencantumkan semua database di instance dengan meta-perintah
\list
.Anda dapat beralih ke database lain tanpa mereset koneksi klien
psql
dengan menggunakan perintah\connect {database_name_here}
.
Ulangi prosedur ini untuk setiap instance di cluster AlloyDB sumber Anda.
Menjalankan migrasi di Database Migration Service
Ikuti langkah-langkah berikut:
Buat profil koneksi sumber untuk cluster AlloyDB Anda. Gunakan nilai berikut:
- Database engine: Pilih PostgreSQL.
- Hostname/IP: Gunakan alamat IP instance utama di cluster Anda.
- Nama pengguna/sandi: Masukkan kredensial untuk pengguna database yang Anda siapkan di bagian Sebelum Anda memulai.
- Port: Masukkan
5432
. - Region: Pilih region tempat cluster tujuan Anda berada.
- Jenis enkripsi: Pilih Tidak ada.
Buat dan jalankan tugas migrasi.
Anda dapat membuat cluster AlloyDB baru lebih awal, atau meminta Database Migration Service membuat cluster untuk Anda selama konfigurasi tugas migrasi. Untuk mengetahui informasi selengkapnya, lihat Ringkasan tugas migrasi dalam dokumentasi Database Migration Service.
Jika Anda ingin Database Migration Service membuat cluster tujuan untuk Anda selama konfigurasi tugas migrasi, ikuti langkah-langkah dalam prosedur Membuat tugas migrasi ke instance tujuan baru.
Jika Anda ingin membuat cluster tujuan di luar Database Migration Service, ikuti langkah-langkah dalam prosedur Membuat tugas migrasi ke instance tujuan yang sudah ada.
Saat status tugas migrasi Anda berubah menjadi CDC, promosikan tugas migrasi. Anda dapat memeriksa status tugas migrasi di halaman ringkasan migrasi. Lihat Meninjau tugas migrasi dalam dokumentasi Database Migration Service.
Tindakan ini menyebabkan cluster tujuan Anda keluar dari mode bootstrapping (yaitu, cluster AlloyDB tujuan Anda tidak lagi dalam status hanya baca).
(Opsional) Periksa pernyataan yang tidak ada dalam tabel yang tidak memiliki kunci utama.
Jika database AlloyDB sumber Anda berisi tabel yang tidak memiliki kunci utama, Anda mungkin perlu memigrasikan pernyataan
UPDATE
atauDELETE
yang tidak ada secara manual. Lihat Memigrasikan operasi UPDATE dan DELETE untuk tabel non-kunci utama dalam dokumentasi Database Migration Service.Alihkan aplikasi Anda ke cluster baru. Aplikasi Anda kini dapat terhubung ke instance cluster baru di alamat IP barunya.
- One of the following: