为 AlloyDB Omni 安装 PostGIS

选择文档版本:

本页面介绍如何手动向现有 AlloyDB Omni 安装添加 PostGIS 扩展程序。借助 PostGIS 扩展程序,您可以存储地理空间数据、将其编入索引以及查询地理空间数据。

准备工作

在系统上安装 AlloyDB Omni

将 PostGIS 添加到 AlloyDB Omni 安装

如需将 PostGIS 扩展程序添加到 AlloyDB Omni 安装,请按照以下步骤操作:

  1. 如需申请访问预览版,请提交此表单
  2. 在安装了 AlloyDB Omni 服务器的虚拟机上初始化 Red Hat Subscription Manager:

    sudo dnf install -y subscription-manager
    sudo subscription-manager register --username "RHSM_USER" --password "RHSM_PASS" --auto-attach --force
    

    替换以下内容:

    • RHSM_USER:Red Hat Subscription Manager 用户。
    • RHSM_PASS:Red Hat Subscription Manager 密码。
  3. 启用 CodeReady Builder 代码库:

    sudo subscription-manager repos --enable="codeready-builder-for-rhel-9-$ARCH-rpms"
    

    ARCH 替换为要使用的 RHEL 架构,例如 x86_64

  4. 添加 PostgreSQL Yum 代码库:

    sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
    
  5. 安装 PostgreSQL 服务器和开发软件包:

    sudo dnf install -y "postgresql17-server"
    

    OMNI_VERSION 替换为 AlloyDB Omni 版本号,即 17

  6. 安装 PostGIS 扩展程序:

    sudo dnf install -y postgis35_17
    
  7. 创建所需的符号链接,以便扩展程序位于预期路径中:

    set -e
    PGVER="17"
    
    sudo mkdir -p "/usr/lib/postgresql/${PGVER}/share/extension"
    
    for file in /usr/pgsql-${PGVER}/share/extension/*; do
        target="/usr/lib/postgresql/${PGVER}/share/extension/$(basename "$file")"
        if [[ ! -e "$target" ]]; then
          sudo ln -s "$file" "$target" || (echo "Failed to link \"$file\" to \"$target\", exiting." && exit 1)
          echo "Created extension link for $(basename "$file")"
        else
          echo "Target $target already exists."
        fi
    done
    
    sudo mkdir -p "/usr/lib/postgresql/${PGVER}/lib"
    
    for file in /usr/pgsql-${PGVER}/lib/*; do
        target="/usr/lib/postgresql/${PGVER}/lib/$(basename "$file")"
        if [[ ! -e "$target" ]]; then
          sudo ln -s "$file" "$target" || (echo "Failed to link \"$file\" to \"$target\", exiting." && exit 1)
          echo "Created lib link for $(basename "$file")"
        else
          echo "Target $target already exists."
        fi
      fi
    done
    
  8. 使用 PostGIS 扩展程序连接到您的数据库:

    /usr/lib/postgresql/17/bin/psql -h localhost -U postgres
    
  9. 启用 PostGIS:

    CREATE EXTENSION IF NOT EXISTS POSTGIS;
    
  10. 确认 PostGIS 已安装并已启用:

    SELECT postgis_full_version();
    

    输出类似于以下内容:

    postgres=# SELECT postgis_full_version();
    postgis_full_version
    --------------------------------------------------------------------------------------------------------------------------------
    POSTGIS="3.3.2 4975da8" [EXTENSION] PGSQL="150" GEOS="3.11.1-CAPI-1.17.1" PROJ="9.1.1" LIBXML="2.9.14" LIBJSON="0.16" LIBPROTOBUF="1.4.1" WAGYU="0.5.0 (Internal)"
    (1 row)