从 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/mainENABLE_ALLOYDB_AI,例如FALSEPGPORT,例如5432INSTANCE_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 AI 的 AlloyDB Omni 中的说明设置 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_dumpDDL 索引定义。- 对表创建
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- 建议:备份索引数据。我们建议最佳实践是创建数据库和索引的备份。
- 对表创建