PolarDB for PostgreSQL 开发环境定制指南

PolarDB for PostgreSQL 开发环境定制指南

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 镜像搭建开发环境具有以下优势:

  1. 环境隔离,不影响宿主机系统
  2. 快速部署,无需手动安装各种依赖
  3. 可重复使用,方便团队共享

镜像构建步骤

  1. 准备 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
  1. 构建 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 ~

步骤二:安装依赖

  1. 克隆 PolarDB 源码库
sudo yum install -y git
git clone -b POLARDB_11_STABLE https://github.com/ApsaraDB/PolarDB-for-PostgreSQL.git
  1. 运行依赖安装脚本
cd PolarDB-for-PostgreSQL
sudo ./deps/deps-centos7.sh

开发环境验证

无论采用哪种方式搭建开发环境,搭建完成后都可以通过以下方式验证:

  1. 检查 gcc 版本是否为 9
  2. 检查 llvm 版本是否为 11
  3. 确认所有依赖库已正确安装

常见问题解决

  1. 网络问题:如果从 GitHub 下载依赖缓慢,可以设置代理环境变量
  2. 权限问题:确保 postgres 用户有足够的权限
  3. 依赖冲突:如果系统已有其他版本的 gcc 或 llvm,可能需要先卸载

结语

本文详细介绍了两种搭建 PolarDB for PostgreSQL 开发环境的方法。对于大多数开发者,推荐使用 Docker 镜像方式,可以快速获得一致的开发环境。对于需要深度定制环境的开发者,可以选择从零开始搭建的方式。无论哪种方式,都能为 PolarDB 的开发工作提供良好的基础。

PolarDB-for-PostgreSQL PolarDB-for-PostgreSQL 项目地址: https://gitcode.com/gh_mirrors/pol/PolarDB-for-PostgreSQL

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江燕娇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值