实例部署:基于单机本地存储

    我们推荐在 Docker 中编译源码并运行示例,从而尽可能减少配置环境的操作。我们提供了一个基于 CentOS 7 官方 Docker 镜像 构建出的 ,里面包含了编译运行 PolarDB 需要的所有依赖。您可以直接使用这个镜像进行实例搭建,也可以自行修改我们在下面提供的 Dockerfile 以满足您的定制需求。

    当然,不使用 Docker 也完全没有问题。我们提供了基于纯净 CentOS 7 操作系统的依赖安装脚本,助您快速完成环境准备。🎉

    提示

    如果不使用 Docker,可跳过本小节。

    请参阅 Docker 官方文档 完成不同平台上 Docker 的安装。

    以下两种方式任选一种即可:

    该方式使您可以在 Docker 容器中编译并部署示例。

    Docker 镜像准备

    我们在 DockerHub 上提供了构建完毕的镜像 polardb/polardb_pg_devel:centos7实例部署:基于单机本地存储 - 图10 可供直接使用(支持 AMD64 和 ARM64 架构)😁。

    另外,我们也提供了构建上述开发镜像的 Dockerfile,从 CentOS 7 官方镜像 centos:centos7 开始构建出一个安装完所有开发和运行时依赖的镜像。您可以根据自己的需要在 Dockerfile 中添加更多依赖。以下是手动构建镜像的 Dockerfile 及方法,如果您决定直接使用 DockerHub 上构建完毕的镜像,则跳过该步骤。

    将上述内容复制到一个文件内(假设文件名为 Dockerfile-PolarDB)后,使用如下命令构建镜像:

    💡 请在下面的高亮行中按需替换 <image_name> 内的 Docker 镜像名称

    1. docker build --network=host \
    2. -t <image_name> \
    3. -f Dockerfile-PolarDB .

    代码下载

    PolarDB for PostgreSQL 的代码托管于 GitHub 上,稳定分支为 POLARDB_11_STABLE。如果因网络原因不能稳定访问 GitHub,则可以访问 。

    • GitHub
    • Gitee 国内镜像
    1. git clone -b POLARDB_11_STABLE https://github.com/ApsaraDB/PolarDB-for-PostgreSQL.git
    1. git clone -b POLARDB_11_STABLE https://gitee.com/mirrors/PolarDB-for-PostgreSQL

    创建并启动 Docker 容器

    提示

    💡 请在下面的高亮行中按需替换 <> 的部分:

    1. PolarDB for PostgreSQL 的源码路径
    2. 将要启动的 Docker 容器名称
    3. 自行构建或 DockerHub 上的 PolarDB 开发镜像名称
    • DockerHub 镜像
    1. # 创建容器
    2. docker create -it \
    3. -v <src_to_polardb>:/home/postgres/PolarDB-for-PostgreSQL \
    4. --cap-add=SYS_PTRACE --privileged=true \
    5. --name <container_name> \
    6. <image_name> bash
    1. # 创建容器
    2. docker create -it \
    3. -v <src_to_polardb>:/home/postgres/PolarDB-for-PostgreSQL \
    4. --cap-add=SYS_PTRACE --privileged=true \
    5. --name <container_name> \
    6. polardb/polardb_pg_devel:centos7 bash
    1. # 启动容器
    2. docker start <container_name>

    镜像构建过程中已经创建了一个 postgres:postgres 用户,从该镜像运行的容器将直接使用这个用户。容器启动后,通过以下命令进入正在运行的容器中:

    1. docker exec -it \
    2. --env COLUMNS=`tput cols` \
    3. --env LINES=`tput lines` \
    4. <container_name> bash

    通过 bash 进入容器后,进入源码目录,为用户 获取源代码目录权限,然后编译实例:

    部署完成后,进行简单的实例检查,确保部署正确:

    1. $HOME/tmp_basedir_polardb_pg_1100_bld/bin/psql \
    2. -p 5432 -h 127.0.0.1 -c 'select version();'
    3. version
    4. --------------------------------
    5. PostgreSQL 11.9 (POLARDB 11.9)
    6. (1 row)

    基于 CentOS 7 系统或容器

    该方式假设您从一台具有 root 权限的干净的 CentOS 7 操作系统上从零开始,可以是:

    • 安装 CentOS 7 的物理机/虚拟机
    • 从 CentOS 7 官方 Docker 镜像 centos:centos7 上启动的 Docker 容器

    建立非 root 用户

    PolarDB for PostgreSQL 需要以非 root 用户运行。以下步骤能够帮助您创建一个名为 postgres 的用户组和一个名为 postgres 的用户。

    提示

    下面的命令能够创建用户组 postgres 和用户 postgres,并为该用户赋予 sudo 和工作目录的权限。需要以 root 用户执行这些命令。

    1. # install sudo
    2. yum install -y sudo
    3. # create user and group
    4. groupadd -r postgres
    5. useradd -m -g postgres postgres -p ''
    6. usermod -aG wheel postgres
    7. chmod u+w /etc/sudoers
    8. echo 'postgres ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers
    9. chmod u-w /etc/sudoers
    10. # grant access to home directory
    11. chown -R postgres:postgres /home/postgres/
    12. echo 'source /etc/bashrc' >> /home/postgres/.bashrc
    13. # for su postgres
    14. sed -i 's/4096/unlimited/g' /etc/security/limits.d/20-nproc.conf

    接下来,切换到 用户,就可以进行后续的步骤了:

    1. su postgres
    2. source /etc/bashrc
    3. cd ~

    下载 PolarDB 源代码

    PolarDB for PostgreSQL 的代码托管于 GitHub 上,稳定分支为 POLARDB_11_STABLE。如果因网络原因不能稳定访问 GitHub,则可以访问 。

    • GitHub
    • Gitee 国内镜像
    1. sudo yum install -y git
    2. git clone -b POLARDB_11_STABLE https://github.com/ApsaraDB/PolarDB-for-PostgreSQL.git
    1. sudo yum install -y git
    2. git clone -b POLARDB_11_STABLE https://gitee.com/mirrors/PolarDB-for-PostgreSQL

    依赖安装

    使用 sudo 执行源代码根目录下的依赖安装脚本 install_dependencies.sh 完成所有的依赖安装。

    1. cd PolarDB-for-PostgreSQL
    2. sudo ./install_dependencies.sh

    编译部署

    依赖安装完毕后,刷新用户配置,开始编译部署:

    1. source /etc/bashrc
    2. ./polardb_build.sh

    部署完成后,进行简单的实例检查:

    • 1 个主节点(运行于 5432 端口)
    1. ./polardb_build.sh

    本地多节点实例

    • 1 个主节点(运行于 5432 端口)
    • 1 个只读节点(运行于 5433 端口)
    1. ./polardb_build.sh --withrep --repnum=1
    • 1 个主节点(运行于 5432 端口)
    • 1 个只读节点(运行于 5433 端口)
    • 1 个备库节点(运行于 5434 端口)
    1. ./polardb_build.sh --withrep --repnum=1 --withstandby

    本地多节点 HTAP 实例

    • 1 个主节点(运行于 5432 端口)
    • 2 个只读节点(运行于 5433 / 5434 端口)
    1. ./polardb_build.sh --initpx

    普通实例回归测试:

    1. ./polardb_build.sh -r -e -r-external -r-contrib -r-pl --withrep --with-tde

    HTAP 实例回归测试:

      分布式实例回归测试:

      1. ./polardb_build.sh -r -e -r-external -r-contrib -r-pl --with-tde --with-dma