Melakukan upgrade versi minor untuk AlloyDB Omni menggunakan container

Pilih versi dokumentasi:

Untuk menerapkan perbaikan bug, patch keamanan, dan peningkatan kecil tanpa memigrasikan data, lakukan upgrade versi database minor untuk AlloyDB Omni dengan mengganti image container dengan image versi minor yang lebih baru di jalur versi utama yang sama. Upgrade versi minor mempertahankan direktori data host dan file konfigurasi yang ada, serta memungkinkan Anda memverifikasi penginstalan yang diupgrade atau melakukan roll back ke versi minor sebelumnya jika diperlukan.

Untuk mengupgrade antar-versi utama PostgreSQL, lihat Mengupgrade AlloyDB Omni di VM.

Petunjuk di halaman ini berlaku untuk deployment node tunggal mandiri dan untuk node database individual dalam topologi multi-node, seperti deployment dengan replika baca atau node standby ketersediaan tinggi. Tinjau pertimbangan berikut berdasarkan penyiapan Anda:

  • Direktori data eksternal: Sebelum Anda menghentikan dan menghapus container, pastikan data database Anda disimpan di direktori host persisten yang dipasang ke dalam container (misalnya, -v DATA_DIR:/var/lib/postgresql/data). Menghapus container yang menyimpan data hanya di dalam sistem file container akan menghapus data database Anda. Untuk mengetahui informasi selengkapnya, lihat Menginstal AlloyDB Omni menggunakan container.
  • Topologi multi-node: Selalu upgrade semua node replika dan standby sebelum Anda mengupgrade node utama. Dalam penyiapan ketersediaan tinggi, jeda failover otomatis atau deteksi kegagalan sebelum menghentikan container, dan lakukan peralihan ke node standby yang diupgrade sebelum Anda mengupgrade node utama sebelumnya.
  • Image container kustom dengan ekstensi: Jika Anda membuat image container kustom dengan ekstensi pihak ketiga seperti PostGIS atau Orafce, bangun ulang image container kustom Anda menggunakan image dasar versi minor yang telah diupdate sebelum Anda membuat ulang container.

Sebelum memulai

Sebelum mengupgrade AlloyDB Omni, selesaikan langkah-langkah berikut:

  1. Rencanakan masa pemeliharaan atau periode nonaktif layanan singkat karena penggantian container memerlukan penghentian sementara layanan database.
  2. Lakukan pencadangan penuh database Anda sebelum memulai upgrade. Untuk mengetahui informasi selengkapnya, lihat Ringkasan pencadangan dan pemulihan.
  3. Jika Anda mengupgrade topologi multi-node, identifikasi node utama saat ini dan semua node standby atau replika, sehingga Anda dapat mengupgrade node standby dan replika terlebih dahulu.
  4. Periksa container yang sedang berjalan untuk mencatat image saat ini, pemasangan direktori data host, pemetaan port, variabel lingkungan, dan flag runtime-nya, sehingga Anda dapat membuat ulang container dengan konfigurasi yang sama:

    Docker

    docker inspect CONTAINER_NAME

    Podman

    podman inspect CONTAINER_NAME

    Ganti CONTAINER_NAME dengan nama container AlloyDB Omni Anda, misalnya, my-omni.

  5. Periksa versi database AlloyDB Omni Anda saat ini sebelum melakukan upgrade:

    Docker

    docker exec -it CONTAINER_NAME psql -h localhost -U postgres -c "SELECT version();"

    Podman

    podman exec -it CONTAINER_NAME psql -h localhost -U postgres -c "SELECT version();"

Mengambil image container yang telah diupdate

Ambil image container versi minor target ke mesin host Anda:

Docker

docker pull IMAGE_URI

Podman

podman pull IMAGE_URI

Ganti IMAGE_URI dengan URI image container dan tag versi minor yang ingin Anda upgrade—misalnya, google/alloydbomni:18.4.0 untuk image Debian atau google/alloydbomni:18.4.0-ubi9 untuk Red Hat Universal Base Image (UBI).

Jika deployment Anda menggunakan image container kustom dengan ekstensi seperti PostGIS atau Orafce, perbarui petunjuk FROM atau argumen build OMNI_VERSION di Dockerfile Anda untuk mereferensikan tag versi minor yang diperbarui, lalu build image kustom yang diperbarui sebelum melanjutkan.

Mengupgrade AlloyDB Omni

