PolarDB for PostgreSQL 开发环境定制指南
PolarDB-for-PostgreSQL 项目地址: https://gitcode.com/gh_mirrors/pol/PolarDB-for-PostgreSQL
前言
PolarDB for PostgreSQL 是阿里云开源的一款基于 PostgreSQL 的云原生数据库系统。在进行 PolarDB 开发前,需要搭建合适的开发环境。本文将详细介绍两种搭建 PolarDB for PostgreSQL 开发环境的方法:使用 Docker 镜像和从零开始搭建。
方法一:使用 Docker 开发镜像
镜像优势
使用 Docker 镜像搭建开发环境具有以下优势:
- 环境隔离,不影响宿主机系统
- 快速部署,无需手动安装各种依赖
- 可重复使用,方便团队共享
镜像构建步骤
- 准备 Dockerfile 文件
创建一个名为 Dockerfile-PolarDB
的文件,内容如下:
FROM ubuntu:20.04
LABEL maintainer="mrdrivingduck@gmail.com"
CMD bash
# 设置时区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 更新软件包
RUN apt update -y && \
apt upgrade -y && \
apt clean -y
# 安装 GCC 9 和 LLVM 11
RUN apt install -y \
gcc-9 \
g++-9 \
llvm-11-dev \
clang-11 \
make \
gdb \
pkg-config \
locales && \
update-alternatives --install \
/usr/bin/gcc gcc /usr/bin/gcc-9 60 --slave \
/usr/bin/g++ g++ /usr/bin/g++-9 && \
update-alternatives --install \
/usr/bin/llvm-config llvm-config /usr/bin/llvm-config-11 60 --slave \
/usr/bin/clang++ clang++ /usr/bin/clang++-11 --slave \
/usr/bin/clang clang /usr/bin/clang-11 && \
apt clean -y
# 生成区域设置
RUN sed -i '/en_US.UTF-8/s/^# //g' /etc/locale.gen && \
sed -i '/zh_CN.UTF-8/s/^# //g' /etc/locale.gen && \
locale-gen
# 安装依赖库
RUN apt install -y \
libicu-dev \
bison \
flex \
python3-dev \
libreadline-dev \
libgss-dev \
libssl-dev \
libpam0g-dev \
libxml2-dev \
libxslt1-dev \
libldap2-dev \
uuid-dev \
liblz4-dev \
libkrb5-dev \
gettext \
libxerces-c-dev \
tcl-dev \
libperl-dev \
libipc-run-perl \
libaio-dev \
libfuse-dev && \
apt clean -y
# 安装工具
RUN apt install -y \
iproute2 \
wget \
ccache \
sudo \
vim \
git \
cmake && \
apt clean -y
# 设置环境变量
ENV GITHUB_PROXY=
ENV ZLOG_VERSION=1.2.14
ENV PFSD_VERSION=pfsd4pg-release-1.2.42-20220419
# 从 GitHub 安装依赖
RUN cd /usr/local && \
# 安装 zlog
wget --no-verbose --no-check-certificate "${GITHUB_PROXY}https://github.com/HardySimpson/zlog/archive/refs/tags/${ZLOG_VERSION}.tar.gz" && \
gzip -d $ZLOG_VERSION.tar.gz && \
tar xpf $ZLOG_VERSION.tar && \
cd zlog-$ZLOG_VERSION && \
make && make install && \
echo '/usr/local/lib' >> /etc/ld.so.conf && ldconfig && \
cd .. && \
rm -rf $ZLOG_VERSION* && \
rm -rf zlog-$ZLOG_VERSION && \
# 安装 PFSD
wget --no-verbose --no-check-certificate "${GITHUB_PROXY}https://github.com/ApsaraDB/PolarDB-FileSystem/archive/refs/tags/${PFSD_VERSION}.tar.gz" && \
gzip -d $PFSD_VERSION.tar.gz && \
tar xpf $PFSD_VERSION.tar && \
cd PolarDB-FileSystem-$PFSD_VERSION && \
sed -i 's/-march=native //' CMakeLists.txt && \
./autobuild.sh && ./install.sh && \
cd .. && \
rm -rf $PFSD_VERSION* && \
rm -rf PolarDB-FileSystem-$PFSD_VERSION*
# 创建默认用户
ENV USER_NAME=postgres
RUN echo "create default user" && \
groupadd -r $USER_NAME && \
useradd -ms /bin/bash -g $USER_NAME $USER_NAME -p '' && \
usermod -aG sudo $USER_NAME
# 修改配置
RUN echo "modify conf" && \
mkdir -p /var/log/pfs && chown $USER_NAME /var/log/pfs && \
mkdir -p /var/run/pfs && chown $USER_NAME /var/run/pfs && \
mkdir -p /var/run/pfsd && chown $USER_NAME /var/run/pfsd && \
mkdir -p /dev/shm/pfsd && chown $USER_NAME /dev/shm/pfsd && \
touch /var/run/pfsd/.pfsd && \
echo "ulimit -c unlimited" >> /home/postgres/.bashrc && \
echo "export PGHOST=127.0.0.1" >> /home/postgres/.bashrc && \
echo "alias pg='psql -h /home/postgres/tmp_master_dir_polardb_pg_1100_bld/'" >> /home/postgres/.bashrc
ENV PATH="/home/postgres/tmp_basedir_polardb_pg_1100_bld/bin:$PATH"
WORKDIR /home/$USER_NAME
USER $USER_NAME
- 构建 Docker 镜像
执行以下命令构建镜像(将 <image_name>
替换为你想要的镜像名称):
docker build --network=host \
-t <image_name> \
-f Dockerfile-PolarDB .
方法二:从零开始搭建开发环境
环境要求
- 操作系统:CentOS 7
- 用户权限:root 或具有 sudo 权限的用户
步骤一:创建非 root 用户
PolarDB 需要以非 root 用户运行,建议创建专用用户:
# 安装 sudo
yum install -y sudo
# 创建用户和组
groupadd -r postgres
useradd -m -g postgres postgres -p ''
usermod -aG wheel postgres
# 配置 sudo 权限
chmod u+w /etc/sudoers
echo 'postgres ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers
chmod u-w /etc/sudoers
# 设置目录权限
chown -R postgres:postgres /home/postgres/
echo 'source /etc/bashrc' >> /home/postgres/.bashrc
# 修改进程限制
sed -i 's/4096/unlimited/g' /etc/security/limits.d/20-nproc.conf
切换到 postgres 用户:
su postgres
source /etc/bashrc
cd ~
步骤二:安装依赖
- 克隆 PolarDB 源码库
sudo yum install -y git
git clone -b POLARDB_11_STABLE https://github.com/ApsaraDB/PolarDB-for-PostgreSQL.git
- 运行依赖安装脚本
cd PolarDB-for-PostgreSQL
sudo ./deps/deps-centos7.sh
开发环境验证
无论采用哪种方式搭建开发环境,搭建完成后都可以通过以下方式验证:
- 检查 gcc 版本是否为 9
- 检查 llvm 版本是否为 11
- 确认所有依赖库已正确安装
常见问题解决
- 网络问题:如果从 GitHub 下载依赖缓慢,可以设置代理环境变量
- 权限问题:确保 postgres 用户有足够的权限
- 依赖冲突:如果系统已有其他版本的 gcc 或 llvm,可能需要先卸载
结语
本文详细介绍了两种搭建 PolarDB for PostgreSQL 开发环境的方法。对于大多数开发者,推荐使用 Docker 镜像方式,可以快速获得一致的开发环境。对于需要深度定制环境的开发者,可以选择从零开始搭建的方式。无论哪种方式,都能为 PolarDB 的开发工作提供良好的基础。
PolarDB-for-PostgreSQL 项目地址: https://gitcode.com/gh_mirrors/pol/PolarDB-for-PostgreSQL
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考