CLup简介
1. 为什么要开发CLup
CLup软件是一套管理PostgreSQL、PolarDB等数据库的管理软件。
企业在开始使用PostgreSQL、PolarDB等数据库时,总是遇到下面这些问题:
- 怎么实现数据库的高可用方案,当数据库出现问题时,能自动切换,不需要DBA半夜爬起来处理。
- 如何对数据库进行监控告警。
- 如何对进行备份,保证数据的安全性。
- 如何快速搭建一套数据库系统起来。
- 如何快速搭建现有数据库的备库。
- 如何快速修改主备库之间的级连关系。
- 如何实现容灾,当整个机房的网络断了,如何快速恢复业务。
CLup就是为解决上面这些问题而开发的产品。
CLup特色功能之一是高可用,目前已存在几个开源的高可用软件:
- keepalived: 是一个较简单的高可用软件,其最早是于用LVS负载均衡软件,现在也常常用于ngnix的高可用,也可以用于数据库领域,但需要自己定制切换脚本才能完成数据库的高可用功能,另keepalived基于VRRP协议实现的,其存在着脑裂的问题。
- haproxy: 通常是用于http等web应用,较少使用于数据库领域。
- Heartbeat或pacemaker+corosync: 这两个软件是通用型高可用软件,并不是专为PostgreSQL设计,安装时需要安装很多依赖包,有很多的配置,比较复杂,如果不是非常精通的人员搭建出来的高可用集群,经常容易出现误切换等问题。
- repmgr:是一个套针对于PostgreSQL数据库的高可用方案,相对其他的高可用方案来说,相对比较简单。不足之处在于没有对VIP的管理,如果要实现VIP的管理,需要自己写脚本来实现。
- patroni:是另一个套针对于PostgreSQL数据库的高可用方案,相对repmgr来说,复杂一些。不足之处与repmgr类似,没有实现对VIP的管理,如果要实现VIP的管理,需要自己写脚本来实现。
- pgpool-II: 是PostgreSQL数据库领域比较常见的高可用软件,其最早是做为连接池来使用的,pgpool-II除了高可用功能外,设计了一些更复杂的使用模式,对于初学者来说,如果没有深入的学习pgpool-II,根本搞不清楚复制模式、主备模式、并行查询模式的区别。实际上pgpool-II这么多的模式真正在企业中可以使用的模式基本只有“流复制+Standby的主/备模式”,其它模式都有各种各样的缺点,实用性不强。但由于这些绝大多数使用不上的功能,导致pgpool-II的配置很复杂,稍有不慎就容易发生因为配置不合理而导致的重大事故。
但上面这些开源软件无一例外有以下这些问题:
- 需要自己实现一些脚本才能完整实现高可用的功能;
- HA的切换的配置有一定的复杂度,文档中对一些高可用切换原理性和参数介绍得较少或介绍得晦涩难懂,难以掌握,如果没有深入的学习,容易出现错误的配置,从而导致一些严重得故障;
- 无集中管理的功能,无法一套软件同时管理多套高可用集群,增加了运维工作的难度。
所以CLup是专为PostgreSQL数据库量身定制一套最符合PostgreSQL用户的高可用及监控管理的软件,让企业可以快速搭建一套高可靠、高可用、高性能的数据库集群,同时满足易于维护、集中管理的一套PostgreSQL数据库解决方案。
使用CLup可以轻松创建和管理几十套至上百套PostgreSQL高可用的数据库集群。当发生故障切换后,有详细的故障切换日志,方便定位故障原因。另还可以手工一键切换,满足运维中日常停机维护的需要。
CLup还提供了PostgreSQL的一些基本监控、TOP SQL监控以及容灾管理、一键加备库等诸多高效实用的运维工具,极大地提高了DBA的工作效率,同时可以减少一些误操作的可能性。
2. 开源版与企业版功能对比
CLup的版本分为两种,一是企业版,另外一个是开源社区版。
开源社区版目前开源发布在gitee上,仓库地址如下:
开源版本具有CLup企业版本的绝大部分的核心功能,具体功能差异如下:
序号 | 功能 | 开源版 | 企业版 |
---|---|---|---|
1 | 支持的数据库 | PostgreSQL、PolarDB | PostgreSQL、PolarDB |
2 | 支持的CPU | x86_64、arm64(鲲鹏) | x86_64、arm64(鲲鹏、飞腾等) |
3 | 创建数据库 | 无限制 | 随注册码调整 |
4 | 纳管已有数据库 | 不支持 | 支持 |
5 | 启动数据库 | 支持 | 支持 |
6 | 停止数据库 | 支持 | 支持 |
7 | 删除数据库 | 支持 | 支持 |
8 | 查询计划 | 不支持 | 支持 |
9 | 重启数据库 | 支持 | 支持 |
10 | Web端登录主机 | 不支持 | 支持 |
11 | Web端psql连接 | 不支持 | 支持 |
12 | 搭建备库 | 支持 | 支持 |
13 | 切换上级库 | 支持 | 支持 |
14 | 激活备库 | 支持 | 支持 |
15 | 修改数据库参数 | 支持 | 支持 |
16 | 修改pg_hba | 支持 | 支持 |
17 | 会话管理 | 支持 | 支持 |
18 | 锁管理 | 支持 | 支持 |
19 | 创建PostgreSQL流复制高可用集群 | 无限制 | 随注册码调整 |
20 | 创建PolarDB共享存储高可用集群 | 无限制 | 随注册码调整 |
21 | 创建PostgreSQL共享存储高可用集群 | 不支持 | 随注册码调整 |
22 | 纳管PostgreSQL流复制高可用集群 | 不支持 | 随注册码调整 |
23 | 纳管PolarDB共享存储高可用集群 | 不支持 | 随注册码调整 |
24 | 纳管PostgreSQL共享盘高可用集群 | 不支持 | 随注册码调整 |
25 | 已有备库纳入集群 | 不支持 | 支持 |
26 | 集群设置 | 支持 | 支持 |
27 | 机房管理 | 支持 | 支持 |
28 | 高可用切换 | 支持 | 支持 |
29 | 查看备库延迟 | 支持 | 支持 |
30 | 查看当前LSN | 支持 | 支持 |
31 | 查看集群拓扑图 | 支持 | 支持 |
32 | 故障数据库加回集群 | 支持 | 支持 |
33 | ESDisk共享盘管理 | 不支持 | 支持 |
34 | 集群主机一键登录 | 不支持 | 支持 |
35 | VIP池管理 | 支持 | 支持 |
36 | ZQPool连接池管理 | 不支持 | 支持 |
37 | 创建PG物理备份的备份计划 | 不支持 | 支持 |
38 | 创建通用备份的备份计划 | 不支持 | 支持 |
39 | 查看备份数据信息 | 不支持 | 支持 |
40 | 备份数据导入 | 不支持 | 支持 |
41 | 恢复数据库 | 不支持 | 支持 |
42 | 主机性能监控 | 不支持 | 支持 |
43 | 数据库监控 | 不支持 | 支持 |
44 | 数据库巡检 | 不支持 | 支持 |
45 | 数据库报警定义 | 不支持 | 支持 |
46 | 主机报警定义 | 不支持 | 支持 |
47 | 报警方式配置 | 不支持 | 支持 |
48 | 报警查看 | 不支持 | 支持 |
48 | 用户管理 | 不支持 | 支持 |
50 | 用户权限管理 | 不支持 | 支持 |
51 | Agent状态管理 | 支持 | 支持 |
52 | CLup参数设置 | 支持 | 支持 |
53 | 技术支持 | 开源社区 | 专人支持 |
- ESDisk共享盘管理:ESDisk是中启乘数自主研发的高性能共享磁盘管理软件。
- ZQPool连接池:ZQPool是中启乘数科技精心研发的一款高性能、高效率的PostgreSQL数据库连接池软件。
3. 平台支持
3.1 企业版支持平台
序号 | 操作系统 | x86_6架构 | Arm64架构 |
---|---|---|---|
1 | RHEL/CentOS 7 | ✓ | |
2 | RHEL/CentOS/RockyLinux/AlmaLinux 8 | ✓ | ✓ |
3 | RHEL/CentOS/RockyLinux/AlmaLinux 9 | ✓ | ✓ |
4 | Debian11 | ✓ | ✓ |
5 | Debian12 | ✓ | ✓ |
6 | openEuler20.03 | ✓ | |
7 | openEuler22.03 | ✓ | ✓ |
8 | openEuler24.03 | ✓ | ✓ |
9 | 银河麒麟v10(ky10) | ✓ | ✓ |
10 | Ubuntu22.04 | ✓ | ✓ |
11 | Ubuntu24.04 | ✓ | ✓ |
12 | Alpine | ✓ | ✓ |
3.2 开源版支持平台
OpenCLup的Server端(clup)和Agent端(clup-agent)平台支持列表:
序号 | 操作系统 | x86_6架构 | Arm64架构 |
---|---|---|---|
1 | RHEL/CentOS 7 | ✓ | |
2 | RHEL/CentOS/RockyLinux/AlmaLinux 8 | ✓ | ✓ |
3 | RHEL/CentOS/RockyLinux/AlmaLinux 9 | ✓ | ✓ |
4 | 银河麒麟v10(ky10) | ✓ | ✓ |
5 | Debian11 | ✓ | ✓ |
6 | Debian12 | ✓ | ✓ |
7 | openEuler22.03 | ✓ | ✓ |
8 | openEuler24.03 | ✓ | ✓ |
9 | Ubuntu22.04 | ✓ | ✓ |
10 | Ubuntu24.04 | ✓ | ✓ |
csupy3.9.16是开源版OpenCLup的Server端(clup)和Agent端(clup-agent)服务所需要的Python3的环境,下面是当前快速安装命令中所提供支持的平台列表,其他平台可以参照文档(开源版本的安装)自建Python3的虚拟环境。
序号 | 操作系统 | X86_6架构 | Arm64架构 |
---|---|---|---|
1 | RHEL/CentOS 7 | ✓ | |
2 | RHEL/CentOS/RockyLinux/AlmaLinux 8 | ✓ | ✓ |
3 | RHEL/CentOS/RockyLinux/AlmaLinux 9 | ✓ | ✓ |
4 | Ubuntu22.04 | ✓ | |
5 | Ubuntu24.04 | ✓ |
4. CLup发展历程
CLup软件从2017年就开始研发,第一个正式版本发布于2017年11月20日。版本发展的历程如下:
- CLup1.0:实现了高可用、读写分离的功能,命令行管理模式。
- CLup2.0: 增加了WEB统一管理界面,大大提升了易用性。
- CLup3.0: 增加了共享存储类型的高可用模式;增加了一键搭建备库的功能,增加了数据库容灾管理的功能;
- CLup4.0: 增加了数据库备份的功能,全面支持了国产鲲鹏平台和各种国产OS,如UOS、银河麒麟。支持了多种的基于PostgreSQL的国产数据库。
- CLup5.0: 开始开源,并全面支持阿里PolarDB数据库社区版,支持ESDisk共享存储设备管理。
5. CLup的亮点功能
亮点功能如下:
- 基于流复制的高可用集群中,当主库出现故障时,备库被激活后,原先的主库需要转换成目前新主库的备库,这个过程很复杂,我们的程序可以把各种情况下做成自动化,整个恢复过程都可以是一键完成。
- 可以支持容灾的高可用方案,如一主两个本地备库+一个远程容灾库,本地主库出现问题时优先切换本地备库,本地出现严重问题后,可以一键切换容灾库。
- 对于主库可以update做心跳检测,对备库可以配置一个只读查询做心跳检测,保证检测的准确性。
- 为防止主库负载过大造成update返回超时,设计上采用多次探测,防止误切。
- 探测方有自身检测:探测前应通过第三方网关确认自身网络状态正常。
- 对于共享存储的集群,通过特别的处理机制解决了脑裂问题(共享存储集群仅企业版支持)。
- 一键搭建备库的功能。
- 可以管理各种复杂的级联关系的流复制集群,如主库A后面有一个备库B,而B后面又有两个备库等任意复杂的流复制集群。这个功能对于容灾特别管用。同时通过鼠标点一点就可以改变级连关系,如主库是A,A后面挂了一个B备库,B备库再挂一个C备库,即为A->B->C的级连关系,可以一键改成A->C->B。
- 可以对现有管理的PostgreSQL数据库做统一备份和管理,可以一键恢复数据库,并可以通过WAL日志恢复到任意时间点(备份和恢复功能仅企业版支持)。
- 可以手工一键切换,如有时想对某台机器做停机维护,为了不影响业务,可以进行手工高可用切换。手工切换类似Oracle数据库中的switchover,可以任意可逆切换。
- 在同一套CLup中,可以同时对很多套PostgreSQL高可用集群进行统一集成中管理。
- 在监控的功能中,监控了一些最有价值的指标,而不是像有些监控工具中,监控了很多指标,但大多数都是没有啥用处的功能(监控功能仅企业版支持)。
另外CLup是一套易于部署,对环境要求很低的高可用集群管理软件。如可以在2GB内存的机器上部署和使用,对机器的CPU没有要求。之所以可以做到这种程度,原因是此软件完全是由我们自己研发的,并不是基于一些开源软件上做的二次封装。有一些友商的管理平台是在第三方开源高可用软件上封装的,如ZooKeeper、etcd、repmgr或patroni上做的封装,导致对环境要求高,系统资源占用大等问题。