Bermigrasi dari AlloyDB Omni versi 15.5.2 dan yang lebih lama ke versi terbaru

Halaman ini memberikan petunjuk untuk melakukan migrasi dari versi 15.5.2 dan yang lebih lama ke AlloyDB Omni versi terbaru.

Mulai AlloyDB Omni 15.5.4, Anda dapat mengontrol AlloyDB Omni dengan alat pengelolaan paket umum.

Jika Anda sudah menginstal AlloyDB Omni, ikuti petunjuk di halaman ini untuk bermigrasi ke penginstalan satu image baru.

Prasyarat

Sebelum Anda dapat mulai mengupgrade ke AlloyDB Omni versi terbaru, selesaikan prasyarat berikut, jika Anda belum melakukannya.

Mengupgrade ke AlloyDB Omni 15.5.2

Versi AlloyDB Omni terbaru yang mendukung AlloyDB Omni CLI adalah 15.5.2. Untuk memeriksa versi AlloyDB Omni, jalankan perintah berikut:

sudo alloydb version

Outputnya terlihat mirip dengan yang berikut ini:

AlloyDB Omni CLI version: 1.6
AlloyDB Omni database server version: 15.5.2

Jika output menampilkan versi database yang lebih lama dari 15.5.2, jalankan perintah berikut untuk mengupgrade:

sudo alloydb database-server upgrade

Mengumpulkan informasi tentang penginstalan yang ada

  1. Jalankan perintah berikut:

    cat /var/alloydb/config/dataplane.conf
  2. Dari output perintah cat, catat nilai variabel berikut sebagai referensi Anda:

    • DATADIR_PATH—misalnya, /var/alloydb/main
    • ENABLE_ALLOYDB_AI—misalnya, FALSE
    • PGPORT—misalnya, 5432
    • INSTANCE_TYPE—misalnya, PRIMARY/READ_REPLICA

Menghapus indeks ScaNN yang dibuat dengan ekstensi postgres_ann

Ekstensi postgres_ann diganti namanya menjadi alloydb_scann. Jika telah menginstal ekstensi postgres_ann dan membuat indeks ScaNN menggunakan ekstensi tersebut, Anda harus menghapus semua indeks ScaNN dan meng-uninstal ekstensi sebelum melakukan upgrade.

Untuk menangani dampak apa pun pada database Anda karena penggantian nama ekstensi postgres_ann, selesaikan langkah-langkah berikut:

  1. Jalankan dan hubungkan ke AlloyDB Omni.
  2. Identifikasi semua tabel yang menggunakan indeks ScaNN.

     \c DATABASE_NAME
     select schemaname, relname, indexrelname, indextype, indexconfig, indexsize, indexscan FROM pg_stat_ann_indexes;

    Ganti DATABASE_NAME dengan nama database tempat Anda ingin menjalankan kueri.

  3. Simpan definisi dan parameter indeks sebagai DDL dump menggunakan utilitas seperti pg_dump untuk membuat ulang indeks ScaNN nanti.

    pg_dump -st TABLE_NAME DATABASE_NAME

    Ganti kode berikut:

    • DATABASE_NAME: nama database.
    • TABLE_NAME: nama tabel.
  4. Menghapus Indeks ScaNN yang dibuat menggunakan indeks postgres_ann.

    DROP INDEX INDEX_NAME;

    Ganti INDEX_NAME dengan nama database tempat Anda ingin menjalankan kueri.

  5. Pastikan tidak ada database Anda yang menyertakan indeks ScaNN. Gunakan kueri SQL berikut untuk memverifikasi penghapusan: SQL berikut akan menampilkan set hasil kosong.

     \c DATABASE_NAME
     select schemaname, relname, indexrelname, indextype, indexconfig, indexsize, indexscan FROM pg_stat_ann_indexes;
  6. Letakkan ekstensi postgres_ann menggunakan langkah-langkah berikut:

    1. Pastikan ekstensi postgres_ann diinstal di database Anda.
    select * from pg_extension;
    1. Hapus ekstensi postgres_ann.
    DROP EXTENSION postgres_ann CASCADE;
    1. Pastikan ekstensi postgres_ann tidak lagi diinstal di database Anda.
    select * from pg_extension;

