Upgrade ke AlloyDB Omni versi 18.1.0 di 1.7.0

Pilih versi dokumentasi:

Halaman ini menjelaskan cara melakukan upgrade versi utama ke AlloyDB Omni versi 18.1.0 di Kubernetes.

Sebelum memulai

Mengupgrade versi AlloyDB Omni

Untuk mengupgrade versi AlloyDB Omni menggunakan pg_upgrade, lakukan salah satu tindakan berikut:

Melakukan upgrade dengan skrip

Anda dapat menemukan skrip yang melakukan langkah-langkah upgrade manual di contoh AlloyDB Omni di GitHub.

Untuk menggunakan skrip upgrade, download skrip dan jalankan perintah berikut:

./MVU.sh 18.1.0 1.7.0 NAME NAMESPACE OS_TYPE

Ganti variabel berikut:

  • NAME: nama cluster database Anda.
  • NAMESPACE: namespace untuk cluster database Anda.
  • OS_TYPE: sistem operasi dasar untuk image database. Nilai yang valid adalah Debian dan UBI9. Jika tidak ditentukan, operator akan ditetapkan secara default ke UBI9 untuk versi database 16.9.0 dan yang lebih baru.

Melakukan langkah-langkah upgrade manual

Ikuti petunjuk untuk versi utama yang Anda upgrade.

