问题标签 [pgpool]

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 投票
2 回答
327 浏览

postgresql-9.1 - pgpool2 不能重新加入失败的 master 作为新的 slave

我有一个 pgpool2 3.1.3 安装了 2 个 postgresql 9.1.3 后端,配置为具有流复制的主/从。
如果 master 失败一切正常,slave 接管并成为新的 master。问题是,如果我想重新加入集群中的旧主服务器,这也被添加为主服务器而不是从服务器。
我使用 pgpooladmin 版本 3.1.1。
任何想法 ?

0 投票
2 回答
12322 浏览

postgresql - 一个好的 PgPool II 配置

我一直在尝试将 PgPool 配置为接受大约 150 个请求。 Postgres 服务器配置为仅接受 100 个连接。超过 100 的任何内容都需要由 PgPool 进行池化。我似乎不明白这一点。我只需要 PgPool 对请求进行排队,我当前的配置不这样做。从我的 JMeter 测试中,当我尝试连接超过 100 个时,postgres 给我一个错误,说 PSQL error: sorry, too many clients

我只用以下参数配置了 PGPool:

由于我只需要 PgPool 来排队额外的连接请求,上面的配置是否正确?请告知正确的配置。

0 投票
1 回答
445 浏览

bash - 当应用程序执行脚本时,不会运行 bash 脚本中的 SSH 命令

我正在使用 PG 池,它在数据库节点出现故障时执行故障转移脚本。脚本需要在新的master上触及某个文件,并在旧的master上做一些改变。当我运行它时它工作正常,但当它由应用程序运行时它不会。我知道脚本正在正确执行,因为它会向我发送一封包含主机详细信息的电子邮件。设置了密钥,因此不需要密码。

脚本如下:

如果旧/新主机是本地机器,它甚至都不起作用。我感觉这与它通过 pgpool 用户运行有关,但我真的不确定。有任何想法吗?

0 投票
2 回答
3567 浏览

database - pgpool 无法创建数据库

我已经开始pgpool使用命令

它开始在终端上给出以下消息:

2012-05-04 10:54:29 日志:pid 4109:pgpool-II 成功启动。版本 2.3.2.1 (tomiteboshi)

但是当我尝试运行以下命令时:

我收到以下错误消息:

createdb:无法连接到数据库 postgres:无法连接到服务器:没有这样的文件或目录。服务器是否在本地运行并接受 Unix 域套接字“/var/run/postgresql/.s.PGSQL.9999”上的连接?

当我将端口从 9999 更改为 5432 时,bench_replication只会在本地节点上创建数据库,而不是在从节点上创建数据库。但是,教程说在这个命令中提到端口 9999 以便bench_replication通过pgpool.

为了确认是否pgpool真的在运行,我停止pgpool使用命令

这证实了pgpool实际运行。我究竟做错了什么?我已经更改了我pgpool在网上标准教程中提到的所有配置文件。

0 投票
2 回答
20033 浏览

postgresql - pgpool-II 认证失败

我正在使用配置为主热备用的两个 PostgreSQL 9.1 中的 pgpool-II 3.2.1。

尝试从 PGAdmin 进行身份验证时,我得到:

在 pgpool 日志中,我看到:

真正奇怪的是,日志中的 md5 哈希值会随着每个请求而变化,因此与我在 /usr/local/etc/pool_passwd 和 /usr/local/etc/pcp.conf 中设置的哈希值相比并没有什么意义

你能帮我找出配置问题吗?

0 投票
1 回答
6001 浏览

postgresql - PHP PDO PGPOOL PGSQL - SQLSTATE[HY000]:一般错误:7 没有连接到服务器

我试着解释我遇到的问题!!!

我使用 PDO 扩展通过 pgpool-II 连接到 PostgreSQL。它在 Apache 中运行良好,但从 PHP CLI(在同一台机器上)我收到此 PDO 错误:

SQLSTATE[HY000]: 一般错误: 7 没有连接到服务器

我已经在谷歌和这里搜索过,但似乎没有人尝试过这样做。有人有什么主意吗?

编辑:

这是我用来建立连接的代码:

ManageDB 是我自己的类,它实现了一些实用功能以及创建数据库连接:

0 投票
1 回答
528 浏览

php - php5 + pdo + postgres + pgpool-ii:没有日志的错误

我使用 pgpool-ii 3.2.1、php 5.3.3-7+squeeze14、postgresql 8.4.13。

