自定义 AlloyDB Omni 安装

选择文档版本:

本页面介绍了如何自定义 AlloyDB Omni 安装,该安装通过支持各种形式自定义的容器映像进行部署。本页面介绍了一些常见的自定义。

启用和停用 AlloyDB Omni 遥测

AlloyDB Omni 遥测实现了一个轻量级客户端代理,该代理仅在 AlloyDB Omni 容器映像中运行。此代理会定期收集一组基本的假名化指标,并将其发送到 Google 管理的端点。

由于 AlloyDB Omni 是一款可免费下载的产品,因此该遥测数据可为 Google 提供有关正在运行的实例的通用采用和部署环境的基本非个人身份信息 (non-PII) 指标。这些数据有助于为产品开发和支持优先级排序提供信息。

收集的指标包括:

  • 唯一安装 ID(假名化 UUID)
  • AlloyDB Omni 版本和 PostgreSQL 主要版本
  • 主机系统信息,例如 CPU 数量、RAM 和运行时间

停用遥测报告

如需阻止遥测代理运行并报告使用情况指标,请将 PostgreSQL 配置参数 omni_enable_telemetry 设置为 off。您可以通过在 postgresql.conf 文件中设置遥测标志来停用遥测代理,也可以在运行时使用 ALTER SYSTEM 设置该标志。

在 postgresql.conf 文件中设置遥测标志

如需修改容器的持久性数据目录中的 PostgreSQL 配置文件,请按以下步骤操作:

  1. 在数据库的数据目录 ($PGDATA) 中找到 postgresql.conf 文件。
  2. 停用 AlloyDB Omni 遥测。

    omni_enable_telemetry = off
    
  3. 如需应用更改,请重启 AlloyDB Omni 容器。 遥测代理会停止收集使用情况指标并将其发送给 Google。

使用 ALTER SYSTEM 在运行时设置遥测标志

如需设置遥测标志并在重新启动后保留更改,请按以下步骤操作:

  1. 使用 psql 连接到 AlloyDB Omni 实例:

    psql -h HOST -U USER -d DATABASE
    

    进行以下替换:

    • HOST:AlloyDB Omni 实例的主机名或 IP 地址,例如 127.0.0.1
    • USER:您要以其身份连接的数据库用户,例如 postgres
    • DATABASE:您要连接到的数据库,例如 postgres
  2. 运行以下命令:

    ALTER SYSTEM SET omni_enable_telemetry = 'off';
    
  3. 重新加载配置或重启实例。在某些容器设置中,您可能需要重启实例,以确保后台工作器完全接收到更改。

    SELECT pg_reload_conf();
    

    遥测代理会停止收集使用情况指标并将其发送给 Google。

启用遥测报告

如果您之前停用了 AlloyDB Omni 遥测,可以通过将 omni_enable_telemetry 标志设置为 on 来重新启用它。您可以通过在 postgresql.conf 文件中设置标志来启用遥测代理,也可以在运行时使用 ALTER SYSTEM 设置标志。

在 postgresql.conf 文件中设置遥测标志

  1. 在数据库的数据目录 ($PGDATA) 中找到 postgresql.conf 文件。
  2. 设置以下代码行:

    omni_enable_telemetry = on
    
  3. 如需应用更改,请重启 AlloyDB Omni 容器。

使用 ALTER SYSTEM 在运行时设置遥测标志

  1. 使用 psql 连接到 AlloyDB Omni 实例。
  2. 运行以下命令:

    ALTER SYSTEM SET omni_enable_telemetry = 'on';
    
  3. 如需应用更改,请重启 AlloyDB Omni 容器。

    docker restart CONTAINER_NAME
    

    进行以下替换:

    • CONTAINER_NAME:AlloyDB Omni 容器的名称,例如 my-omni-1

检查 AlloyDB Omni 遥测状态

您可以检查 AlloyDB Omni 遥测代理的状态,包括它是否已启用或正在运行。您还可以检查遥测代理活动。

检查遥测代理处于启用还是停用状态

如需查看遥测设置的状态,请按以下步骤操作:

  1. 连接到您的实例
  2. 运行以下命令:
SHOW omni_enable_telemetry;

输出会返回 onoff,具体取决于您是停用了还是启用了 AlloyDB Omni 遥测。

检查遥测代理是否正在运行

如需检查遥测代理是否正在运行,请在容器主机中运行以下命令:

docker top CONTAINER_NAME

进行以下替换:

  • CONTAINER_NAME:AlloyDB Omni 容器的名称,例如 my-omni-1

如果遥测已启用并正在运行,则输出包含带有文本 postgres: omni telemetry worker 的一行。

检查遥测代理活动

如需检查遥测代理的活动情况,请在容器主机中运行以下命令:

docker logs CONTAINER_NAME 2>&1 | grep telemetry

进行以下替换:

  • CONTAINER_NAME:AlloyDB Omni 容器的名称,例如 my-omni-1