Mengupgrade dari versi 17.x.x ke 18.1.0

  1. Cadangkan data Anda untuk menghindari kehilangan data.

  2. Hapus rencana pencadangan Anda.

  3. Hentikan semua proses replikasi. Hal ini mencakup replikasi fisik yang digunakan untuk ketersediaan tinggi (HA) dan ketahanan data (DR) serta semua replikasi logis aliran.

  4. Anotasikan cluster database Anda untuk menentukan upgrade versi manual.

    kubectl annotate dbclusters.alloydbomni.dbadmin.goog NAME dbs.dbadmin.goog.com/manualmvu=true
    

    Ganti variabel berikut:

    • NAME: nama cluster database Anda.
  5. Hentikan proses PostgreSQL dan pindahkan data untuk upgrade.

    kubectl exec -ti POD_NAME -- /bin/Bash
    # Shut down postgres
    postgres@POD_NAME:~$ supervisorctl.par stop postgres
    
    postgres@POD_NAME:~$ mkdir /mnt/disks/pgsql/17; mv /mnt/disks/pgsql/data /mnt/disks/pgsql/17/data; cp -r /usr/lib/postgresql/17/bin /mnt/disks/pgsql/17/.; cp -r /usr/lib/postgresql/17/lib /mnt/disks/pgsql/17/.; cp -r /usr/share/postgresql/17 /mnt/disks/pgsql/17/share; rm /mnt/disks/pgsql/17/share/postgresql.conf.sample; cp /usr/share/postgresql/postgresql.conf.sample /mnt/disks/pgsql/17/share/postgresql.conf.sample; chmod 2740 /mnt/disks/pgsql/17/data
    

    Ganti variabel berikut:

    • POD_NAME: nama pod Anda.
  6. Patch cluster database Anda ke versi 18.1.0 dan agen bidang kontrol (CPA) Anda ke 1.7.0.

    kubectl patch dbclusters.alloydbomni.dbadmin.goog NAME --type=merge -p '{"spec":{"databaseVersion":"18.1.0","controlPlaneAgentsVersion":"1.7.0","databaseImageOSType":"UBI9"}}'
    

    Ganti variabel berikut:

    • NAME: nama cluster database Anda.
  7. Buat cluster database kosong untuk versi AlloyDB Omni yang diupgrade.

    kubectl exec -ti POD_NAME -- /bin/Bash
    
    postgres@POD_NAME:~$ supervisorctl.par stop postgres
    
    # Initialize a new, empty database cluster for the new version.
    postgres@POD_NAME:~$ rm -fr /mnt/disks/pgsql/data; initdb -D /mnt/disks/pgsql/data -U alloydbadmin --data-checksums --encoding=UTF8 --locale=C --locale-provider=icu --icu-locale=und-x-icu --auth-host=trust --auth-local=reject; cd ~
    

    Ganti variabel berikut:

    • POD_NAME: nama pod Anda.
  8. Ubah pg_hba.conf di cluster database yang sudah ada untuk memberikan izin dan koneksi yang diperlukan proses upgrade.

    # Backup pg_hba.conf of the pg17 cluster
    postgres@POD_NAME:~$ cp /mnt/disks/pgsql/17/data/pg_hba.conf /mnt/disks/pgsql/17/data/pg_hba.conf.bak
    
    # Update pg17 configurations
    postgres@POD_NAME:~$ echo "local      all           all                      trust" >> /mnt/disks/pgsql/17/data/pg_hba.conf; echo "host       all           all      127.0.0.1/32    trust" >> /mnt/disks/pgsql/17/data/pg_hba.conf
    

    Ganti variabel berikut:

    • POD_NAME: nama pod Anda.
  9. Ubah pg_hba.conf di cluster database baru untuk memberikan izin dan koneksi yang diperlukan proses upgrade.

    postgres@POD_NAME:~$ rm /mnt/disks/pgsql/data/pg_hba.conf; echo "local      all           all                      trust" >> /mnt/disks/pgsql/data/pg_hba.conf; echo "host       all           all      127.0.0.1/32    trust" >> /mnt/disks/pgsql/data/pg_hba.conf; chmod 2740 /mnt/disks/pgsql/17/data
    

    Ganti variabel berikut:

    • POD_NAME: nama pod Anda.
  10. Upgrade cluster database Anda.

    # (optional) Make sure postgres is stopped
    postgres@POD_NAME:~$ supervisorctl.par stop postgres
    
    # (optional) Check to verify that data can be upgraded.
    postgres@POD_NAME:~$ pg_upgrade -U alloydbadmin --check -b /mnt/disks/pgsql/17/bin -B /usr/lib/postgresql/18/bin -d /mnt/disks/pgsql/17/data -D /mnt/disks/pgsql/data --link -v
    
    postgres@POD_NAME:~$ pg_upgrade -U alloydbadmin -b /mnt/disks/pgsql/17/bin -B /usr/lib/postgresql/18/bin -d /mnt/disks/pgsql/17/data -D /mnt/disks/pgsql/data --link -v
    
    # Recover pg17 configurations
    postgres@POD_NAME:~$ cp /mnt/disks/pgsql/17/data/pg_hba.conf.bak /mnt/disks/pgsql/data/pg_hba.conf; cp -r /mnt/disks/pgsql/17/data/postgresql.conf /mnt/disks/pgsql/data/.; cp -r /mnt/disks/pgsql/17/data/postgresql.conf.d /mnt/disks/pgsql/data/.; cp -r /mnt/disks/pgsql/17/data/parambackup /mnt/disks/pgsql/data/.
    
    # Start postgres
    postgres@POD_NAME:~$ supervisorctl.par start postgres
    
    # Clean up backup data
    postgres@POD_NAME:~$ rm -fr /mnt/disks/pgsql/17/
    

    Ganti variabel berikut:

    • POD_NAME: nama pod Anda.
  11. Setelah upgrade berhasil, hapus anotasi upgrade versi manual dari cluster database Anda.

    kubectl annotate dbclusters.alloydbomni.dbadmin.goog NAME dbs.dbadmin.goog.com/manualmvu-
    

    Ganti variabel berikut:

    • NAME: nama cluster database Anda.
  12. Lanjutkan operasi normal dan aktifkan kembali pencadangan, rencana pencadangan, atau proses replikasi yang Anda nonaktifkan pada langkah satu hingga tiga.

