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
:容器应将自己的端口5432
发布到的宿主机上的 TCP 端口。如需在宿主机上使用 PostgreSQL 默认端口,请指定5432
。
启用 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: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
:容器应将自己的端口5432
发布到的宿主机上的 TCP 端口。如需在宿主机上使用 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
:容器应将自己的端口5432
发布到的宿主机上的 TCP 端口。如需在宿主机上使用 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
:容器应将自己的端口5432
发布到的宿主机上的 TCP 端口。如需在宿主机上使用 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 GB,请使用值1g
。HOST_PORT
:容器应将自己的端口5432
发布到的宿主机上的 TCP 端口。如需在宿主机上使用 PostgreSQL 默认端口,请指定5432
。
我们建议将共享内存大小设置为至少等于数据库的 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
语句启用已安装的扩展程序。