Untuk mengupgrade penginstalan AlloyDB Omni ke versi minor yang lebih baru, selesaikan langkah-langkah berikut di setiap node. Dalam topologi multi-node, selesaikan langkah-langkah ini di setiap node standby atau replika sebelum Anda mengupgrade node utama:

  1. Hentikan dan hapus container AlloyDB Omni yang ada:

    Docker

    docker container stop CONTAINER_NAME
    docker container rm CONTAINER_NAME

    Podman

    podman container stop CONTAINER_NAME
    podman container rm CONTAINER_NAME

    Menghentikan dan menghapus container tidak akan memengaruhi file database Anda di direktori data host yang terpasang.

  2. Buat ulang dan mulai container AlloyDB Omni menggunakan image versi minor yang telah diupdate dan pasang direktori data host yang ada:

    Docker

    docker run -d --name CONTAINER_NAME \
      -e POSTGRES_PASSWORD=PASSWORD \
      -v DATA_DIR:/var/lib/postgresql/data \
      -p HOST_PORT:5432 \
      --restart=always \
      IMAGE_URI

    Podman

    podman run -d --name CONTAINER_NAME \
      -e POSTGRES_PASSWORD=PASSWORD \
      -v DATA_DIR:/var/lib/postgresql/data \
      -p HOST_PORT:5432 \
      --restart=always \
      IMAGE_URI

    Ganti kode berikut:

    • CONTAINER_NAME: nama container AlloyDB Omni Anda—misalnya, my-omni.
    • PASSWORD: sandi untuk pengguna postgres container. Saat Anda memasang direktori data yang sudah diinisialisasi, penampung akan mempertahankan sandi yang sudah dikonfigurasi di database Anda.
    • DATA_DIR: jalur direktori host tempat data database yang ada disimpan.
    • HOST_PORT: port TCP pada mesin host yang memublikasikan port container 5432—misalnya, 5432.
    • IMAGE_URI: URI image container versi minor yang diperbarui (atau URI image kustom yang di-build ulang)—misalnya, google/alloydbomni:18.4.0.

    Gunakan varian OS image dasar yang sama (Debian atau UBI) seperti container sebelumnya sehingga kepemilikan file di direktori data host Anda cocok dengan pengguna postgres container. Jika container Anda sebelumnya menggunakan flag runtime tambahan, seperti --ulimit, --log-driver, --shm-size, atau -v /dev/shm:/dev/shm, sertakan flag tersebut saat Anda membuat ulang container. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan AlloyDB Omni untuk produksi.

Memverifikasi upgrade

Setelah Anda membuat ulang dan memulai container, pastikan layanan database menjalankan versi minor yang telah diupdate:

  1. Periksa status container AlloyDB Omni dan pastikan statusnya adalah Up:

    Docker

    docker ps --filter "name=CONTAINER_NAME"

    Podman

    podman ps --filter "name=CONTAINER_NAME"
  2. Hubungkan ke database dan pastikan versi yang diupgrade sudah aktif:

    Docker

    docker exec -it CONTAINER_NAME psql -h localhost -U postgres -c "SELECT version();"

    Podman

    podman exec -it CONTAINER_NAME psql -h localhost -U postgres -c "SELECT version();"

Me-roll back upgrade

Jika Anda perlu mengembalikan penginstalan AlloyDB Omni ke versi minor sebelumnya, hentikan dan hapus container yang diupgrade, lalu mulai container yang menggunakan image versi minor sebelumnya:

  1. Hentikan dan hapus container AlloyDB Omni yang diupgrade:

    Docker

    docker container stop CONTAINER_NAME
    docker container rm CONTAINER_NAME

    Podman

    podman container stop CONTAINER_NAME
    podman container rm CONTAINER_NAME
  2. Buat ulang dan mulai container menggunakan image versi minor sebelumnya dan pasang direktori data host yang sama:

    Docker

    docker run -d --name CONTAINER_NAME \
      -e POSTGRES_PASSWORD=PASSWORD \
      -v DATA_DIR:/var/lib/postgresql/data \
      -p HOST_PORT:5432 \
      --restart=always \
      ROLLBACK_IMAGE_URI

    Podman

    podman run -d --name CONTAINER_NAME \
      -e POSTGRES_PASSWORD=PASSWORD \
      -v DATA_DIR:/var/lib/postgresql/data \
      -p HOST_PORT:5432 \
      --restart=always \
      ROLLBACK_IMAGE_URI

    Ganti kode berikut:

    • CONTAINER_NAME: nama container AlloyDB Omni Anda—misalnya, my-omni.
    • PASSWORD: sandi untuk pengguna postgres container. Saat Anda memasang direktori data yang sudah diinisialisasi, penampung akan mempertahankan sandi yang sudah dikonfigurasi di database Anda.
    • DATA_DIR: jalur direktori host tempat data database yang ada disimpan.
    • HOST_PORT: port TCP pada mesin host yang memublikasikan port container 5432—misalnya, 5432.
    • ROLLBACK_IMAGE_URI: URI image container dan tag versi minor dari penginstalan sebelumnya (atau URI image kustom sebelumnya)—misalnya, google/alloydbomni:18.1.0.
  3. Pastikan container berjalan dan versi database sebelumnya aktif:

    Docker

    docker ps --filter "name=CONTAINER_NAME"
    docker exec -it CONTAINER_NAME psql -h localhost -U postgres -c "SELECT version();"

    Podman

    podman ps --filter "name=CONTAINER_NAME"
    podman exec -it CONTAINER_NAME psql -h localhost -U postgres -c "SELECT version();"

Langkah berikutnya