问题标签 [patroni]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
postgresql - Patroni:同步模式与最大延迟
这是 Patroni 的文档https://patroni.readthedocs.io/en/latest/replication_modes.html。
有两个选项:maximum_lag_on_failover 和 synchronous_mode。
在项目中,我看到设置了这两个选项(synchronous_mode: true, maximum_lag_on_failover: 1048576)。是否有意义?
一个说你可以将次要提升到主要,延迟为 1048576 字节,其次,如果你有任何延迟,你不能将次要提升到主要。第二个问题 maximum_lag_on_failover 是否仅适用于异步复制,而 synchronous_mode 仅适用于同步复制?
postgresql - 使用 scram-sha 256 初始化 Patroni 集群
当我尝试安装 Patoni 时,我可以使用 md5 初始化数据库,所有集群都运行良好。.
但是当我尝试通过初始化 scram-sha 256 安装赞助人时。它没有开始也状态保持
集群中所有数据库实例的“副本”。同样在赞助人日志上,我可以看到这个错误 ""postgres" does not have a valid SCRAM verifier" 。解决方案是什么?
信息:password_encryption 是 scram-sha 256 所有 hba.conf 条目都是 scram-sha 256。
postgresql - Patroni 不会更改 postgresql.conf 中的 wal_level
我将 patroini yaml 文件中的 wal_level 从副本修改为逻辑并运行以下命令。但是,postgresql.conf 中的值没有改变。我错过了什么?
有没有办法改变 DCS 参数?我什至尝试使用alter database,所以我将拥有一个“自动”文件,但这也无济于事。
非常感谢您的帮助
Postgres 由 Patroni 使用以下参数运行:
postgresql - “滞后于 MB”patoni/postgresql 我该如何解决它?
复制品正在落后。我从哪里开始解决这个问题?我查看了 /var/log/patroni/patroni.log 但没有看到任何奇怪的东西。
postgres2 | 192.168.1.26 | 复制品 | 运行 | 5 | 5298
postgres3 | 192.168.1.27 | 复制品 | 运行 | 5 | 5298
postgresql - Patroni,Postgres:无法启动 WAL 流:错误:时间线 X 上请求的起点 Y 不在此服务器的历史记录中
我有 3 个节点 Postgres 集群,由赞助人管理,每当我的主节点出现故障并作为副本重新加入时,旧主节点就会面临以下错误:
这是我使用的配置:
已经尝试将所有节点的 WAL 日志存储到共享目录,然后从那里恢复。
但错误仍然相同。
postgresql - 如何在patoni conf.yml 中隐藏密码
有什么办法可以隐藏patoni conf.yml 文件的密码?我正在使用赞助人 1.6.5。我知道我们有两种选择,一种是使用环境变量,另一种是使用 .pgpass,它并没有真正增加安全级别。我们是否有任何其他选择,以便我们可以使用一些加密密码。
postgresql - 使用Patroni时如何确定主/副本?
我正在使用 Patroni 构建 PG 集群,我使用 Xinetd 并对 PG 执行如下查询:
我的两个 PG 服务器都返回
但是,在使用 DBeaver 时,两台服务器中的一台处于无法在只读事务中执行创建数据库的状态。
我如何确定它?
kubernetes - StatefulSet 的 Pod 名称解析不起作用
我有以下带有 StatefulSet 的 Kubernetes YAML,我用它来部署带有 Patroni 的 PostgreSQL 集群。但是,这个问题与 Kubernetes 如何在 CoreDNS 中注册 Pod 名称有关。
根据稳定网络 ID 部分中的此文档,如果我为我的 Pod 创建了一个名为 Headless 的服务spilodemo-svc
,我可以使用短主机名 (podname.servicename) 访问它们:
基本上,我的代码在 VirtualBox 和 Vagrant 上使用 kubeadm 部署的 K8s 集群上正常运行了很长时间。今天我想在 IBM Cloud 上部署它,但上面的主机名不起作用,奇怪的是,当我再次在 Vagrant/VirtualBox 上重复测试时,我无法再让它工作了,我不知道为什么。
现在 YAML 部署了 Spilo,它是 Zalando 开发的一个开源项目,它是一个带有 Patroni 和 PostgreSQL 的 Docker 镜像。我的代码来自他们的示例here。
基本上,他们创建了一个没有选择器的 ClusterIP 服务(而不是无头服务)。在这些情况下,Kubernetes 不会在其中创建 Endpoint。出于这个原因,我们在 YAML 中有一个与服务名称相同的 Endpoint(这似乎是 Kubernetes 期望的绑定)。
Spilo 的 Python 代码始终使用主节点的 IP 更新此端点。
StatefulSet 的字段 serviceName 等于服务的名称:
而且,根据文档,这保证了 Kubernetes 在 CoreDNS 中为这个短主机名(podname.servicename)创建一个条目:
它工作了很长时间,直到今天,同时没有发生任何事情。老实说spilodemo-0.spilodemo-svc
,到目前为止,我还没有完全理解 DNS 名称是如何工作的,因为它使用 ClusterIP 服务而不是 Headless 服务。
另一个奇怪的事情是,Zalando 团队使用了我调用的另一个 Headless 服务,spilodemo-config
根据他们代码中的注释,它应该避免 Kubernetes 删除端点,但这对我来说没有多大意义。
但是,今天我也尝试将服务转换为无头服务,spilodemo-config
但没有成功。Kubernetes 仅在 CoreDNS 中为服务创建条目:
但不是每个 Pod 的一个:
谁能帮我弄清楚我的 YAML 文件发生了什么,以及如何让上面的三个短主机名在 CoreDNS 中工作?
PS 在 Stackoverflow 上,我发现了这些讨论:
- 无法解析同一 StatefulSet 中的 pod 的主机名
- 有状态 Pod 主机名无法解决 ,但它们无法解决我的问题。
postgresql - 所有成员都从赞助人集群中消失了
我在赞助人集群中有 2 个成员(1 个主节点和 1 个副本)。在主重新连接到新的 etcd 服务器后,我在日志中看到了问题:
在此副本节点成为主节点后:
正如你在上面看到的,新主人现在看不到赞助人1。经过几次恢复 wal 赞助人 1 在下面写了这些日志:
这些日志信息此时不会更改。赞助人2 写acquired session lock as a leader
和赞助人1 写my wal position exceeds maximum replication lag
。patronictl -c /patroni.yml list
但是当我使用命令时,我在赞助人集群中看不到它们。
我应该如何以更好的方式将它们带回集群?
postgresql - Patroni 集群切换协助
我正在尝试创建一个将执行赞助人切换的自动 shell 脚本。这将提升 3 节点集群中的领导者,然后重新启动副本。我有一个 curl 命令可以为领导者执行切换。但我不确定如何自动重启其他两个副本?或者将如何构建。请记住,我现在是 Bash 的初学者。任何指导表示赞赏!