Mengupgrade dari versi 16.x.x ke 17.5.0

  1. Cadangkan data Anda untuk menghindari kehilangan data.

    1. Hapus rencana pencadangan Anda.
  2. Hentikan semua proses replikasi. Hal ini mencakup replikasi fisik yang digunakan untuk ketersediaan tinggi (HA) dan ketahanan data (DR) serta semua replikasi logis aliran.

  3. Anotasikan cluster database Anda untuk menentukan upgrade versi manual.

    kubectl annotate dbclusters.alloydbomni.dbadmin.goog NAME dbs.dbadmin.goog.com/manualmvu=true
    

    Ganti variabel berikut:

    • NAME: nama cluster database Anda.
  4. Hentikan proses PostgreSQL dan pindahkan data untuk upgrade.

    kubectl exec -ti POD_NAME -- /bin/Bash
    # Shut down postgres
    postgres@POD_NAME:~$ supervisorctl.par stop postgres
    
    postgres@POD_NAME:~$ mkdir /mnt/disks/pgsql/16; mv /mnt/disks/pgsql/data /mnt/disks/pgsql/16/data; cp -r /usr/lib/postgresql/16/bin /mnt/disks/pgsql/16/.; cp -r /usr/lib/postgresql/16/lib /mnt/disks/pgsql/16/.; cp -r /usr/share/postgresql/16 /mnt/disks/pgsql/16/share; rm /mnt/disks/pgsql/16/share/postgresql.conf.sample; cp /usr/share/postgresql/postgresql.conf.sample /mnt/disks/pgsql/16/share/postgresql.conf.sample; chmod 2740 /mnt/disks/pgsql/16/data
    

    Ganti variabel berikut:

    • POD_NAME: nama pod Anda.
  5. Patch cluster database Anda ke versi 17.5.0 dan agen bidang kontrol (CPA) Anda ke 1.6.2.

    kubectl patch dbclusters.alloydbomni.dbadmin.goog NAME --type=merge -p '{"spec":{"databaseVersion":"17.5.0","controlPlaneAgentsVersion":"1.6.2","databaseImageOSType":"UBI9"}}'
    

    Ganti variabel berikut:

    • NAME: nama cluster database Anda.
  6. Buat cluster database kosong untuk versi AlloyDB Omni yang diupgrade.

    kubectl exec -ti POD_NAME -- /bin/Bash
    
    postgres@POD_NAME:~$ supervisorctl.par stop postgres
    
    # Initialize a new, empty database cluster for the new version.
    postgres@POD_NAME:~$ rm -fr /mnt/disks/pgsql/data; initdb -D /mnt/disks/pgsql/data -U alloydbadmin --data-checksums --encoding=UTF8 --locale=C --locale-provider=icu --icu-locale=und-x-icu --auth-host=trust --auth-local=reject; cd ~
    

    Ganti variabel berikut:

    • POD_NAME: nama pod Anda.
  7. Ubah pg_hba.conf di cluster database yang sudah ada untuk memberikan izin dan koneksi yang diperlukan proses upgrade.

    # Backup pg_hba.conf of the pg16 cluster
    postgres@POD_NAME:~$ cp /mnt/disks/pgsql/16/data/pg_hba.conf /mnt/disks/pgsql/16/data/pg_hba.conf.bak
    
    # Update pg16 configurations
    postgres@POD_NAME:~$ echo "local      all           all                      trust" >> /mnt/disks/pgsql/16/data/pg_hba.conf; echo "host       all           all      127.0.0.1/32    trust" >> /mnt/disks/pgsql/16/data/pg_hba.conf
    

    Ganti variabel berikut:

    • POD_NAME: nama pod Anda.
  8. Ubah pg_hba.conf di cluster database baru untuk memberikan izin dan koneksi yang diperlukan proses upgrade.

    postgres@POD_NAME:~$ rm /mnt/disks/pgsql/data/pg_hba.conf; echo "local      all           all                      trust" >> /mnt/disks/pgsql/data/pg_hba.conf; echo "host       all           all      127.0.0.1/32    trust" >> /mnt/disks/pgsql/data/pg_hba.conf; chmod 2740 /mnt/disks/pgsql/16/data
    

    Ganti variabel berikut:

    • POD_NAME: nama pod Anda.
  9. Upgrade cluster database Anda.

    # (optional) Make sure postgres is stopped
    postgres@POD_NAME:~$ supervisorctl.par stop postgres
    
    # (optional) Check to verify that data can be upgraded.
    postgres@POD_NAME:~$ pg_upgrade -U alloydbadmin --check -b /mnt/disks/pgsql/16/bin -B /usr/lib/postgresql/17/bin -d /mnt/disks/pgsql/16/data -D /mnt/disks/pgsql/data --link -v
    
    postgres@POD_NAME:~$ pg_upgrade -U alloydbadmin -b /mnt/disks/pgsql/16/bin -B /usr/lib/postgresql/17/bin -d /mnt/disks/pgsql/16/data -D /mnt/disks/pgsql/data --link -v
    
    # Recover pg16 configurations
    postgres@POD_NAME:~$ cp /mnt/disks/pgsql/16/data/pg_hba.conf.bak /mnt/disks/pgsql/data/pg_hba.conf; cp -r /mnt/disks/pgsql/16/data/postgresql.conf /mnt/disks/pgsql/data/.; cp -r /mnt/disks/pgsql/16/data/postgresql.conf.d /mnt/disks/pgsql/data/.; cp -r /mnt/disks/pgsql/16/data/parambackup /mnt/disks/pgsql/data/.
    
    # Start postgres
    postgres@POD_NAME:~$ supervisorctl.par start postgres
    
    # Clean up backup data
    postgres@POD_NAME:~$ rm -fr /mnt/disks/pgsql/16/
    

    Ganti variabel berikut:

    • POD_NAME: nama pod Anda.
  10. Setelah upgrade berhasil, hapus anotasi upgrade versi manual dari cluster database Anda.

    kubectl annotate dbclusters.alloydbomni.dbadmin.goog NAME dbs.dbadmin.goog.com/manualmvu-
    

    Ganti variabel berikut:

    • NAME: nama cluster database Anda.
  11. Lanjutkan operasi normal dan aktifkan kembali pencadangan, rencana pencadangan, atau proses replikasi yang Anda nonaktifkan pada langkah satu hingga tiga.

