Mengupgrade ke AlloyDB Omni versi 16.8.0 di VM

Pilih versi dokumentasi:

Halaman ini menjelaskan cara mengupgrade penampung berbasis AlloyDB Omni PostgreSQL 15 ke AlloyDB Omni PostgreSQL 16 menggunakan pg_upgrade. Petunjuk di halaman ini menjelaskan langkah-langkah upgrade untuk AlloyDB Omni yang di-deploy sebagai server mandiri dan untuk AlloyDB Omni yang dikonfigurasi sebagai node standby yang direplikasi. Penggunaan pg_upgrade membantu memastikan bahwa upgrade selesai tanpa kehilangan data.

Untuk mengetahui informasi selengkapnya tentang opsi upgrade PostgreSQL, lihat pg_upgrade.

Sebelum memulai

  • Sebelum memulai upgrade, sebaiknya buat cadangan lengkap cluster database Anda.
  • Untuk memastikan layanan AlloyDB Omni 15 berjalan, jalankan perintah berikut:

    Docker

    docker exec ALLOYDB15_CONTAINER psql -U postgres -c "SELECT 1;"
    

    Podman

    podman exec ALLOYDB15_CONTAINER psql -U postgres -c "SELECT 1;"
    
  • Ekstensi pg_squeeze di PostgreSQL 15 tidak didukung di AlloyDB Omni PostgreSQL 16.8.0. Jika pg_squeeze ada di penginstalan AlloyDB Omni 15, Anda harus menghapus ekstensi sebelum melakukan upgrade ke AlloyDB Omni 16.

    Jika Anda menginstal ekstensi kustom di atas AlloyDB Omni, pastikan ekstensi kustom tersebut juga diinstal di image 16.8.0. Periksa ekstensi yang diinstal dengan menjalankan perintah berikut:

    Docker

    docker exec ALLOYDB15_CONTAINER psql -U postgres -d postgres -c "
    SELECT * FROM pg_extension;"
    

    Podman

    podman exec ALLOYDB15_CONTAINER psql -U postgres -d postgres -c "
    SELECT * FROM pg_extension;
    
  • Jika Anda mengupgrade dari AlloyDB Omni versi 15.5.2 atau yang lebih lama, Anda harus mengupgrade terlebih dahulu ke AlloyDB Omni 15 versi yang lebih baru. Migrasikan dari AlloyDB Omni versi 15.5.2 dan yang lebih lama ke versi terbaru.

Mengupgrade AlloyDB Omni di lingkungan container Docker

Untuk mengupgrade dari AlloyDB Omni PostgreSQL 15 ke AlloyDB Omni PostgreSQL 16.8.0 di lingkungan container Docker atau Podman, ikuti langkah-langkah berikut:

