PostgreSQL高可用性Orchestrator和CLI

patroni的Python项目详细描述


用户:postgresql ha的模板,带有zookeeper、etcd或consul

您可以在 patroni.readthedocs.io 上找到此文档的一个版本,该版本可搜索且更易于导航。

使用PostgreSQL运行高可用性的方法有很多;有关列表,请参阅PostgreSQL文档

patroni是一个模板,您可以使用python创建自己的定制的高可用性解决方案,并且为了获得最大的可访问性,它是一个分布式配置存储,比如zookeeper ETCD 领事 领事 。数据库工程师、DBA、DevOps工程师和SRE希望在数据中心或其他任何地方快速部署HA PostgreSQL,希望他们会发现它很有用。

我们称之为"模板",因为它远远不是一个一刀切或即插即用的复制系统。它将有自己的警告。明智使用。

注意kubernetes用户 :用户可以在kubernetes上运行。请看一下用户文档中的"kubernetes"一章。

帕罗尼如何工作

patroni起源于compose的项目,它是州长的分支。它包括许多新功能。

有关基于Docker与用户部署的示例,请参见目前在Zalando使用的spilo。

有关其他背景信息,请参见:

开发状态

赞助人正在积极发展,并接受贡献。有关更多详细信息,请参见下面的 贡献部分。

我们在这里报告新版本信息

社区

有两个地方可以与用户社区建立联系:在github上,通过issues和prs,在github上,在postgresql slack上,在频道上。如果您正在使用patroni,或只是感兴趣,请加入我们。

技术要求/安装

Mac OS的先决条件

要在Mac上安装需求,请运行以下命令:

brew install postgresql etcd haproxy libyaml python

心理2

psycopg2-2.8开始, 默认情况下将不再安装psycopg2的二进制版本。从源代码安装它需要c编译器和postgres+python开发包。 因为在python世界中,不可能将依赖项指定为 psycopg2或 psycopg2二进制文件

有几个选项可供选择:

  1. 使用发行版中的软件包管理器
sudo apt-get install python-psycopg2   # install python2 psycopg2 module on Debian/Ubuntu
sudo apt-get install python3-psycopg2  # install python3 psycopg2 module on Debian/Ubuntu
sudo yum install python-psycopg2       # install python2 psycopg2 on RedHat/Fedora/CentOS
  1. 从二进制软件包安装psycopg2
pip install psycopg2-binary
  1. 从源代码安装psycopg2
pip install psycopg2>=2.5.4

PIP的一般安装

用户可以安装PIP:

pip install patroni[dependencies]

其中依赖项可以为空,也可以由以下一项或多项组成:

< DL>
etcd
python etcd 模块,以便使用etcd作为dcs
执政官
python consul 模块,以便使用consul作为dcs
缩放器
kazoo 模块,以便使用zookeeper作为dcs
参展商
kazoo 模块,以便将参展商用作dcs(与zookeeper的依赖关系相同)
库伯内特斯
kubernetes 模块,以便在用户中使用kubernetes作为dcs AWS/DD>
boto 以便使用AWS回调

例如,要将patroni和etcd的依赖项一起安装为dcs和aws回调的命令是:

pip install patroni[etcd,aws]

请注意,用于调用副本创建或自定义bootstap脚本(即wal-e)的外部工具应独立于用户安装。

运行和配置

要开始,请从不同的终端执行以下操作:

> etcd --data-dir=data/etcd
> ./patroni.py postgres0.yml
> ./patroni.py postgres1.yml

然后您将看到一个高可用性集群启动。测试yaml文件中的不同设置以查看集群的行为如何更改。杀死一些组件以查看系统的行为。

添加更多的postgres*.yml文件以创建更大的集群。

patroni提供了一个配置,它将为您的应用程序提供一个连接到集群领导的端点。要配置, 运行:

> haproxy -f haproxy.cfg
> psql --host 127.0.0.1 --port 5000 postgres

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Eclipse不识别渐变依赖项   java RecyclerView在从API(OkHttp)刷新时无法滚动,导致IndexOutOfBoundsException崩溃   java如何在JavaDoc中显示示例代码,而不必手动复制/粘贴?   java Android设置自定义actionbar   用Java制作swing标签生成器   java Spring引导Hibernate无法删除验证令牌   Java中的递归问题   JAVANet 4垃圾收集   仅使用一个ImageView的java视图翻转器   使用高级正则表达式在java中拆分字符串   Python中Java volatile的等价物   java数据流作业总是创建新的默认存储桶,即使设置了tempLocation和gcpTempLocation?   变量未在Java中初始化   当iam试图将TestNG安装到Eclipse版本:Mars中时使用java。1获取错误,因为软件包含未着色的内容   运行Sqoop命令时出现java_主页问题   SpringJava框架自动维护实体历史记录   多线程Java:为什么/什么是这些线程监控?   java如何控制mavenjettyplugin的VM参数?   java在equals方法中比较两个对象名称   java设置Itext表中的标题行