Mengupgrade dari versi 15.x.x ke 17.5.0

  1. Cadangkan data Anda untuk menghindari kehilangan data.

  2. Hapus rencana pencadangan Anda.

  3. Hentikan semua proses replikasi. Hal ini mencakup replikasi fisik yang digunakan untuk ketersediaan tinggi (HA) dan ketahanan data (DR) serta semua replikasi logis aliran.

  4. Anotasikan cluster database Anda untuk menentukan upgrade versi manual.

    kubectl annotate dbclusters.alloydbomni.dbadmin.goog NAME dbs.dbadmin.goog.com/manualmvu=true
    

    Ganti variabel berikut:

    • NAME: nama cluster database Anda.
  5. Hentikan proses PostgreSQL dan pindahkan data untuk upgrade.

    kubectl exec -ti POD_NAME -- /bin/Bash
    # Shut down postgres
    postgres@POD_NAME:~$ supervisorctl.par stop postgres
    
    postgres@POD_NAME:~$ mkdir /mnt/disks/pgsql/15; mv /mnt/disks/pgsql/data /mnt/disks/pgsql/15/data; cp -r /usr/lib/postgresql/15/bin /mnt/disks/pgsql/15/.; cp -r /usr/lib/postgresql/15/lib /mnt/disks/pgsql/15/.; cp -r /usr/share/postgresql/15 /mnt/disks/pgsql/15/share; rm /mnt/disks/pgsql/15/share/postgresql.conf.sample; cp /usr/share/postgresql/postgresql.conf.sample /mnt/disks/pgsql/15/share/postgresql.conf.sample; chmod 2740 /mnt/disks/pgsql/15/data
    

    Ganti variabel berikut:

    • POD_NAME: nama pod Anda.
  6. Patch cluster database Anda ke versi 17.5.0 dan agen bidang kontrol (CPA) Anda ke 1.6.2.

    kubectl patch dbclusters.alloydbomni.dbadmin.goog NAME --type=merge -p '{"spec":{"databaseVersion":"17.5.0","controlPlaneAgentsVersion":"1.6.2","databaseImageOSType":"UBI9"}}'
    

    Ganti variabel berikut:

    • NAME: nama cluster database Anda.
  7. Buat cluster database kosong untuk versi AlloyDB Omni yang diupgrade.

    kubectl exec -ti POD_NAME -- /bin/Bash
    
    postgres@POD_NAME:~$ supervisorctl.par stop postgres
    
    # Initialize a new, empty database cluster for the new version.
    postgres@POD_NAME:~$ rm -fr /mnt/disks/pgsql/data; initdb -D /mnt/disks/pgsql/data -U alloydbadmin --data-checksums --encoding=UTF8 --locale=C --locale-provider=icu --icu-locale=und-x-icu --auth-host=trust --auth-local=reject; cd ~
    

    Ganti variabel berikut:

    • POD_NAME: nama pod Anda.
  8. Ubah pg_hba.conf di cluster database yang sudah ada untuk memberikan izin dan koneksi yang diperlukan proses upgrade.

    # Backup pg_hba.conf of the pg15 cluster
    postgres@POD_NAME:~$ cp /mnt/disks/pgsql/15/data/pg_hba.conf /mnt/disks/pgsql/15/data/pg_hba.conf.bak
    
    # Update pg15 configurations
    postgres@POD_NAME:~$ echo "local      all           all                      trust" >> /mnt/disks/pgsql/15/data/pg_hba.conf; echo "host       all           all      127.0.0.1/32    trust" >> /mnt/disks/pgsql/15/data/pg_hba.conf
    

    Ganti variabel berikut:

    • POD_NAME: nama pod Anda.
  9. Ubah pg_hba.conf di cluster database baru untuk memberikan izin dan koneksi yang diperlukan proses upgrade.

    postgres@POD_NAME:~$ rm /mnt/disks/pgsql/data/pg_hba.conf; echo "local      all           all                      trust" >> /mnt/disks/pgsql/data/pg_hba.conf; echo "host       all           all      127.0.0.1/32    trust" >> /mnt/disks/pgsql/data/pg_hba.conf; chmod 2740 /mnt/disks/pgsql/15/data
    

    Ganti variabel berikut:

    • POD_NAME: nama pod Anda.
  10. Upgrade cluster database Anda.

    # (optional) Make sure postgres is stopped
    postgres@POD_NAME:~$ supervisorctl.par stop postgres
    
    # (optional) Check to verify that data can be upgraded.
    postgres@POD_NAME:~$ pg_upgrade -U alloydbadmin --check -b /mnt/disks/pgsql/15/bin -B /usr/lib/postgresql/17/bin -d /mnt/disks/pgsql/15/data -D /mnt/disks/pgsql/data --link -v
    
    postgres@POD_NAME:~$ pg_upgrade -U alloydbadmin -b /mnt/disks/pgsql/15/bin -B /usr/lib/postgresql/17/bin -d /mnt/disks/pgsql/15/data -D /mnt/disks/pgsql/data --link -v
    
    # Recover pg15 configurations
    postgres@POD_NAME:~$ cp /mnt/disks/pgsql/15/data/pg_hba.conf.bak /mnt/disks/pgsql/data/pg_hba.conf; cp -r /mnt/disks/pgsql/15/data/postgresql.conf /mnt/disks/pgsql/data/.; cp -r /mnt/disks/pgsql/15/data/postgresql.conf.d /mnt/disks/pgsql/data/.; cp -r /mnt/disks/pgsql/15/data/parambackup /mnt/disks/pgsql/data/.
    
    # Start postgres
    postgres@POD_NAME:~$ supervisorctl.par start postgres
    
    # Clean up backup data
    postgres@POD_NAME:~$ rm -fr /mnt/disks/pgsql/15/
    

    Ganti variabel berikut:

    • POD_NAME: nama pod Anda.
  11. Setelah upgrade berhasil, hapus anotasi upgrade versi manual dari cluster database Anda.

    kubectl annotate dbclusters.alloydbomni.dbadmin.goog NAME dbs.dbadmin.goog.com/manualmvu-
    

    Ganti variabel berikut:

    • NAME: nama cluster database Anda.
  12. Lanjutkan operasi normal dan aktifkan kembali pencadangan, rencana pencadangan, atau proses replikasi yang Anda nonaktifkan pada langkah satu hingga tiga.