自定义 AlloyDB Omni 安装

AlloyDB Omni 通过容器映像进行部署,支持不同形式的自定义。此页面介绍了一些常见的自定义。

挂载外部数据目录

默认情况下,快速入门:安装 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:latest

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:latest

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:latest

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:latest

执行以下变量替换操作:

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

启用 ulimits

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

  • 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:latest

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:latest

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:latest

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:latest

执行以下变量替换操作:

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

指定日志记录驱动程序

默认情况下,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:latest

Docker

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

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:latest

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:latest

执行以下变量替换操作:

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

如需详细了解日志记录驱动程序,请参阅 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:latest

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:latest

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:latest

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:latest

执行以下变量替换操作:

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

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:latest

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:latest

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:latest

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:latest

执行以下变量替换操作:

  • CONTAINER_NAME:您为容器使用的名称。例如 my-omni-1
  • NEW_PASSWORD:为新容器的 postgres 用户在创建后分配的密码。
  • SHARED_MEMORY_SIZE:为容器上的 /dev/shm 设置的大小,格式如运行容器中所述。例如,如需指定 1 千兆字节,请使用值 1g
  • HOST_PORT:主机上的 TCP 端口,容器应将自己的端口 5432 发布到该端口。如需在主机上也使用 PostgreSQL 默认端口,请指定 5432

我们建议将共享内存大小设置为至少等于数据库的 google_job_scheduler.max_parallel_workers_per_job 标志值乘以 250 的兆字节数。如需详细了解列式引擎,请参阅在 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 语句启用的,如启用扩展程序中所详述。