Mengupgrade versi server utama cluster

Halaman ini menjelaskan proses AlloyDB untuk PostgreSQL guna mengupdate versi server database, dan menjelaskan cara memigrasikan data ke cluster yang kompatibel dengan PostgreSQL versi lebih baru.

Untuk mengetahui informasi selengkapnya tentang cara membuat cluster, lihat Membuat cluster dan instance utamanya.

Kompatibilitas cluster dan versi PostgreSQL

Saat membuat cluster AlloyDB, Anda memilih versi utama PostgreSQL yang kompatibel dengan instance dalam cluster. Secara default, nilai ini adalah 15.

AlloyDB melakukan upgrade versi database minor otomatis selama pemeliharaan berkala. Misalnya, jika Anda membuat cluster dengan kompatibilitas 15, AlloyDB akan terus mengupgrade server database ke versi minor terbaru 15.

Namun, upgrade versi utama versi PostgreSQL mengharuskan Anda merencanakan, menguji, dan melakukan upgrade sendiri.

Ada beberapa metode untuk melakukan upgrade versi utama cluster Anda:

  1. Upgrade versi utama di tempat yang sebaiknya digunakan.
  2. Memigrasikan data dengan ekspor data berbasis file.
  3. Menggunakan Database Migration Service.

Setiap solusi upgrade menawarkan kelebihan dan kekurangan yang berbeda. Lihat tabel berikut untuk perbandingan singkat guna membantu Anda memilih pendekatan yang tepat untuk skenario Anda.

Upgrade versi utama di tempat 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 akan memindahkan snapshot satu kali dari database Anda. Database Migration Service menawarkan kemampuan replikasi berkelanjutan selama proses migrasi, sehingga mengurangi kemungkinan data hilang di cluster baru Anda.
Anda dapat terus bekerja di cluster selama tahap pra-upgrade. Aplikasi Anda mengalami periode nonaktif yang lebih lama yang dimulai saat Anda mengekspor data. Anda tidak dapat menerima operasi tulis database di cluster asli hingga cluster baru beroperasi sepenuhnya. Aplikasi Anda mengalami downtime yang lebih singkat yang dimulai saat Anda ingin mengalihkan aplikasi untuk menggunakan cluster baru.
Anda dapat mengalami downtime 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 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.
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 di tempat

Hal ini memberikan pengalaman upgrade yang lancar tanpa mengharuskan Anda menyiapkan cluster tambahan. Untuk informasi selengkapnya, lihat Mengupgrade versi utama database secara langsung.

Bermigrasi menggunakan ekspor data berbasis file

Untuk menggunakan server database yang kompatibel dengan versi utama PostgreSQL yang lebih tinggi, Anda perlu membuat cluster yang secara fungsional identik di region yang sama, lalu memigrasikan data ke dalamnya.

Ikuti langkah-langkah berikut:

  1. Buat cluster yang dikonfigurasi dengan versi utama kompatibilitas PostgreSQL yang ingin Anda gunakan. Buat cluster di region yang sama dengan cluster Anda saat ini.

  2. Siapkan cluster baru dengan versi utama baru agar cocok dengan konfigurasi cluster saat ini:

    1. Buat instance kumpulan operasi baca tambahan sesuai kebutuhan.

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

    3. Perbarui flag database cluster baru agar cocok dengan setelan flag cluster saat ini.

    4. Aktifkan ekstensi apa pun yang diperlukan aplikasi Anda.

  3. Ekspor data Anda dari cluster lama ke dalam file menggunakan psql atau pg_dump.

  4. Impor data Anda dari file ke cluster baru.

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 yang didedikasikan secara khusus untuk sumber data AlloyDB, tetapi AlloyDB kompatibel dengan PostgreSQL sehingga Anda dapat menggunakan konfigurasi yang ditujukan untuk sumber PostgreSQL generik.

Jalur migrasi ini bukan upgrade in-place 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 cocok 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 mengetahui daftar lengkap batasan lainnya, lihat Batasan umum dalam dokumentasi Database Migration Service.
Fidelitas 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 menyebabkan penguncian singkat (di bawah 10 detik) pada tabel database sumber, satu per satu, saat dump data awal dibuat.