Docker

  1. Salin bin dan bagikan direktori dari versi penampung AlloyDB Omni yang ingin Anda upgrade:

    mkdir -p TMP/alloydb15_bin TMP/alloydb15_share
    docker cp ALLOYDB15_CONTAINER:/usr/lib/postgresql/15 TMP/alloydb15_bin
    docker cp ALLOYDB15_CONTAINER:/usr/share/postgresql/15 TMP/alloydb15_share
    
  2. Buat direktori data baru untuk container AlloyDB Omni PostgreSQL 16 tempat data yang diupgrade akan disimpan:

    mkdir -p DATA_PATH/16/data
    chown 999 DATA_PATH/16/data
    
  3. Mulai container yang menjalankan AlloyDB Omni PostgreSQL 16 dengan semua jalur yang di-mount di jaringan yang sama dengan container AlloyDB Omni sebelumnya. Lihat contoh berikut:

    docker run -d --name ALLOYDB16_CONTAINER \
      -e POSTGRES_PASSWORD=PASSWORD -e PGPORT=5433 \
      -v DATA_PATH/16/data:/var/lib/postgresql/data \
      -v DATA_PATH/15/data:/var/lib/postgresql/old_data \
      -v TMP/alloydb15_bin/15:/usr/lib/postgresql/15 \
      -v TMP/alloydb15_share/15:/usr/share/postgresql/15 \
      --network container:ALLOYDB15_CONTAINER \
      google/alloydbomni:IMAGE_TAG /bin/sleep infinity
    
  4. Lakukan inisialisasi direktori data baru untuk versi container yang diupgrade.

    docker exec -u postgres ALLOYDB16_CONTAINER bash -c "
      cd /tmp;
      initdb -D /var/lib/postgresql/data --frozen-collations --encoding=UTF8 --locale=C --locale-provider=icu --icu-locale=und-x-icu
    

    Jika cluster lama memiliki setelan khusus, misalnya, --data-checksum atau --locale, Anda juga harus meneruskan parameter tersebut untuk membuat container AlloyDB Omni 16.

  5. Jika Anda mengaktifkan kebijakan mulai ulang pada container versi sebelumnya, Anda harus menonaktifkan kebijakan mulai ulang, seperti yang ditunjukkan dalam contoh berikut:

    docker update --restart=no ALLOYDB15_CONTAINER
    
  6. Jalankan pg_upgrade --check untuk memverifikasi bahwa cluster siap diupgrade ke AlloyDB Omni 16.

    docker exec -u postgres ALLOYDB16_CONTAINER bash -c "
     cd /tmp;
    
     pg_upgrade -p 5432 -P 5433 --check -v \
                -b /usr/lib/postgresql/15/bin \
                -B /usr/lib/postgresql/16/bin \
                -d /var/lib/postgresql/old_data \
                -D /var/lib/postgresql/data"
    

    Setelah perintah pg_upgrade --check selesai, Anda akan melihat output yang berakhir dengan Clusters are compatible, yang menunjukkan bahwa cluster siap diupgrade. Perintah ini juga memeriksa dan menghentikan container AlloyDB Omni PostgreSQL 15. Setelah pg_upgrade --check selesai, aplikasi tidak dapat lagi terhubung ke database atau menjalankan kueri apa pun.

  7. Jalankan pg_upgrade untuk menyalin data yang diupgrade ke direktori data baru, lalu verifikasi bahwa pg_upgrade telah berhasil diselesaikan dan bahwa penampung AlloyDB Omni PostgreSQL 15 telah keluar:

    docker exec -u postgres ALLOYDB16_CONTAINER bash -c "
      cd /tmp;
      pg_upgrade -v --copy \
           -b /usr/lib/postgresql/15/bin \
           -B /usr/lib/postgresql/16/bin \
           -d /var/lib/postgresql/old_data \
           -D /var/lib/postgresql/data"
    
    docker ps -a
    
  8. Jika pg_upgrade gagal, lakukan roll back ke container AlloyDB Omni PostgreSQL 15 dengan memulai container PostgreSQL 15:

    docker logs ALLOYDB16_CONTAINER
    docker rm -f ALLOYDB15_CONTAINER ALLOYDB16_CONTAINER
    docker run -d --name ALLOYDB15_CONTAINER -p 5432:5432 \
      -e POSTGRES_PASSWORD=postgres \
      -v DATA_PATH/15/data:/var/lib/postgresql/data \
      google/alloydbomni:15
    

    Untuk mengetahui alasan kegagalan upgrade, tinjau log.

  9. Jika upgrade berhasil, hapus dan mulai ulang container AlloyDB Omni PostgreSQL 16:

    docker rm -f ALLOYDB16_CONTAINER ALLOYDB15_CONTAINER
    docker run -d --name ALLOYDB16_CONTAINER -p 5432:5432 \
      -e POSTGRES_PASSWORD=postgres \
      -v DATA_PATH/16/data:/var/lib/postgresql/data \
      google/alloydbomni:16
    