我在使用 PDO 进行的插入查询时遇到了一些问题,但我不明白问题出在哪里,因为没有写入日志(postgres、apache2、pgpool-II)。

查询很简单,比如

如果我禁用 pgpool-II(启用 PDO)一切正常,即使我禁用 PDO,使用pg_query(打开 pgpool-II)进行查询,查询也会正确执行。其他类似的查询与 PDO + pgpool-ii.. 任何人都可以帮助我吗?

0 投票
1 回答
682 浏览

postgresql-9.1 - pgpool 连接被冻结

我已经在流复制模式下安装了 pgpool 3.2.1 和 2 个后端,带有负载平衡和连接池。我做了一些高负载测试,试图折叠 pgpool 连接。

假设这条规则是正确的:max_pool*num_init_children <= (max_connections - superuser_reserved_connections)

测试1:

num_init_children = 90 最大池 = 1

(仅在主服务器中) max_connections = 100 superuser_reserved_connections = 3

psql -U postgres -c 'SELECT COUNT from pg_stat_activity' 的结果是 90。

测试 2:

num_init_children = 90 最大池 = 2

(仅在主服务器中) max_connections = 100 superuser_reserved_connections = 3

psql -U postgres -c 'SELECT COUNT from pg_stat_activity' 的结果是 91。其他 6 个连接达到 97 个连接会发生什么情况?这是我可以到 postgresql 的最大连接数。

在这两种情况下,我都得到了 pgpoolAdmin 中使用的所有连接,并且与数据库的连接被冻结并且不允许新的连接。

谢谢!

0 投票
1 回答
3202 浏览

django - pgpool2 负载平衡不起作用

我有一个 Python/Django 应用程序,它将在不久的将来某个时候需要数据库负载平衡。与此同时,我正在尝试学习在本地虚拟机设置上实现 pgpool。

我有 4 个 Ubuntu 12.04 虚拟机:

我有 pgpool-II 版本 3.1.1,我的数据库服务器正在运行 PostgreSQL 9.1。

我有我的应用程序的数据库连接指向 192.168.1.80:9999 并且工作正常。

问题是当我使用 Apache ab 向它施加一些负载时,没有一个 SELECT 查询似乎是平衡的。所有的负载都交给我的 db1 master。另外,非常令人担忧的是池服务器本身的负载,它与 db1 相比确实很高,可能平均高出 8-10 倍。同时,我的 db2 和 db3 服务器的负载几乎为零,它们似乎只是从 db1 复制,这对于我使用 ab 进行的测试来说负载不是很密集。

这将我的池服务器上的负载提高到大约 2.3。db1 上的负载约为 0.4,db2 和 db3 上的负载几乎为零。

有人可以看看我的配置,看看我做错了什么吗?

我的整个配置在这里:

0 投票
1 回答
1156 浏览

jdbc - 并行模式下的 Pgpool 在 java 中不起作用

我们正在尝试以并行模式使用 pgpool 3.2.1 在多个服务器上拆分数据库表。但是在使用java的时候,好像只做replication模式,没有parallel模式。

在测试中,我们使用了 3 台运行 Postgres 8.3 的后端服务器和一个测试数据库,其中要分发的表中有 300 行。

当我们使用 sql 语句(即从 psql shell)创建和查询数据库时,一切似乎都运行良好。查询系统服务器显示300行,查询3台后端服务器显示各有100行。

但是,从 java 应用程序创建相同的数据库会导致插入被复制而不是分布式,因此每个后端服务器都有全部 300 行。在java中查询系统服务器正确显示300行,但是在psql中查询系统服务器合并结果显示900行。

似乎在 java 中忽略了并行模式,而是使用复制模式。pgpool 日志中似乎没有打印任何关于此的内容,并且我在 java 中没有收到任何错误,只是数据未在后端服务器之间分发。

我发现 pgpool 手册中列出了以下限制:http: //pgpool.projects.pgfoundry.org/pgpool-II/doc/pgpool-en.html#restriction

扩展查询协议(用于并行模式)

不支持 JDBC 驱动等使用的扩展查询协议。必须使用简单查询协议。这意味着您不能使用准备好的语句。

java 程序确实使用了准备好的语句,并且不使用准备好的语句可能不是一个选项。

关于 pgpool 和prepared statements 有一个类似的问题: Java queries against PGPool II cause "unnamed Prepared statement does not exist" 错误

但是将 protocolVersion=2 添加到 JDBC URL 会导致 java 中的 insert 语句无法完成。

有没有人遇到过这个问题?有没有可能的解决方法?

谢谢