PostgreSQL码农集散地

PolarDB 100 问 | 如何在debian中部署PolarDB?

参考文档点击文末阅读原文打开; 推荐《最好的PostgreSQL学习镜像》;


PolarDB 100 问 | 如何在debian中部署PolarDB?

如何在debian中部署PolarDB?

PolarDB官方手册给出了构建基于CentOS、Rocky、ubuntu、Anolis各版本Docker镜像的方法. 详见:《如何构建PolarDB Docker镜像 OR 本地编译PolarDB?》

  • https://github.com/ApsaraDB/polardb-pg-docker-images

但是怎么能少了debian? debian是市场占有率前五的Linux发行版(Ubuntu, CentOS, Red Hat, SUSE, Debian), 众所周知ubuntu的LTS版也是基于debian而来. 在centos不再作为rhel的下游发行版后, 一些centos用户可能会转向debian或其他操作系统.

所以希望PolarDB有基于debian主流版本12的Dockerfile或docker image.

  • https://hub.docker.com/_/debian

以debian 12为例, 参考上面那篇文章, 把https://github.com/ApsaraDB/polardb-pg-docker-images/blob/main/Dockerfile-devel-ubuntu22.04里的基础镜像改成FROM ubuntu22.04改成FROM debian:12后build报错

docker pull --platform=linux/arm64 debian:12  

docker build --platform=linux/arm64 -t="polardb/polardb_pg_devel:debian12" --no-cache . 2>&1 | tee ./logs/build.log    

报错是缺少gcc-10

#9 0.528 E: Unable to locate package gcc-10  
#9 0.528 E: Unable to locate package g++-10  
#9 ERROR: process "/bin/sh -c apt install -y         gcc-10         g++-10         llvm-15-dev         clang-15         make         gdb         pkg-config         locales &&     update-alternatives --install         /usr/bin/gcc gcc /usr/bin/gcc-10 60 --slave         /usr/bin/g++ g++ /usr/bin/g++-10 &&     update-alternatives --install         /usr/bin/llvm-config llvm-config /usr/bin/llvm-config-15 60 --slave         /usr/bin/clang++ clang++ /usr/bin/clang++-15 --slave         /usr/bin/clang clang /usr/bin/clang-15 &&     apt clean -y" did not complete successfully: exit code: 100  
------  
> [ 5/14] RUN apt install -y         gcc-10         g++-10         llvm-15-dev         clang-15         make         gdb         pkg-config         locales &&     update-alternatives --install         /usr/bin/gcc gcc /usr/bin/gcc-10 60 --slave         /usr/bin/g++ g++ /usr/bin/g++-10 &&     update-alternatives --install         /usr/bin/llvm-config llvm-config /usr/bin/llvm-config-15 60 --slave         /usr/bin/clang++ clang++ /usr/bin/clang++-15 --slave         /usr/bin/clang clang /usr/bin/clang-15 &&     apt clean -y:  

0.440 Building dependency tree...  
0.521 Reading state information...  
0.528 E: Unable to locate package gcc-10  
0.528 E: Unable to locate package g++-10  
------  
Dockerfile:22  
--------------------  
 21 |     # GCC (force 10) and LLVM (force to 15)  
 22 | >>> RUN apt install -y \  
 23 | >>>         gcc-10 \  
 24 | >>>         g++-10 \  
 25 | >>>         llvm-15-dev \  
 26 | >>>         clang-15 \  
 27 | >>>         make \  
 28 | >>>         gdb \  
 29 | >>>         pkg-config \  
 30 | >>>         locales && \  
 31 | >>>     update-alternatives --install \  
 32 | >>>         /usr/bin/gcc gcc /usr/bin/gcc-10 60 --slave \  
 33 | >>>         /usr/bin/g++ g++ /usr/bin/g++-10 && \  
 34 | >>>     update-alternatives --install \  
 35 | >>>         /usr/bin/llvm-config llvm-config /usr/bin/llvm-config-15 60 --slave \  
 36 | >>>         /usr/bin/clang++ clang++ /usr/bin/clang++-15 --slave \  
 37 | >>>         /usr/bin/clang clang /usr/bin/clang-15 && \  
 38 | >>>     apt clean -y  
 39 |     # Generate locale  
--------------------  
ERROR: failed to solve: process "/bin/sh -c apt install -y         gcc-10         g++-10         llvm-15-dev         clang-15         make         gdb         pkg-config         locales &&     update-al  

而如果使用debian 11时, 报错则是缺少llvm-15.

解决办法

缺少gcc-10或llvm-15, 用其他版本不行吗? 主要原因是编译PolarDB的版本强制要求GCC (force 10) and LLVM (force to 15).

