自定义 AlloyDB Omni 安装

AlloyDB Omni 通过 Docker 映像部署,支持各种形式的自定义。本页介绍了一些常用的自定义设置。

如需使用默认配置快速开始使用 AlloyDB Omni,请参阅 快速入门:AlloyDB Omni

准备工作

下表列出了 AlloyDB Omni 的推荐硬件和软件配置。

操作系统/平台 推荐的硬件配置 推荐的软件配置
Linux
  • 支持 AVX2 的 x86-64 或 Arm (*) CPU
  • 为 AlloyDB Omni 分配给每个 CPU 的 RAM 为 8GB
  • 20 GB 以上的磁盘可用空间
  • 基于 Debian 的操作系统(Ubuntu 等),RHEL 8 或 9
  • Linux 内核版本 6.1 或更高版本,或者支持 MADV_COLLAPSE 和 MADV_POPULATE_WRITE 指令的任何低于 5.3 的 Linux 内核版本
  • 已启用 cgroupv2
  • Docker Engine 25.0.0 或更高版本或 Podman 5.0.0 或更高版本
  • macOS
  • 支持 AVX2 的 Intel CPU 或 M 芯片
  • 为 AlloyDB Omni 分配给每个 CPU 的 RAM 为 8GB
  • 20 GB 以上的磁盘可用空间
  • Docker Desktop 4.30 或更高版本
  • (*) Arm 支持目前为预览版

    AlloyDB Omni 在容器中运行。请先在您的机器上安装 DockerPodman 等容器运行时,然后再安装 AlloyDB Omni。

    为在已停用的安全增强型 Linux (SELinux) 上运行的无根容器提供了 Podman 命令。

    挂载外部数据目录

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

    Docker

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

    替换以下内容:

    • CONTAINER_NAME:要在宿主机的容器注册表中为此新的 AlloyDB Omni 容器分配的名称,例如 my-omni

    • NEW_PASSWORD:为新容器的 postgres 用户在创建后分配的密码。

    • DATA_DIR:您希望 AlloyDB Omni 用于其数据目录的文件系统路径。

    • HOST_PORT:容器将端口 5432 发布到的宿主机上的 TCP 端口。如需在宿主机上也使用 PostgreSQL 默认端口,请指定 5432

    Podman

      podman run --name CONTAINER_NAME \
      -e POSTGRES_PASSWORD=NEW_PASSWORD \
      -v DATA_DIR:/var/lib/postgresql/data \
      -p HOST_PORT:5432 -d google/alloydbomni:15

    替换以下内容:

    • CONTAINER_NAME:要在宿主机的容器注册表中为此新的 AlloyDB Omni 容器分配的名称,例如 my-omni

    • NEW_PASSWORD:为新容器的 postgres 用户在创建后分配的密码。

    • DATA_DIR:您希望 AlloyDB Omni 用于其数据目录的文件系统路径。

    • HOST_PORT:容器将端口 5432 发布到的宿主机上的 TCP 端口。如需在宿主机上也使用 PostgreSQL 默认端口,请指定 5432

    Podman

      podman run --name CONTAINER_NAME \
      -e POSTGRES_PASSWORD=NEW_PASSWORD \
      -v DATA_DIR:/var/lib/postgresql/data \
      -p HOST_PORT:5432 -d google/alloydbomni:15

    替换以下内容:

    • CONTAINER_NAME:要在宿主机的容器注册表中为此新的 AlloyDB Omni 容器分配的名称,例如 my-omni

    • NEW_PASSWORD:为新容器的 postgres 用户在创建后分配的密码。

    • DATA_DIR:您希望 AlloyDB Omni 用于其数据目录的文件系统路径。

    • HOST_PORT:容器将端口 5432 发布到的宿主机上的 TCP 端口。如需在宿主机上也使用 PostgreSQL 默认端口,请指定 5432

    启用 ulimits

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

    • 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 --name CONTAINER_NAME \
      -e POSTGRES_PASSWORD=NEW_PASSWORD \
      --ulimit=nice=-20:-20 --ulimit=memlock=-1:-1 \
      -p HOST_PORT:5432 -d google/alloydbomni:15

    Podman

      podman run --name CONTAINER_NAME \
      -e POSTGRES_PASSWORD=NEW_PASSWORD \
      --ulimit=nice=-20:-20 --ulimit=memlock=-1:-1 \
      -p HOST_PORT:5432 -d google/alloydbomni:15

    指定日志记录驱动程序

    默认情况下,Docker 不会执行日志轮替。这可能会占用大量磁盘空间,并最终导致磁盘空间耗尽。您可以将 Docker 配置为使用其他日志记录驱动程序。例如,如需将日志记录到 journald,请执行以下操作:

    Docker

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

    Podman

      podman run --name CONTAINER_NAME \
      -e POSTGRES_PASSWORD=NEW_PASSWORD \
      --log-driver=journald \
      -p HOST_PORT:5432 -d google/alloydbomni:15

    如需详细了解 Docker 和日志记录驱动程序,请参阅 Docker 文档中的配置日志记录驱动程序部分。

    您还可以使用 PostgreSQL 配置日志记录。如需了解详情,请参阅 PostgreSQL 文档中的错误报告和日志记录部分。

    装载共享内存卷

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

    Linux

    如需将共享内存提供给容器,请挂载 /dev/shm

    Docker

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

    Podman

        podman run --name CONTAINER_NAME \
          -e POSTGRES_PASSWORD=NEW_PASSWORD \
          -p HOST_PORT:5432 \
          -v /dev/shm:/dev/shm \
          -d google/alloydbomni:15

    macOS

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

    Docker

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

    SHARED_MEMORY_SIZE 替换为要为容器上的 /dev/shm 设置的大小,格式如运行容器中所述。例如,如需指定 1 千兆字节,请使用值 1g

    Podman

      podman run --name CONTAINER_NAME \
        -e POSTGRES_PASSWORD=NEW_PASSWORD \
        -p HOST_PORT:5432 \
        --shm-size=SHARED_MEMORY_SIZE \
        -d google/alloydbomni:15

    SHARED_MEMORY_SIZE 替换为要为容器上的 /dev/shm 设置的大小,格式如运行容器中所述。例如,如需指定 1 千兆字节,请使用值 1g

    我们建议将共享内存大小设置为至少等于数据库的 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 标志,请参阅运行容器