Podman

  1. Salin bin dan bagikan direktori dari versi penampung AlloyDB Omni yang ingin Anda upgrade:

    mkdir -p TMP/alloydb15_bin TMP/alloydb15_share
    podman cp ALLOYDB15_CONTAINER:/usr/lib/postgresql/15 TMP/alloydb15_bin
    podman cp ALLOYDB15_CONTAINER:/usr/share/postgresql/15 TMP/alloydb15_share
    
  2. Buat direktori data baru untuk container AlloyDB Omni PostgreSQL 16 tempat data yang diupgrade akan disimpan:

    mkdir -p DATA_PATH/16/data
    chown 999 DATA_PATH/16/data
    
  3. Mulai container yang menjalankan AlloyDB Omni PostgreSQL 16 dengan semua jalur yang di-mount di jaringan yang sama dengan container AlloyDB Omni sebelumnya. Lihat contoh berikut:

    podman run -d --name ALLOYDB16_CONTAINER \
      -e POSTGRES_PASSWORD=PASSWORD -e PGPORT=5433 \
      -v DATA_PATH/16/data:/var/lib/postgresql/data \
      -v DATA_PATH/15/data:/var/lib/postgresql/old_data \
      -v TMP/alloydb15_bin/15:/usr/lib/postgresql/15 \
      -v TMP/alloydb15_share/15:/usr/share/postgresql/15 \
      --network container:ALLOYDB15_CONTAINER \
      google/alloydbomni:16 /bin/sleep infinity
    
  4. Lakukan inisialisasi direktori data baru untuk versi container yang diupgrade.

    podman exec -u postgres ALLOYDB16_CONTAINER bash -c "
      cd /tmp;
      initdb -D /var/lib/postgresql/data --frozen-collations --encoding=UTF8 --locale=C --locale-provider=icu --icu-locale=und-x-icu
    

    Jika cluster lama memiliki setelan khusus, misalnya, --data-checksum atau --locale, Anda juga harus meneruskan parameter tersebut untuk membuat container AlloyDB Omni 16.

  5. Jika Anda mengaktifkan kebijakan mulai ulang pada container versi sebelumnya, Anda harus menonaktifkan kebijakan mulai ulang, seperti yang ditunjukkan dalam contoh berikut:

    podman update --restart=no ALLOYDB15_CONTAINER
    
  6. Jalankan pg_upgrade --check untuk memverifikasi bahwa cluster siap diupgrade ke AlloyDB Omni 16.

    podman exec -u postgres ALLOYDB16_CONTAINER bash -c "
     cd /tmp;
    
     pg_upgrade -p 5432 -P 5433 --check -v \
                -b /usr/lib/postgresql/15/bin \
                -B /usr/lib/postgresql/16/bin \
                -d /var/lib/postgresql/old_data \
                -D /var/lib/postgresql/data"
    

    Setelah perintah pg_upgrade --check selesai, Anda akan melihat output yang berakhir dengan Clusters are compatible, yang menunjukkan bahwa cluster siap diupgrade. Perintah ini juga memeriksa dan menghentikan container AlloyDB Omni PostgreSQL 15. Setelah pg_upgrade --check selesai, aplikasi tidak dapat lagi terhubung ke database atau menjalankan kueri apa pun.

  7. Jalankan pg_upgrade untuk menyalin data yang diupgrade ke direktori data baru, lalu verifikasi bahwa pg_upgrade telah berhasil diselesaikan dan bahwa penampung AlloyDB Omni PostgreSQL 15 telah keluar:

    podman exec -u postgres ALLOYDB16_CONTAINER bash -c "
      cd /tmp;
      pg_upgrade -v --copy \
           -b /usr/lib/postgresql/15/bin \
           -B /usr/lib/postgresql/16/bin \
           -d /var/lib/postgresql/old_data \
           -D /var/lib/postgresql/data"
    
    podman ps -a
    
  8. Jika pg_upgrade gagal, lakukan roll back ke container AlloyDB Omni PostgreSQL 15 dengan memulai container PostgreSQL 15:

    podman logs ALLOYDB16_CONTAINER
    podman rm -f ALLOYDB15_CONTAINER ALLOYDB16_CONTAINER
    podman run -d --name ALLOYDB15_CONTAINER -p 5432:5432 \
      -e POSTGRES_PASSWORD=postgres \
      -v DATA_PATH/15/data:/var/lib/postgresql/data \
      google/alloydbomni:15
    

    Untuk mengetahui alasan kegagalan upgrade, tinjau log.

  9. Jika upgrade berhasil, hapus dan mulai ulang container AlloyDB Omni PostgreSQL 16:

    podman rm -f ALLOYDB16_CONTAINER ALLOYDB15_CONTAINER
    podman run -d --name ALLOYDB16_CONTAINER -p 5432:5432 \
      -e POSTGRES_PASSWORD=postgres \
      -v DATA_PATH/16/data:/var/lib/postgresql/data \
      google/alloydbomni:16
    

Mengupgrade server AlloyDB Omni di node standby

Jika server AlloyDB Omni Anda di-deploy dengan konfigurasi standby yang direplikasi secara aktif dan streaming, Anda tidak dapat menjalankan pg_upgrade di node standby. Untuk mengupgrade server AlloyDB Omni di node standby, sebaiknya, sebelum mengupgrade AlloyDB Omni di node aktif, pastikan tidak ada jeda replikasi di node standby.

Untuk mengupgrade server AlloyDB Omni standby, ikuti langkah-langkah umum berikut:

  1. Hentikan container AlloyDB Omni standby sebelum mengupgrade node Aktif.
  2. Setelah node aktif diupgrade, sinkronkan direktori data yang diupgrade dari node aktif baru ke node standby menggunakan rsync. Untuk mengetahui informasi selengkapnya tentang cara mengupgrade server standby yang direplikasi streaming, lihat pg_upgrade.
  3. Mulai penampung menggunakan image PostgreSQL 16 AlloyDB untuk PostgreSQL menggunakan direktori data yang sama.

Jika Anda menggunakan replikasi logis, lihat Mengupgrade Data melalui Replikasi.