Melakukan upgrade di tempat

  1. Hentikan database yang ada:

    sudo alloydb database-server stop
  2. Mulai AlloyDB Omni satu gambar baru, dengan memasang direktori data yang ada sebelumnya:

    docker run --name CONTAINER_NAME \
        -e POSTGRES_PASSWORD=PASSWORD \
        -e PGDATA=/var/lib/postgresql/data \
        -v /var/alloydb/main/data:/var/lib/postgresql/data \
        -v /dev/shm:/dev/shm \
        -p PGPORT:5432 \
        --network=host \
        --ulimit=nice=-20:-20 \
        --ulimit=core=-1:-1 \
        --log-driver=journald \
        -d google/alloydbomni

    Ganti kode berikut:

    • CONTAINER_NAME: Nama untuk menetapkan penampung AlloyDB Omni baru ini di registry penampung mesin host Anda—misalnya, my-omni.

    • PASSWORD: Sandi yang menetapkan pengguna postgres penampung baru setelah pembuatannya.

    • PGPORT: Alamat IP port tempat AlloyDB Omni berjalan. Ini adalah nilai yang Anda catat di langkah 2 Mengumpulkan informasi tentang penginstalan yang ada.

    Argumen untuk docker run adalah argumen yang digunakan di AlloyDB Omni versi sebelumnya, tetapi Anda dapat menyesuaikannya lebih lanjut. Lihat Menyesuaikan penginstalan AlloyDB Omni untuk mengetahui detailnya.

  3. Jika jenis instance database Anda adalah PRIMARY, jalankan perintah berikut untuk membuat pengguna berikut. Ini adalah nama pengguna yang saat ini tidak digunakan, tetapi dicadangkan untuk ekstensi mendatang.

    for name in alloydbagent alloydbexport alloydbiamgroupuser alloydbiamuser alloydbimportexport alloydbobservability alloydbsqllogical alloydbsuperuser; do
      echo docker exec -it CONTAINER_NAME psql -h localhost -U postgres alloydbadmin \
        -c "CREATE ROLE ${name} NOLOGIN;" \
        -c "CREATE TABLE ${name}_table();" \
        -c "ALTER TABLE ${name}_table OWNER TO ${name};"
    done
  4. Jika ENABLE_ALLOYDB_AI ditetapkan ke TRUE, ikuti petunjuk di Menginstal AlloyDB Omni dengan AlloyDB AI untuk menyiapkan AlloyDB AI.

  5. Hubungkan ke database untuk memverifikasi bahwa data tidak berubah:

    docker exec -it CONTAINER_NAME psql -h localhost -U postgres
  6. Uninstal AlloyDB Omni CLI:

    sudo alloydb database-server uninstall

    Penguninstalan CLI AlloyDB Omni tidak memengaruhi data Anda yang disimpan di AlloyDB Omni.

Membuat ulang indeks ScaNN menggunakan ekstensi alloydb_scann

Setelah Anda mengupgrade AlloyDB Omni, ekstensi alloydb_scann juga akan diinstal. Selesaikan langkah-langkah berikut untuk membuat ulang indeks ScaNN yang Anda hapus di bagian Menghapus indeks ScaNN yang dibuat dengan ekstensi postgres_ann sebelum upgrade.

  1. Buat ekstensi alloydb_scann menggunakan langkah-langkah berikut:

    1. Untuk membuat ekstensi alloydb_scann, jalankan kueri berikut:
    create extension alloydb_scann cascade;
    1. Pastikan ekstensi alloydb_scann berhasil dibuat.
    select * from pg_extension;
  2. Buat ulang indeks ScaNN untuk tabel Anda, lalu pulihkan definisi indeks DDL pg_dump sebelumnya.

    1. Buat indeks ScaNN pada tabel:
    CREATE INDEX INDEX_NAME ON TABLE_NAME
        USING scann (VECTOR_COLUMN DISTANCE)
        WITH (num_leaves = NUM_LEAVES_VALUE);

    Ganti kode berikut:

    • INDEX_NAME: nama indeks.
    • TABLE_NAME: nama tabel.
    • VECTOR_COLUMN: nama kolom yang menyimpan data vektor.
    • DISTANCE: fungsi jarak yang akan digunakan dengan indeks ini.
    • NUM_LEAVES_VALUE: jumlah partisi yang akan diterapkan ke indeks.
    1. Pastikan indeks dibuat.
    \d TABLE_NAME
    1. Direkomendasikan: Cadangkan data indeks Anda. Sebaiknya buat cadangan database dan indeks sebagai praktik terbaik.