在 VM 上升級至 AlloyDB Omni 15.7.1 版

選取說明文件版本:

本頁說明如何從 15.5.2 版和更早版本遷移至最新版 AlloyDB Omni。

從 AlloyDB Omni 15.5.4 開始,您可以使用常見的套件管理工具控制 AlloyDB Omni。

如果您已安裝 AlloyDB Omni,請按照本頁的指示,遷移至新的單一映像檔安裝程序。

必要條件

如要升級至最新版 AlloyDB Omni,請先完成下列先決條件。

升級至 AlloyDB Omni 15.5.2

支援 AlloyDB Omni CLI 的最新 AlloyDB Omni 版本為 15.5.2。 如要檢查 AlloyDB Omni 版本,請執行下列指令:

sudo alloydb version

輸出看起來類似以下內容:

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

如果輸出內容顯示的資料庫版本早於 15.5.2,請執行下列指令來升級:

sudo alloydb database-server upgrade

收集現有安裝項目的相關資訊

  1. 執行下列指令:

    cat /var/alloydb/config/dataplane.conf
  2. cat 指令的輸出內容中,記下下列變數的值以供參考:

    • DATADIR_PATH,例如 /var/alloydb/main
    • ENABLE_ALLOYDB_AI,例如 FALSE
    • PGPORT,例如 5432
    • INSTANCE_TYPE,例如 PRIMARY/READ_REPLICA

捨棄使用 postgres_ann 擴充功能建立的 ScaNN 索引

postgres_ann」擴充功能已重新命名為「alloydb_scann」。如果您已安裝 postgres_ann 擴充功能,並使用該擴充功能建立 ScaNN 索引,請務必先捨棄所有 ScaNN 索引並解除安裝擴充功能,再執行升級作業。

如要處理 postgres_ann 擴充功能重新命名對資料庫造成的影響,請完成下列步驟:

  1. 執行並連線至 AlloyDB Omni
  2. 找出使用 ScaNN 索引的所有資料表。

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

    DATABASE_NAME 替換為要執行查詢的資料庫名稱。

  3. 使用 pg_dump 等公用程式,將索引定義和參數儲存為傾印 DDL,以便稍後重新建立 ScaNN 索引。

    pg_dump -st TABLE_NAME DATABASE_NAME

    更改下列內容:

    • DATABASE_NAME:資料庫名稱。
    • TABLE_NAME:資料表名稱。
  4. 捨棄使用 postgres_ann 索引建立的 ScaNN 索引。

    DROP INDEX INDEX_NAME;

    INDEX_NAME 替換為要執行查詢的資料庫名稱。

  5. 確認資料庫未包含 ScaNN 索引。使用下列 SQL 查詢驗證刪除作業:下列 SQL 應會傳回空白結果集。

     \c DATABASE_NAME
     select schemaname, relname, indexrelname, indextype, indexconfig, indexsize, indexscan FROM pg_stat_ann_indexes;
  6. 請按照下列步驟捨棄 postgres_ann 擴充功能:

    1. 確認資料庫中已安裝 postgres_ann 擴充功能。
    select * from pg_extension;
    1. 捨棄 postgres_ann 擴充功能。
    DROP EXTENSION postgres_ann CASCADE;
    1. 確認資料庫中已不再安裝 postgres_ann 擴充功能。
    select * from pg_extension;

執行直接升級

  1. 停止現有資料庫:

    sudo alloydb database-server stop
  2. 啟動新的單一映像檔 AlloyDB Omni,並掛接先前的現有資料目錄:

    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

    更改下列內容:

    • CONTAINER_NAME:要在主機的容器登錄中指派給這個新 AlloyDB Omni 容器的名稱,例如 my-omni

    • PASSWORD:新容器的 postgres 使用者在建立後獲派的密碼。

    • PGPORT:AlloyDB Omni 執行的連接埠 IP 位址。這是您在「收集現有安裝作業的相關資訊」的步驟 2 中記下的值。

    docker run 的引數與舊版 AlloyDB Omni 相同,但您可以進一步自訂。詳情請參閱「自訂 AlloyDB Omni 安裝作業」。

  3. 如果資料庫執行個體類型為 PRIMARY,請執行下列指令來建立下列使用者。這些使用者名稱目前未使用,但保留供日後擴充功能使用。

    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. 如果 ENABLE_ALLOYDB_AITRUE,請按照「安裝 AlloyDB Omni with AlloyDB AI」一文中的操作說明設定 AlloyDB AI。

  5. 連線至資料庫,確認資料未變更:

    docker exec -it CONTAINER_NAME psql -h localhost -U postgres
  6. 解除安裝 AlloyDB Omni CLI:

    sudo alloydb database-server uninstall

    解除安裝 AlloyDB Omni CLI 不會影響儲存在 AlloyDB Omni 中的資料。

使用 alloydb_scann 擴充功能重新建立 ScaNN 索引

升級 AlloyDB Omni 後,系統也會安裝 alloydb_scann 擴充功能。如要重建升級前在「捨棄使用 postgres_ann 擴充功能建立的 ScaNN 索引」一節中捨棄的 ScaNN 索引,請完成下列步驟。

  1. 請按照下列步驟建立 alloydb_scann 擴充功能:

    1. 如要建立 alloydb_scann 擴充功能,請執行下列查詢:
    create extension alloydb_scann cascade;
    1. 確認 alloydb_scann 擴充功能已成功建立。
    select * from pg_extension;
  2. 為資料表重新建立 ScaNN 索引,然後還原先前的 pg_dump DDL 索引定義。

    1. 在資料表上建立 ScaNN 索引:
    CREATE INDEX INDEX_NAME ON TABLE_NAME
        USING scann (VECTOR_COLUMN DISTANCE)
        WITH (num_leaves = NUM_LEAVES_VALUE);

    更改下列內容:

    • INDEX_NAME:索引名稱。
    • TABLE_NAME:資料表名稱。
    • VECTOR_COLUMN:儲存向量資料的資料欄名稱。
    • DISTANCE:要用於這個索引的距離函式。
    • NUM_LEAVES_VALUE:要套用至索引的分區數量。
    1. 確認索引已建立。
    \d TABLE_NAME
    1. 建議:備份索引資料。建議您備份資料庫和索引,以防萬一。