如果遥测代理正在运行,日志中会包含类似于以下内容的消息:

LOG:  [telemetry_agent_worker.cc:143]  Started telemetry worker
LOG:  [telemetry_agent_worker.cc:161]  Running telemetry reporting agent
telemetry_agent: Uploading telemetry data to https://cloud.google.com/log.

装载外部数据目录

默认情况下,快速入门:安装 AlloyDB Omni 中的命令会将数据库数据存储在由 Docker 或 Podman 管理的区域中。这样做虽然方便上手,但会导致数据目录难以查找和使用。您可以改为设置绑定装载,以将数据目录映射到磁盘上的已知位置。

Docker

docker run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
-v DATA_DIR:/var/lib/postgresql/data \
-p HOST_PORT:5432 \
--restart=always \
google/alloydbomni:IMAGE_TAG

Docker

docker run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
-v DATA_DIR:/var/lib/postgresql/data \
-p HOST_PORT:5432 \
--restart=always \
google/alloydbomni:IMAGE_TAG

Podman

podman run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
-v DATA_DIR:/var/lib/postgresql/data \
-p HOST_PORT:5432 \
--restart=always \
docker.io/google/alloydbomni:IMAGE_TAG

Podman

podman run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
-v DATA_DIR:/var/lib/postgresql/data \
-p HOST_PORT:5432 \
--restart=always \
docker.io/google/alloydbomni:IMAGE_TAG

执行以下变量替换操作:

  • CONTAINER_NAME:您为容器使用的名称。例如 my-omni-1
  • NEW_PASSWORD:在创建新容器后为新容器的 postgres 用户分配的密码。
  • DATA_DIR:存储数据的主机目录路径。
  • HOST_PORT:容器应将自己的端口 5432 发布到的宿主机上的 TCP 端口。如需在宿主机上使用 PostgreSQL 默认端口,请指定 5432
  • IMAGE_TAG:使用 17.5.0 表示最新的 Debian 映像,使用 17.5.0-ubi 表示最新的 UBI 映像。

启用 ulimit

ulimit 参数指定 Docker 容器可以使用的进程限制。为了获得最佳性能,我们建议您设置以下 ulimit:

  • nice=-20:-20:AlloyDB Omni 会调整进程优先级,以便关键 PostgreSQL 进程可以使用更高的优先级运行。优先级越高,可分配给进程的可用 CPU 便越多。如需调整进程优先级,请指定 --ulimit=nice=-20:-20,这会去除 AlloyDB Omni 容器的限制。

  • memlock=-1:-1:AlloyDB Omni 执行自动内存管理。设置 --ulimit=memlock=-1:-1 可让数据库更好地控制内存页的换入和换出方式,从而提高性能。

Docker

docker run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
--ulimit=nice=-20:-20 --ulimit=memlock=-1:-1 \
-p HOST_PORT:5432 \
--restart=always \
google/alloydbomni:IMAGE_TAG

Docker

docker run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
--ulimit=nice=-20:-20 --ulimit=memlock=-1:-1 \
-p HOST_PORT:5432 \
--restart=always \
google/alloydbomni:IMAGE_TAG

Podman

podman run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
--ulimit=nice=-20:-20 --ulimit=memlock=-1:-1 \
-p HOST_PORT:5432 \
--restart=always \
docker.io/google/alloydbomni:IMAGE_TAG

Podman

podman run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
--ulimit=nice=-20:-20 --ulimit=memlock=-1:-1 \
-p HOST_PORT:5432 \
--restart=always \
docker.io/google/alloydbomni:IMAGE_TAG

执行以下变量替换操作:

  • CONTAINER_NAME:您为容器使用的名称。例如 my-omni-1
  • NEW_PASSWORD:在创建新容器后为新容器的 postgres 用户分配的密码。
  • HOST_PORT:容器应将自己的端口 5432 发布到的宿主机上的 TCP 端口。如需在宿主机上使用 PostgreSQL 默认端口,请指定 5432
  • IMAGE_TAG:使用 AlloyDB Omni 表示最新的 Debian 映像,使用 AlloyDB Omni-ubi 表示最新的 UBI 映像。

指定日志记录驱动程序

默认情况下,Docker 和 Podman 不会执行日志轮换。这可能会占用大量磁盘可用空间,并最终导致磁盘可用空间耗尽。如需使用其他日志记录驱动程序,您可以指定 --log-driver 字段。例如,如需将日志记录到 journald,请执行以下操作:

Docker

docker run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
--log-driver=journald \
-p HOST_PORT:5432 \
--restart=always \
google/alloydbomni:IMAGE_TAG

Docker

docker run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
--log-driver=journald \
-p HOST_PORT:5432 \
--restart=always \
google/alloydbomni:IMAGE_TAG

Podman

podman run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
--log-driver=journald \
-p HOST_PORT:5432 \
--restart=always \
docker.io/google/alloydbomni:IMAGE_TAG

Podman

