6d1fab20bf
Signed-off-by: csudata <open@csudata.com> |
||
---|---|---|
src | ||
.gitignore | ||
LICENSE | ||
README.md |
1.1为什么要使用CLup
乘数Cluster for PostgreSQL软件是为PostgreSQL数据库实现了私有云RDS的软件,简称为CLup。
企业在开始使用PostgreSQL数据库时,总是遇到这些问题:
- 怎么实现PostgreSQL数据库的高可用方案:当数据库出现问题时,能自动切换,不需要DBA半夜爬起来处理。
- 如何对PostgreSQL数据库进行监控告警。
- 如何对PostgreSQL进行备份,保证数据的安全性。
- 如何快速搭建一套数据库系统起来。
- 如何快速搭建现有数据库的备库。
- 如何快速修改主备库直接级连关系。
- 如何实现容灾,当整个机房的网络断了,如何快速恢复业务。
CLup就是为解决这些问题而产生的产品。
CLup最大的特色功能是高可用。目前已存在几个开源的高可可用软件,如haproxy、pacemaker+corosync、repmgr、patroni、Heartbeat、keepalived、pgpool-II等等。其中haproxy通常是用于http等web应用,较少使用于数据库领域;pacemaker+corosync、Heartbeat这两个软件是通用型高可用软件,并不是专为PostgreSQL设计,安装时需要安装很多依赖包,有很多的一些配置,比较复杂,如果不是非常精通的人员搭建出来的高可用集群,经常容易出现误切换等问题;keepalived是一个较简单的高可用软件,其最早是于用LVS负载均衡软件,现在也常常用于ngnix的高可用,也可以用于数据库领域,但需要自己定制切换脚本才能完成数据库的高可用功能,另keepalived基于VRRP协议实现的,其本质存在的脑裂的问题;pgpool-II是PostgreSQL数据库领域比较常见的高可用软件,其最早是做为连接池来使用的,pgpool-II除了高可用功能外,设计了一些更复杂的使用模式,对于初学者来说,如果没有深入的学习pgpool-II,根本搞不清楚复制模式、主备模式、并行查询模式的区别。实际上pgpool-II这么多的模式真正在企业中可以使用的模式基本只有“流复制+Standby的主/备模式”,其它模式都有各种各样的缺点,实用性不强。但由于这些绝大多数使用不上的功能,导致pgpool-II的配置很复杂,稍有不慎就容易发生因为配置不合理而导致的重大事故。
repmgr是一个套针对于PostgreSQL数据库的高可用方案,相对其他的高可用方案来说,相对比较简单。不足之处在于没有对VIP的管理,如果要实现VIP的管理,需要自己写脚本来实现。 patroni是另一个套针对于PostgreSQL数据库的高可用方案,相对repmgr来说,复杂一些。不足之处与repmgr类似,没有实现对VIP的管理,如果要实现VIP的管理,需要自己写脚本来实现。
乘数科技的PostgreSQL数据库专家们在使用了各种高可用软件和方案之后,发现目前市面上的高可用软件,发现多少要使用到生产系统中,基本都实要自己定制一些脚本才能实现完整的高可用功能,同时这些软件在配置上都有很多的复杂性,如果没有深入的学习,容易出现错误的配置,从而导致故障。 所以中启乘数科技为PostgreSQL数据库量身定制一套最符合PostgreSQL用户的高可用及监控管理的软件,让企业可以快速搭建一套高可靠、高可用、高性能的数据库,同时满足易管理维护、集中管理的一套数据库解决方案。
CLup中除了有高可用的功能,还有监控告警、一键加备库、Top SQL、数据库备份、容灾管理等功能,CLup是目前PostgreSQL数据库领域中功能完善的数据库管理管理平台。
1.2 CLup发展历程
CLup软件从2017年就开始研发,第一个正式版本发布于2017年11月20日。版本发展的历程如下:
- CLup1.0:实现了高可用、读写分离的功能,命令行管理模式。
- CLup2.0: 增加了WEB统一管理界面,大大提升了易用性。
- CLup3.0: 增加了共享存储类型的高可用模式;增加了一键搭建备库的功能,增加了数据库容灾管理的功能;
- CLup4.0: 增加了数据库备份的功能,全面支持了国产鲲鹏平台和各种国产OS,如UOS、银河麒麟。支持了多种的基于PostgreSQL的国产数据库。
1.3 CLup的亮点功能
亮点功能如下:
- 基于流复制的高可用集群中,当主库出现故障时,备库被激活后,原先的主库需要转换成目前新主库的备库,这个过程很复杂,我们的程序可以把各种情况下做成自动化,整个恢复过程都可以是一键完成。
- 可以支持容灾的高可用方案,如一主两个本地备库+一个远程容灾库,本地主库出现问题时优先切换本地备库,本地出现严重问题后,可以一键切换容灾库。
- 对于主库可以update做心跳检测,对备库可以配置一个只读查询做心跳检测,保证检测的准确性。
- 为防止主库负载过大造成update返回超时,设计上采用多次探测每次。超时时间递增
- 探测方有自身检测:探测前应通过第三方网关确认自身网络状态正常。
- 对于共享存储的集群,通过特别的处理机制解决了脑裂问题。
- 一键搭建备库的功能
- 可以管理各种复杂的级联关系的流复制集群,如主库A后面有一个备库B,而B后面又有两个备库等等任意复杂的流复制集群。这个功能对于容灾特别管用。同时通过鼠标点一点就可以改变级连关系,如主库是A,A后面挂了一个B备库,B备库再挂一个C备库,即为A->B->C的级连关系,可以一键改成A->C->B。
- 可以对现有管理的PostgreSQL数据库做统一备份和管理,可以一键恢复数据库,并可以通过WAL日志恢复到任意时间点。
- 可以手工一键切换,如有时想对某台机器做停机维护,为了不影响业务,可以进行手工高可用切换。手工切换类似Oracle数据库中的switchover,可以任意可逆切换。一键切换的界面如下:
- 在同一套CLup中,可以同时对很多套PostgreSQL高可用集群进行统一集成中管理
在监控的功能中,监控了一些最有价值的指标,而不是像有些监控工具中,监控了很多指标,但大多数都是没有啥用处的功能。 特色功能是我们有TopSQL的监控。
另外CLup是一套非常容易部署,对环境要求很低的高可用集群管理软件,如可以在2GB内存的机器上部署和使用,对机器的CPU没有要求。之所以可以做到这种程度,原因是此软件完全是由我们自己研发的,并不是基于一些开源软件上做的二次封装。有一些友商的管理平台是在第三方开源高可用软件上封装的,如ZooKeeper、etcd、repmgr或patroni上做的封装,导致对环境要求高,系统资源占用大等问题。