PolarDB for PostgreSQL 基于 Docker 的开发环境搭建指南
前言
PolarDB for PostgreSQL 是一款高性能、高可用的云原生数据库系统。对于开发者而言,快速搭建一个本地开发环境至关重要。本文将详细介绍如何使用 Docker 容器技术快速搭建 PolarDB for PostgreSQL 的开发环境,帮助开发者快速上手项目开发。
环境准备
在开始之前,请确保您的开发机器上已经安装了以下软件:
- Docker 引擎(建议使用最新稳定版)
- Git 版本控制工具
获取源代码
PolarDB for PostgreSQL 的源代码托管在多个代码托管平台上,开发者可以选择从任意一个平台克隆代码:
git clone -b POLARDB_15_STABLE 源码仓库地址
cd PolarDB-for-PostgreSQL/
建议使用 POLARDB_15_STABLE
分支,这是当前最新的稳定版本分支。
获取开发镜像
PolarDB 官方提供了预配置好的开发镜像,包含了编译和运行 PolarDB 所需的所有依赖项。开发者可以从以下两个镜像仓库获取:
- 官方 Docker 镜像仓库
- 阿里云容器镜像服务
推荐使用基于 Ubuntu 24.04 的镜像版本,执行以下命令拉取镜像:
docker pull polardb/polardb_pg_devel:ubuntu24.04
创建开发容器
为了便于开发,我们需要创建一个 Docker 容器并将本地源代码目录挂载到容器中。这样做的好处是:
- 可以在容器内进行编译和测试
- 可以在宿主机上使用熟悉的 IDE 编辑代码
执行以下命令创建并进入开发容器:
docker run -it \
-v $PWD:/home/postgres/polardb_pg \
--shm-size=512m --cap-add=SYS_PTRACE --privileged=true \
--name polardb_pg_devel \
polardb/polardb_pg_devel:ubuntu24.04 \
bash
参数说明:
-v $PWD:/home/postgres/polardb_pg
:将当前目录挂载到容器的/home/postgres/polardb_pg
目录--shm-size=512m
:设置共享内存大小--cap-add=SYS_PTRACE
:添加系统权限--privileged=true
:赋予容器特权
配置与编译
进入容器后,需要设置正确的文件权限,然后才能开始编译:
cd polardb_pg
sudo chmod -R a+wr ./
sudo chown -R postgres:postgres ./
基本编译命令
最简单的编译方式是直接运行构建脚本:
./build.sh
这将编译并启动一个单节点的 PolarDB for PostgreSQL 实例。
验证安装
编译完成后,可以通过以下命令验证安装是否成功:
psql -c 'SELECT version();'
如果安装成功,将显示 PolarDB 的版本信息。
高级编译选项
PolarDB 提供了多种编译选项,支持不同形态的集群部署:
1. 共享存储集群
要部署一个 Primary 节点加两个 Replica 节点的共享存储集群:
./build.sh --wr=2
2. 主备集群
要部署一个 Primary 节点、一个 Replica 节点和一个 Standby 节点的集群:
./build.sh --wr=1 --ws=1
3. 自定义端口
指定 Primary 节点的端口号:
./build.sh --port=5433
4. 调试模式
编译 Debug 版本:
./build.sh --debug=on
5. 仅编译不启动
如果只需要编译而不启动集群:
./build.sh --ni
回归测试
PolarDB 提供了完善的回归测试套件,开发者可以在不同模式下运行测试:
Debug 模式测试
./build.sh --ws=1 --wr=2 --debug=on --jobs=4 --ec="--enable-tap-tests"
make precheck -j4
Release 模式测试
./build.sh --ws=1 --wr=2 --debug=off --jobs=4 --ec="--enable-tap-tests"
make precheck -j4
其中 --jobs
参数可以根据机器 CPU 核心数进行调整,建议设置为 CPU 核心数的 1-2 倍。
开发建议
- 代码编辑:建议在宿主机上使用专业 IDE 编辑代码,利用 Docker 容器的挂载功能实现代码同步
- 资源分配:根据项目规模适当调整 Docker 容器的 CPU 和内存资源
- 版本控制:频繁提交代码,利用 Git 的分支功能进行功能开发
- 测试驱动:在修改代码前先运行相关测试用例,确保修改不会引入回归问题
常见问题解决
- 权限问题:如果遇到文件权限错误,重新运行
chmod
和chown
命令 - 编译失败:检查是否安装了所有依赖项,开发镜像已经包含了所有必要依赖
- 测试失败:确认测试环境配置正确,特别是共享内存大小设置
总结
通过本文介绍的方法,开发者可以快速搭建 PolarDB for PostgreSQL 的开发环境,并灵活配置不同形态的数据库集群进行开发和测试。Docker 容器化开发方式大大简化了环境配置的复杂度,使开发者能够专注于数据库核心功能的开发与优化。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考