问题标签 [repmgr]

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.

0 投票
1 回答
2428 浏览

clone - 是否可以在不使用“repmgr 备用克隆”和 pg_rewind 的情况下降级主节点

我目前正在使用带有日志传送复制的 postgresql。我使用起搏器的主/从资源来处理 postgresql 故障转移。

我在问是否有办法将主机降级,将其设置为备用并保持同步,而不使用“repmgr 备用克隆”也不使用 pg_rewind。

事实上,我希望旧的 master 能够快速准备好回到 master 状态,而“repmgr standby clone”需要几分钟才能恢复,这太长了。

我看到可以使用 pg_rewind 来更快地同步,但这意味着要启用 wal_log_hints,我担心这个选项会降低 master 的性能。主人已经太忙了。

我尝试只在数据目录中写入 recovery.conf,主机已经很好地转向从机模式,但是它没有上游:

[root@bkm-01 httpd]# su - postgres -c "/usr/pgsql-9.5/bin/repmgr -f /var/lib/pgsql/repmgr/repmgr.conf cluster show" Role | Name | Upstream | Connection String ----------+--------|----------|-------------------------------------- * master | node-02 | | host=node-02 user=repmgr dbname=repmgr standby | node-01 | | host=node-01 user=repmgr dbname=repmgr

我希望它足够清楚,我实际上是数据库复制的新手。任何帮助,将不胜感激。

0 投票
1 回答
4626 浏览

postgresql - 错误无法访问文件“$libdir/repmgr_funcs”没有这样的文件或目录

我按照此链接在 Ubuntu postgresql 服务器上创建主从复制。

我的配置repmgrpostgresql是:

Postgresql 9.5-:/opt/PostgreSQL/9.5/

repmgr-:/usr/lib/postgresql/9.5/bin/repmgr

repmgr.conf -:/etc/rep.conf

我收到错误-:无法创建函数

0 投票
2 回答
1081 浏览

postgresql - 在 pg_basebackup 命令 Postgres 中排除文件的选项

克隆备用数据库时,如何防止 pg_basebackup 将 postgresql.conf 和 pg_hba.conf 从 master 复制到 /var/lib/pgsql/9.9/data 目录?

目前我正在使用这个命令

0 投票
1 回答
581 浏览

postgresql - 集群 PostgreSQL 集群

由于 PostgreSQL 人员选择不当的术语,这会让一些人感到困惑,但请多多包涵……

我们需要能够支持多个 PostgreSQL (PG) 集群,并使用例如 repmgr 将它们集群在多个服务器上。例如,支持每个 PG 集群的服务器可用性和 PITR。在很多情况下,每台服务器一个 PG 集群太贵了,所以我们多租户(小)客户在不同的 PG 集群上,用于数据分离、恢复等,但也希望能够通过复制/失败来支持 HA-超过。

PG 集群最接近的类比是 SQL Server 实例——每个实例可以托管多个 DB,有自己的端口等。像 SQL Server 一样,您可以在同一台服务器上运行多个实例(PG 集群),并为每个实例设置复制.

基本的 repmgr 设置没有问题——这在单个 PG 集群模型中似乎相当清楚。但是,对于使用 repmgr 的多个 PG 集群,是否有任何推荐/支持的方法?我可以想象假装 repmgr 认为每个 PG 集群实际上是一个单独的 repmgr 集群(具有单独的 repmgr.conf、连接信息/端口)。但是,我还不确定这会奏效。

我通常希望在同一台服务器上对所有 PG 集群进行故障转移——而不是一次一个。

我认识到这可能不是在所有情况下都是最好的主意,但主要是在探索什么是可能的。我有一些替代方案,但这最接近我们当前的单节点模型。

澄清一下,我需要在许多服务器集群中支持成千上万的客户。理想情况下,每个集群都使用相同的repmgr DB(例如在主PG集群中),并且基本上独立于其他服务器集群。

谢谢...

0 投票
1 回答
2022 浏览

postgresql - 如何将 repmgr 与 dockerized Postgresql 一起使用?

我正在尝试使用复制和自动故障转移创建 Postgresql 设置。我希望它是可重用、可扩展和可移植的,所以我尝试使用 docker 来运行 Postgres。我也不想重新发明轮子,所以我尝试使用 repmgr 作为设置 postgres 复制时推荐的工具。

在第一台机器上,我使用 docker-compose 和简单的 Dockerfile 启动了主节点。然后我添加了 bash 脚本在容器启动后运行。看起来 master 设置正确。

