1 Star 10 Fork 3

中启开源 / clup社区

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MulanPubL-2.0

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上做的封装,导致对环境要求高,系统资源占用大等问题。

1.4 社区版规划文档

src/社区版本规划.md · 中启开源/clup社区

1.5 快速部署文档

src/快速部署.md · 中启开源/clup社区

1.6 使用教程

src/使用教程.md · 中启开源/clup社区

木兰公共许可证, 第2版 木兰公共许可证, 第2版 2021年5月 http://license.coscl.org.cn/MulanPubL-2.0 您对“贡献”的复制、使用、修改及分发受木兰公共许可证,第2版(以下简称“本许可证”)的如下条款的约束: 0. 定义 “贡献” 是指由“贡献者”许可在“本许可证”下的受版权法保护的作品,包括最初“贡献者”许可在“本许可证”下的作品及后续“贡献者”许可在“本许可证”下的“衍生作品”。 “贡献者” 是指将受版权法保护的作品许可在“本许可证”下的自然人或“法人实体”。 “法人实体” 是指提交贡献的机构及其“关联实体”。 “关联实体” 是指,对“本许可证”下的行为方而言,控制、受控制或与其共同受控制的机构,此处的“控制”是指拥有受控方或共同受控方至少50%直接或间接的投票权、资金或其他有价证券。 “衍生作品” 是指基于“贡献”创作的作品,具体包括对全部或部分“贡献”进行修改、重写、翻译、注释、组合或与之链接(包括动态链接或静态链接)而形成的作品。仅与“贡献”进行进程间通信或系统调用的作品是独立作品,不属于“衍生作品”。 “对应源代码” 是指生成、安装和(对于可执行作品)运行目标代码所需的所有源文件和与之关联的接口定义文件,以及控制这些活动的脚本,但不包括编译环境、编译工具、云服务平台(如果有)。 “分发” 是指通过任何媒介向他人提供“贡献”或“衍生作品”的行为,以及利用“贡献”或“衍生作品”通过网络远程给用户提供服务的行为,例如:通过利用“贡献”或“衍生作品”搭建的云服务平台提供在线服务的行为。 1. 授予版权许可 每个“贡献者”根据“本许可证”授予您永久性的、全球性的、免费的、非独占的、不可撤销的版权许可,您可以复制、使用、修改、“分发”其“贡献”或“衍生作品”,不论修改与否。 2. 授予专利许可 每个“贡献者”根据“本许可证”授予您永久性的、全球性的、免费的、非独占的、不可撤销的(根据本条规定撤销的情形除外)专利许可,供您使用、制造、委托制造、销售、许诺销售、进口其“贡献”或以其他方式转移其“贡献”。前述专利许可仅限于“贡献者”现在或将来拥有或控制的其“贡献”中的专利权利要求,而不包括仅因您对“贡献”的修改而将必然会侵犯到的专利权利要求。如果您或您的“关联实体”直接或间接地,就“贡献”对任何人发起专利侵权诉讼(包括在诉讼中提出反诉请求或交叉请求)或发起其他专利维权行动,则“贡献者”根据“本许可证”授予您的专利许可自您发起专利诉讼或专利维权行动之日终止。 3. 无商标许可 “贡献者”在“本许可证”下不提供对其商品名称、商标、服务标识或产品名称的商标许可,但您为满足第4条规定的声明义务而必须使用的情形除外。 4. 分发限制 您可以将您接收到的“贡献”或您的“衍生作品”以源程序形式或可执行形式重新“分发”,但必须满足下列条件: (1)您必须向接收者提供“本许可证”的副本,并保留“贡献”中的版权、商标、专利及免责声明;并且, (2)如果您“分发”您接收到的“贡献”,您必须使用“本许可证”提供该“贡献”的源代码副本;如果您 “分发”您的“衍生作品”,您必须: (i)随“衍生作品”提供使用“本许可证”“分发”的您的“衍生作品”的“对应源代码”。如果您通过下载链接提供前述“对应源代码”,则您应将下载链接地址置于“衍生作品”或其随附文档中的明显位置,有效期自该“衍生作品”“分发”之日起不少于三年,并确保接收者可以获得“对应源代码”;或者, (ii)随“衍生作品”向接收者提供一个书面要约,表明您愿意提供根据“本许可证”“分发”的您“衍生作品”的“对应源代码”。该书面要约应置于“衍生作品”中的明显位置,并确保接收者根据书面要约可获取“对应源代码”的时间从您接到该请求之日起不得超过三个月,且有效期自该“衍生作品”“分发”之日起不少于三年。 5. 违约与终止 如果您违反“本许可证”,任何“贡献者”有权书面通知您终止其根据“本许可证”授予您的许可。该“贡献者”授予您的许可自您接到其终止通知之日起终止。仅在如下两种情形下,即使您收到“贡献者”的通知也并不终止其授予您的许可: (1)您在接到该终止通知之前已停止所有违反行为; (2)您是首次收到该“贡献者”根据“本许可证”发出的书面终止通知,并且您在收到该通知后30天内已停止所有违反行为。 只要您下游的接收者遵守“本许可证”的相关规定,即使您在“本许可证”下被授予的许可终止,不影响下游的接收者根据“本许可证”享有的权利。 6. 例外 如果您将“贡献”与采用GNU AFFERO GENERAL PUBLIC LICENSE Version 3(以下简称“AGPLv3”)或其后续版本的作品结合形成新的“衍生作品”,且根据“AGPLv3”或其后续版本的要求您有义务将新形成的“衍生作品”以“AGPLv3”或其后续版本进行许可的,您可以根据“AGPLv3”或其后续版本进行许可,只要您在“分发”该“衍生作品”的同时向接收者提供“本许可证”的副本,并保留“贡献”中的版权、商标、专利及免责声明。但任何“贡献者”不会因您选择“AGPLv3”或其后续版本而授予该“衍生作品”的接收者更多权利。 7. 免责声明与责任限制 “贡献”在提供时不带有任何明示或默示的担保。在任何情况下,“贡献者”或版权人不对任何人因使用“贡献”而引发的任何直接或间接损失承担任何责任,不论该等损失因何种原因导致或者基于何种法律理论,即使其曾被告知有该等损失的可能性。 8. 语言 “本许可证”以中英文双语表述,中英文版本具有同等法律效力。如果中英文版本存在任何不一致,以中文版为准。 条款结束 如何将木兰公共许可证,第2版,应用到您的软件 如果您希望将木兰公共许可证,第2版,应用到您的软件,为了方便接收者查阅,建议您完成如下三步: 1, 请您补充如下声明中的空白,包括软件名、软件的首次发表年份以及您作为版权人的名字; 2, 请您在软件包的一级目录下创建以“LICENSE”为名的文件,将整个许可证文本放入该文件中; 3, 请将如下声明文本放入每个源文件的头部注释中。 Copyright (c) [Year] [name of copyright holder] [Software Name] is licensed under Mulan PubL v2. You can use this software according to the terms and conditions of the Mulan PubL v2. You may obtain a copy of Mulan PubL v2 at: http://license.coscl.org.cn/MulanPubL-2.0 THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. See the Mulan PubL v2 for more details. Mulan Public License,Version 2 Mulan Public License,Version 2 (Mulan PubL v2) May 2021 http://license.coscl.org.cn/MulanPubL-2.0 Your reproduction, use, modification and Distribution of the Contribution shall be subject to Mulan Public License, Version 2 (this License) with following terms and conditions: 0. Definition Contribution means the copyrightable work licensed by a particular Contributor under this License, including the work licensed by the initial Contributor under this License and its Derivative Work licensed by any subsequent Contributor under this License. Contributor means the Individual or Legal Entity who licenses its copyrightable work under this License. Legal Entity means the entity making a Contribution and all its Affiliates. Affiliates mmeans entities that control, are controlled by, or are under common control with the acting entity under this License, ‘control’ means direct or indirect ownership of at least fifty percent (50%) of the voting power, capital or other securities of controlled or commonly controlled entity. Derivative Work means works created based on Contribution, specifically including works formed by modifying, rewriting, translating, annotating, combining or linking to all or part of Contribution (including dynamic linking or static linking). Works which only communicate with Contribution through inter-process communication or system call, are independent works, rather than Derivative Work. Corresponding Source Code means all the source code needed to generate, install, and (for an executable work) run the object code including the interface definition files associated with source files for the work, and scripts to control those activities, excluding of compilation environment and compilation tools, cloud services platform (if any). Distribute (or Distribution) means the act of making the Contribution or Derivative Work available to others through any medium, and using the Contribution or Derivative Work to provide online services to users, such as the act of providing online services through a cloud service platform built using Contributions or Derivative Works. 1. Grant of Copyright License Subject to the terms and conditions of this License, each Contributor hereby grants to you a perpetual, worldwide, royalty-free, non-exclusive, irrevocable copyright license to reproduce, use, modify, or Distribute its Contribution or Derivative Work, with modification or not. 2. Grant of Patent License Subject to the terms and conditions of this License, each Contributor hereby grants to you a perpetual, worldwide, royalty-free, non-exclusive, irrevocable (except for revocation under this Section) patent license to use, make, have made, sell, offer for sale, import or otherwise transfer its Contribution, where such patent license is only limited to the patent claims owned or controlled by such Contributor now or in future which will be necessarily infringed by its Contribution alone, excluding of any patent claims solely be infringed by your modification. If you or your Affiliates directly or indirectly institute patent litigation (including a cross claim or counterclaim in a litigation) or other patent enforcement activities against any individual or entity by alleging that any Contribution infringes patents, then any patent license granted to you under this License for the Contribution shall terminate as of the date such litigation or activity is filed or taken. 3. No Trademark License No trademark license is granted to use the trade names, trademarks, service marks, or product names of Contributor, except as required to fulfill notice requirements in Section 4. 4. Distribution Restriction You may Distribute the Contribution you received or your Derivative Work, whether in source or executable forms, provided that you meet the following conditions: 1) You must provide recipients with a copy of this License and retain copyright, trademark, patent and disclaimer statements in the Contribution; and, 2) If you Distribute the Contribution you received, you must provide copies of the Contribution’s source code under this License; If you Distribute your Derivative Work, you have to: (i) accompanying the Derivative work, provide recipients with Corresponding Source Code of your Derivative Work under this License. If you provide the Corresponding Source Code through a download link, you should place such link address prominently in the Derivative Work or its accompanying documents, and be valid no less than three years from your Distribution of the particular Derivative Work, and ensure that the recipients can acquire the Corresponding Source Code through the link; or, (ii) accompanying the Derivative Work, provide recipients with a written offer indicating your willingness to provide the Corresponding Source Code of the Derivative Work licensed under this License. Such written offer shall be placed prominently in the Derivative Work or its accompanying documents. Without reasonable excuse, the recipient shall be able to acquire the Corresponding Source code of the Derivative work for no more than three months from your receipt of a valid request, and be valid no less than three years from your Distribution of the particular Derivative Work. 5. Breach and Termination If you breach this License, any Contributor has the right to notify you in writing to terminate its license granted to you under this License. The license granted to you by such Contributor terminates upon your receipt of such notice of termination. Notwithstanding the foregoing, your license will not be terminated even if you receive a notice of termination from Contributor, provided that: 1) you have cured all the breaches prior to receiving such notice of termination; or, 2) it’s your first time to receive a notice of termination from such Contributor pursuant to this License, and you have cured all the breaches within 30 days of receipt of such notice. Termination of your license under this License shall not affect the downstream recipient's rights under this License, provided that the downstream recipient complies with this License. 6. Exceptions If you combine Contribution or your Derivative Work with a work licensed under the GNU AFFERO GENERAL PUBLIC LICENSE Version 3 (hereinafter referred to as “AGPLv3”) or its subsequent versions, and according to the AGPLv3 or its subsequent versions, you have an obligation to make the combined work to be licensed under the corresponding license, you can license such combined work under the license, provided that when you Distribute the combined work, you also provide a copy of this License to the recipients, and retain copyright, trademarks, patents, and disclaimer statements in the Contribution. No Contributor will grant additional rights to the recipients of the combined work for your license under AGPLv3 or its subsequent versions. 7. Disclaimer of Warranty and Limitation of liability CONTRIBUTION ARE PROVIDED WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED. IN NO EVENT SHALL ANY CONTRIBUTOR OR COPYRIGHT HOLDER BE LIABLE TO YOU FOR ANY DAMAGES, INCLUDING, BUT NOT LIMITED TO ANY DIRECT, OR INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING FROM YOUR USE OR INABILITY TO USE THE CONTRIBUTION, NO MATTER HOW IT’S CAUSED OR BASED ON WHICH LEGAL THEORY, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 8. Language THIS LICENSE IS WRITTEN IN BOTH CHINESE AND ENGLISH, AND THE CHINESE VERSION AND ENGLISH VERSION SHALL HAVE THE SAME LEGAL EFFECT. IN THE CASE OF DIVERGENCE BETWEEN THE CHINESE AND ENGLISH VERSIONS, THE CHINESE VERSION SHALL PREVAIL. END OF THE TERMS AND CONDITIONS How to apply the Mulan Public License,Version 2 (Mulan PubL v2), to your software To apply the Mulan Public License,Version 2 to your work, for easy identification by recipients, you are suggested to complete following three steps: Fill in the blanks in following statement, including insert your software name, the year of the first publication of your software, and your name identified as the copyright owner; Create a file named “LICENSE” which contains the whole context of this License in the first directory of your software package; Attach the statement to the appropriate annotated syntax at the beginning of each source file. Copyright (c) [Year] [name of copyright holder] [Software Name] is licensed under Mulan PubL v2. You can use this software according to the terms and conditions of the Mulan PubL v2. You may obtain a copy of Mulan PubL v2 at: http://license.coscl.org.cn/MulanPubL-2.0 THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. See the Mulan PubL v2 for more details.

简介

CLup社区PostgreSQL数据库的管理平台CLup的社区。 展开 收起
Python
MulanPubL-2.0
取消

发行版 (6)

全部

贡献者

全部

近期动态

加载更多
不能加载更多了
Python
1
https://gitee.com/csudata/clup-community.git
git@gitee.com:csudata/clup-community.git
csudata
clup-community
clup社区
master

搜索帮助