podman run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
--log-driver=journald \
-p HOST_PORT:5432 \
--restart=always \
docker.io/google/alloydbomni:IMAGE_TAG

执行以下变量替换操作:

  • CONTAINER_NAME:您为容器使用的名称。例如 my-omni-1
  • NEW_PASSWORD:在创建新容器后为新容器的 postgres 用户分配的密码。
  • HOST_PORT:容器应将自己的端口 5432 发布到的宿主机上的 TCP 端口。如需在宿主机上使用 PostgreSQL 默认端口,请指定 5432
  • IMAGE_TAG:使用 17.5.0 表示最新的 Debian 映像,使用 17.5.0-ubi 表示最新的 UBI 映像。

如需详细了解日志记录驱动程序,请参阅 Docker 的配置日志记录驱动程序和 Podman 的 podman-run 文档。

此外,您还可以使用 PostgreSQL 配置日志记录。如需了解详情,请参阅配置 AlloyDB Omni 日志轮换

装载共享内存卷

如果您计划将 AlloyDB 列式引擎与 AlloyDB Omni 搭配使用,我们建议您为 AlloyDB Omni 容器提供共享内存。具体操作方法因主机操作系统而异,如以下示例所示。

Linux

如需向容器提供共享内存,请装载 /dev/shm

Docker

docker run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
-v /dev/shm:/dev/shm \
-p HOST_PORT:5432 \
--restart=always \
google/alloydbomni:IMAGE_TAG

Docker

docker run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
-v /dev/shm:/dev/shm \
-p HOST_PORT:5432 \
--restart=always \
google/alloydbomni:IMAGE_TAG

Podman

podman run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
-v /dev/shm:/dev/shm \
-p HOST_PORT:5432 \
--restart=always \
docker.io/google/alloydbomni:IMAGE_TAG

Podman

podman run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
-v /dev/shm:/dev/shm \
-p HOST_PORT:5432 \
--restart=always \
docker.io/google/alloydbomni:IMAGE_TAG

执行以下变量替换操作:

  • CONTAINER_NAME:您为容器使用的名称。例如 my-omni-1
  • NEW_PASSWORD:在创建新容器后为新容器的 postgres 用户分配的密码。
  • HOST_PORT:容器应将自己的端口 5432 发布到的宿主机上的 TCP 端口。如需在宿主机上使用 PostgreSQL 默认端口,请指定 5432
  • IMAGE_TAG:使用 17.5.0 表示最新的 Debian 映像,使用 17.5.0-ubi 表示最新的 UBI 映像。

macOS

如需向容器提供共享内存,请添加 --shm-size 标志:

Docker

docker run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
--shm-size=SHARED_MEMORY_SIZE \
-p HOST_PORT:5432 \
--restart=always \
google/alloydbomni:IMAGE_TAG

Docker

docker run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
--shm-size=SHARED_MEMORY_SIZE \
-p HOST_PORT:5432 \
--restart=always \
google/alloydbomni:IMAGE_TAG

Podman

podman run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
--shm-size=SHARED_MEMORY_SIZE \
-p HOST_PORT:5432 \
--restart=always \
docker.io/google/alloydbomni:IMAGE_TAG

Podman

podman run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
--shm-size=SHARED_MEMORY_SIZE \
-p HOST_PORT:5432 \
--restart=always \
docker.io/google/alloydbomni:IMAGE_TAG

执行以下变量替换操作:

  • CONTAINER_NAME:您为容器使用的名称。例如 my-omni-1
  • NEW_PASSWORD:在创建新容器后为新容器的 postgres 用户分配的密码。
  • SHARED_MEMORY_SIZE:为容器上的 /dev/shm 设置的大小,采用运行容器中所述的格式。例如,如需指定 1 GB,请使用值 1g
  • HOST_PORT:容器应将自己的端口 5432 发布到的宿主机上的 TCP 端口。如需在宿主机上使用 PostgreSQL 默认端口,请指定 5432
  • IMAGE_TAG:使用 17.5.0 表示最新的 Debian 映像,使用 17.5.0-ubi 表示最新的 UBI 映像。

我们建议将共享内存大小设置为至少等于数据库的 google_job_scheduler.max_parallel_workers_per_job 标志值的 250 倍(以 MB 为单位)。如需详细了解列式引擎,请参阅在 AlloyDB Omni 中配置列式引擎

例如,如果 google_job_scheduler.max_parallel_workers_per_job 数据库标志设置为其默认值 2,请考虑在启动数据库服务器时添加 --shm-size=500m 或更大的标志。

如需详细了解 --shm-size 标志,请参阅运行容器

启用扩展程序

如需查看 AlloyDB Omni 中可用的扩展程序列表,请参阅支持的数据库扩展程序。虽然 AlloyDB Omni 不包含 PostGIS 和 Orafce,但您可以按照以下说明安装它们:

启用扩展程序中所述,使用标准 PostgreSQL CREATE EXTENSION 语句启用已安装的扩展程序。