Setelah migrasi selesai, Anda harus menghentikan semua operasi tulis 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 pengambilan data perubahan (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 tindakan CREATE, UPDATE, atau DELETE yang dilakukan pada tabel yang tidak memiliki kunci utama selama fase CDC perlu dibuat ulang di database tujuan secara manual untuk menghindari kehilangan data.

Sebelum memulai

  1. Enable the Database Migration Service API.

    Enable the API

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

    1. In the Google Cloud console, go to the IAM page.

      Go to IAM
    2. Select the project.
    3. 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.

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

    1. In the Google Cloud console, go to the IAM page.

      Buka IAM
    2. Pilih project.
    3. Klik Berikan akses.
    4. Di kolom New principals, masukkan ID pengguna Anda. Ini biasanya adalah alamat email untuk Akun Google.

    5. Di daftar Pilih peran, pilih peran.
    6. Untuk memberikan peran tambahan, klik Tambahkan peran lain, lalu tambahkan setiap peran tambahan.
    7. Klik Simpan.
    8. Pastikan jaringan VPC di project Google Cloud yang Anda gunakan dikonfigurasi untuk akses layanan pribadi ke AlloyDB.
    9. Tentukan region tempat Anda ingin membuat cluster tujuan. Semua entity Database Migration Service (profil koneksi, tugas migrasi) harus dibuat di region yang sama dengan cluster tujuan Anda.
    10. Siapkan pengguna database yang ingin Anda hubungkan ke cluster dan jalankan pernyataan migrasi di database sumber. Pengguna database ini memerlukan kumpulan izin dan peran tertentu. Sebaiknya buat pengguna database baru dan tetapkan secara khusus untuk tujuan melakukan migrasi.

    Mengonfigurasi instance sumber

    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:

    1. Konfigurasikan flag database di setiap instance di 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)

      Perhatikan contoh berikut:

      • Anda tidak memiliki replika baca di sumber.
      • 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.
      Dalam hal ini, jumlah max_replication_slots harus minimal 70, yang dihitung sebagai 30 * 2 + 10 + 0.
      max_wal_senders Tetapkan tanda ini ke setidaknya 10 lebih besar dari nilai max_replication_slots ditambah jumlah pengirim yang sudah digunakan di instance Anda.

      Misalnya, jika Anda menetapkan max_replication_slots flag ke 70 dan sudah menggunakan 2 pengirim, max_wal_senders harus minimal 82 (dihitung sebagai 70 + 10 + 2 = 82).

      max_worker_processes Tetapkan flag ini setidaknya ke 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 apa pun, tetapkan tanda ini ke 30.

    2. Nonaktifkan mode penerapan SSL di setiap instance di 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 di instance Anda.

    Untuk mengonfigurasi database, lakukan langkah-langkah berikut:

    1. Hubungkan ke database postgres default menggunakan klien psql.
    2. Instal ekstensi pglogical dengan menjalankan perintah berikut:

      CREATE EXTENSION IF NOT EXISTS pglogical;
      
    3. Berikan izin kepada pengguna database migrasi di semua skema kecuali skema information dan skema yang namanya dimulai dengan awalan pg_. 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 awalan pg_. Anda dapat mencantumkan semua skema database dengan meta-perintah \dn.

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

    5. 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 menggunakan perintah \connect {database_name_here}.

    6. Ulangi prosedur ini untuk setiap instance di cluster AlloyDB sumber Anda.

    Menjalankan migrasi di Database Migration Service

    Ikuti langkah-langkah berikut:

    1. 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 memulai.
      • Port: Masukkan 5432.
      • Region: Pilih region tempat cluster tujuan Anda berada.
      • Jenis enkripsi: Pilih Tidak ada.
    2. Buat dan jalankan tugas migrasi.

      Anda dapat membuat cluster AlloyDB baru terlebih dahulu, atau meminta Database Migration Service membuat cluster untuk Anda selama konfigurasi tugas migrasi. Untuk 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 ada.

    3. 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 di dokumentasi Database Migration Service.

      Tindakan ini menyebabkan cluster tujuan Anda keluar dari mode bootstrap (yaitu, cluster AlloyDB tujuan Anda tidak lagi dalam status hanya baca).

    4. (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 atau DELETE yang tidak ada secara manual. Lihat Memigrasikan operasi UPDATE dan DELETE untuk tabel non-kunci utama dalam dokumentasi Database Migration Service.

    5. Alihkan aplikasi Anda ke cluster baru. Aplikasi Anda kini dapat terhubung ke instance cluster baru di alamat IP barunya.