但是debian 11 官方仓库中有gcc-10确没有llvm-15, debian 12官方仓库中有llvm-15确没有gcc-10. 所以解决办法也挺简单:

使用debian 12镜像, 把Dockerfile的Upgrade softwares部分修改如下, 在debian 12中可以搜索和安装debian 11仓库中的软件:

# Upgrade softwares  
RUN sed -i "s@http://\(deb\|security\).debian.org@http://mirrors.aliyun.com@g" /etc/apt/sources.list.d/debian.sources && \  
   sed -i "s@Suites: bookworm bookworm-updates@Suites: bookworm bookworm-updates bullseye@g" /etc/apt/sources.list.d/debian.sources && \  
   apt update -y && \  
   apt reinstall -y apt-transport-https ca-certificates && \  
   sed -i "s@http://mirrors.aliyun.com@https://mirrors.aliyun.com@g" /etc/apt/sources.list.d/debian.sources && \  
   apt update -y && \  
   apt upgrade -y && \  
   apt clean -y  

再次build polardb-devel镜像就可以了.

这个Dockerfile已放到了我的github:

  • https://github.com/digoal/polardb-pg-docker-images/blob/main/Dockerfile-devel-debian12

文末彩蛋:国产数据库周边生态

当然一款数据库要流行起来, 除了自己要强大, 还离不开生态. 用好周边生态工具, 管理水平战胜90%老司机!!! 下面简单介绍一下国产数据库周边生态.

1、管控软件

鸣嵩(前阿里云数据库总经理 / 研究员)等大佬们创业创办的云猿生, 核心产品是KubeBlocks. 他们的理念是让管理数据库和搭积木一样简单, 如果你要管理很多套并且种类(OLTP\OLAP\NoSQL\KV\TS\MQ等)很多的数据库产品, 推荐首选.

  • https://github.com/apecloud/kubeblocks

PG中文社区核心委员唐成老师的公司乘数开源的Clup, 专用管理PostgreSQL和PolarDB的集群管理软件, 如果你要管理很多套数据库, 推荐选择. 并且Clup还提供了企业版、自研的连接池、分布式存储、一体机、备份平台等, 是企业用户推荐之选.

  • https://www.csudata.com/

若航老司机开源的pigsty, 集成了300多个PG插件的PG集群和PolarDB集群管理软件, 如果你要管理很多套PG或PolarDB数据库, 且对插件有特别多的需求, 推荐选择.

  • https://pigsty.cc/zh/

2、审计监控诊断优化

翟总(曾经是我背后的男人)到海信聚好看后研发的 DBdoctor, 采用ebpf技术, 在对数据库几乎没有影响的情况下实时监控数据库和服务器的各项指标, 发现和诊断问题根因非常方便.

  • https://www.dbdoctor.cn/

天舟老哥的核心产品Bytebase 是位于您和数据库之间的中间件。它是数据库 DevOps 的 GitLab/GitHub,专为开发人员、DBA 和平台工程师打造。

  • https://bytebase.cc/docs/introduction/what-is-bytebase/

PawSQL, SQL优化和诊断产品.  

D-Smart, Oracle老前辈白老大出品, 专注企业级市场, 将业界顶级DBA经验的产品化作品, 产品功能包括数据库监控、诊断、优化等.

  • https://www.modb.pro/db/567140

3、国产数据库IDE

IDE是开发者的必备工具,例如社区有pgAdmin, 国产IDE则可以看看老程序猿达刚老师的DeskUI:

  • https://www.deskui.com

4、数据同步&迁移&备份恢复

NineData, 老领导出去创业做的产品, 产品涵盖了数据同步、迁移、备份、比对、devops、chatDBA等.

  • https://www.ninedata.cloud/home

DSG, 非常老牌的数据库同步迁移企业级产品, 支持各种数据库的异构和同构迁移, 用他们的话说, 没有dsg搞不定的迁移, 比goldengate还牛.

  • https://www.dsgdata.com/

公开课

如果你对PolarDB学习感兴趣可以阅读这个公开课系列:

除了PolarDB还非常值得关注的几款PG栈国产数据库:

  • HaloDB(基于PG兼容PostgreSQL、Oracle、MySQL. http://www.halodbtech.com/ )、
  • IvorySQL(基于开源PG兼容PG、Oracle. https://www.ivorysql.org/zh-cn/ )、
  • ProtonBase(云原生分布式数仓. https://protonbase.com/ )、
  • 成都文武数据库(https://ww-it.cn)

参考文档点击阅读原文获得


感谢关注我的github (https://github.com/digoal/blog) 及视频号:

Image