從 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
收集現有安裝項目的相關資訊
執行下列指令:
cat /var/alloydb/config/dataplane.conf
從
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
擴充功能重新命名對資料庫造成的影響,請完成下列步驟:
- 執行並連線至 AlloyDB Omni。
找出使用
ScaNN
索引的所有資料表。\c DATABASE_NAME select schemaname, relname, indexrelname, indextype, indexconfig, indexsize, indexscan FROM pg_stat_ann_indexes;
將
DATABASE_NAME
替換為要執行查詢的資料庫名稱。使用
pg_dump
等公用程式,將索引定義和參數儲存為傾印 DDL,以便稍後重新建立ScaNN
索引。pg_dump -st TABLE_NAME DATABASE_NAME
更改下列內容:
DATABASE_NAME
:資料庫名稱。TABLE_NAME
:資料表名稱。
捨棄使用
postgres_ann
索引建立的ScaNN
索引。DROP INDEX INDEX_NAME;
將
INDEX_NAME
替換為要執行查詢的資料庫名稱。確認資料庫未包含
ScaNN
索引。使用下列 SQL 查詢驗證刪除作業:下列 SQL 應會傳回空白結果集。\c DATABASE_NAME select schemaname, relname, indexrelname, indextype, indexconfig, indexsize, indexscan FROM pg_stat_ann_indexes;
請按照下列步驟捨棄
postgres_ann
擴充功能:- 確認資料庫中已安裝
postgres_ann
擴充功能。
select * from pg_extension;
- 捨棄
postgres_ann
擴充功能。
DROP EXTENSION postgres_ann CASCADE;
- 確認資料庫中已不再安裝
postgres_ann
擴充功能。
select * from pg_extension;
- 確認資料庫中已安裝
執行直接升級
停止現有資料庫:
sudo alloydb database-server stop
啟動新的單一映像檔 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 安裝作業」。如果資料庫執行個體類型為
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
如果
ENABLE_ALLOYDB_AI
為TRUE
,請按照「安裝 AlloyDB Omni with AlloyDB AI」一文中的操作說明設定 AlloyDB AI。連線至資料庫,確認資料未變更:
docker exec -it CONTAINER_NAME psql -h localhost -U postgres
解除安裝 AlloyDB Omni CLI:
sudo alloydb database-server uninstall
解除安裝 AlloyDB Omni CLI 不會影響儲存在 AlloyDB Omni 中的資料。
使用 alloydb_scann
擴充功能重新建立 ScaNN 索引
升級 AlloyDB Omni 後,系統也會安裝 alloydb_scann
擴充功能。如要重建升級前在「捨棄使用 postgres_ann
擴充功能建立的 ScaNN 索引」一節中捨棄的 ScaNN 索引,請完成下列步驟。
請按照下列步驟建立
alloydb_scann
擴充功能:- 如要建立
alloydb_scann
擴充功能,請執行下列查詢:
create extension alloydb_scann cascade;
- 確認
alloydb_scann
擴充功能已成功建立。
select * from pg_extension;
- 如要建立
為資料表重新建立
ScaNN
索引,然後還原先前的pg_dump
DDL 索引定義。- 在資料表上建立
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:要套用至索引的分區數量。
- 確認索引已建立。
\d TABLE_NAME
- 建議:備份索引資料。建議您備份資料庫和索引,以防萬一。
- 在資料表上建立