然后在第二台机器上我尝试运行待机。我在 docker 中启动了 postgres 并进行了实验。正如我们在repmgr github repo上看到的那样,要运行待机,我需要使用 repmgr 命令克隆 master,该命令在内部使用 pg_basebackup。Pg_basebackup 不会让我将 db 克隆到非空目录(pgdata)中,因此我需要在克隆之前删除由 dockerized postgres 创建的 pgdata。当我这样做时,容器会死掉,因为当然唯一的服务 postgres 会在没有文件的情况下死掉。所以之后我不能运行 repmgr 命令,因为里面没有运行它的容器:)

所以我尝试为备用创建另一个 Dockerfile。内部 pgdata 被删除,然后 repmgr 克隆 master,然后 postgres 正确启动。没有错误。但是当我登录到主机并验证复制是否正在运行时 - 它不是。

  1. 是否可以为 dockerized postgres 运行 repmgr?
  2. 如果是这样,怎么做?我究竟做错了什么?
  3. 如果没有,如何在不手动配置每台服务器的情况下创建 postgres 集群复制?你知道,不把服务器当作宠物,而是当作牛等:)

我使用和创建的文件:docker-compose.yml(主节点和备用节点):

主 Dockerfile:

当 postgres 容器(主)处于活动状态时运行的 Bash 脚本:

备用 docker-compose 也是一样。备用 Dockerfile:

0 投票
1 回答
1018 浏览

postgresql - 用于 Postgresql 9.6 的 pgpool HA + repmgr

我正在尝试在我的 postgresql 环境(2 个 postgresql 服务器 + 1 个 pgpool)中配置 pgpool 来执行 HA,而 repmgr 负责复制。

我在日志中收到下一条消息:

pool_hba.conf :

在 postgresql pg_hba.conf 中,我启用了来自 pgpool 服务器的连接:

1.可能是什么问题?

2.如果repmgr负责复制,我应该将参数backend_flag设置为'DISALLOW_TO_FAILOVER'吗?

谢谢。

0 投票
2 回答
2015 浏览

postgresql - PgPool-II 和 repmgr 自动故障转移

我有用于 HA 的 pgpool-II 和用于自动故障转移的 repmgr。Pgpool-II 也可以运行故障转移 我只是想知道使用 pgpool 或 repmgr 进行自动故障转移?如果 pgpool 可以进行故障转移,我是否需要使用 repmgr?并使用shell脚本来提升新主人?

0 投票
0 回答
405 浏览

centos7 - repmgr - Automate process of making primary to standby after failover

I have two postgres servers running on CentOS 7 with repmgr 4.1.0-1. So far I have automated the process of promoting the standby to primary after the primary server fails but when it comes back they both act as primary and I don't think the follow_command from repmgr.conf is executed. I can do it manually by deleting the data folder and clone it from the new primary server, and then register it as standby.

repmgr.conf on server 1

repmgr.conf on server 2

After the server starts again it connects to itself and resumes monitoring. Here is the log

Is there a way to automate the primary to switch to standby when it starts again or the original standby that was promoted to go back to standby? Or maybe I can redirect to a script that'll do that from the follow_command, for example: follow_command='change-to-standby.sh'

I will appreciate any help.

0 投票
0 回答
814 浏览

postgresql - PostgreSQL/PostDock:主节点中的自动恢复失败

我使用 Docker 服务和 Docker swarm 来部署 PostDock 集群

这是我的 docker-compose.yml 设置:

我跑:

一切顺利。

但是,在我多次更新服务后,主节点上的自动故障转移失败了。在主节点日志文件中,我注意到恢复过程无法检测到数据库 replication_db 和架构 replication_db.public:

如您所见,没有指定模式,只有点号“。” ,并且用户也错了:应该是replication_user,而不是用户public

这导致此错误消息:

据我了解,当自动故障转移成功时,预期的恢复日志应该是:

有人知道这个问题的根本原因吗?

0 投票
0 回答
199 浏览

postgresql - 在 kong pg_host 中设置多个 Postgresql 集群 IP

我将 kong 设置为 API 网关并使用 Postgres 作为数据存储,我想使用 pg 集群设置 kong,如果一个 Postgres 实例关闭,它可以使用另一个实例重新启动。无法在 kong.conf 中为 pg_host 提供多个 ip

pg_hba = xx.xx.xx.xx , xx,xx,xx,xx

我给 IPs 逗号分隔面对错误无法检索当前迁移:[postgres 错误] 主机或服务未提供,或未知

当我给多个 ips 空间分隔时,它总是尝试连接第一个 IP 而忽略第二个。帮助!!!