标签: pgpool

PostgreSQL 上的流式复制和故障转移

我正在对 PostgreSQL 复制进行概念验证。在论坛上讨论后,我们决定使用流式复制,因为与其他解决方案相比,它的性能很好。PostgreSQL 不为流式复制提供自动故障转移。我们可以使用触发文件将从站切换到主站,但它是不可管理的。所以我想要一个具有自动故障转移和高可用性的解决方案。

有不同的解决方案:

  1. 更新程序
  2. Linux心跳
  3. Pgpool-II(仅用于自动故障转移)
  4. 如果您使用过任何其他工具。

我的问题是应该使用哪种解决方案?

postgresql replication slony pgpool repmgr

14
推荐指数
2
解决办法
4874
查看次数

具有 pgpool 架构的 Postgres

下面是一个示例 pgpool 架构:

在此处输入图片说明

这意味着您只需要在单个服务器上拥有 pgpool;这是真的?当我查看配置时,我还看到您在其中配置了后端pgpool.conf;所以它进一步暗示了这一点。但是,它并没有解释为什么我也在后端服务器上看到 pgpool。

在查看文档时,我还看到:

如果您使用的是 PostgreSQL 8.0 或更高版本,强烈建议在 pgpool-II 访问的所有 PostgreSQL 上安装 pgpool_regclass 函数,因为它被 pgpool-II 内部使用。

所以我不知道该怎么想;在所有后端或仅在专用服务器上使用 pgpool 是最佳实践吗?

postgresql architecture scalability pgpool connection-pooling

9
推荐指数
1
解决办法
2942
查看次数

PostgreSQL PITR 在线恢复后删除存档日志

我在三台服务器上使用 pgpool-II + PostgreSQL 8.4:主 + 备用 1 + 备用 2。复制模式为“on”负载均衡模式为“on”(在主备1之间)

我按照官方教程使用 PITR 配置在线恢复:http : //pgpool.projects.postgresql.org/pgpool-II/doc/pgpool-en.html#online-recovery

脚本“copy-base-backup”中有一个 tar 命令:

tar -C /data -zcf pgsql.tar.gz pgsql

所以我所有的 PG 集群目录都在脚本运行时被复制:

ls -1 /srv/pg/data/
PG_VERSION 
archive # directory with postgres archive files
backup_label.old
base
global
pg_clog
pg_hba.conf
pg_ident.conf
pg_log
pg_multixact
pg_stat_tmp
pg_subtrans
pg_tblspc
pg_twophase
pg_xlog
pgpool_recovery
pgpool_recovery_pitr
pgpool_remote_start
postgresql.conf
postmaster.opts
postmaster.pid
recovery.conf
recovery.done
Run Code Online (Sandbox Code Playgroud)

如何从主节点和备用节点安全地删除旧的存档日志?我的节点上每天大约有 30Gb 的档案。

postgresql replication database-design backup pgpool

5
推荐指数
2
解决办法
2479
查看次数

我的游泳池应该有多大?我应该使用 pgbouncer 吗?

我有一个 Rails 应用程序,有 4 个 Unicorn 工人。如何确定我应该使用什么 postgresql 数据库池大小?

如果我有 6 个应用程序连接到这个 postgres 数据库,那会不会有太多连接?我应该改用 pgbouncer 吗?如果是这样,为什么?

postgresql concurrency pgpool

5
推荐指数
1
解决办法
1336
查看次数

我的 pgpool 集群性能不佳

我已经使用以下链接配置了一个带有 pgpool2 的 postgres 集群。

复制好像没问题,但是我跑了一些基准测试(pg_bench),性能比单节点低,例如:

pgbench -c 16 -j 16 -T 600 -S bench2 -h "ONE SINGLE POSTGRES NODE" -p 5432 实际处理的事务数:7752147 tps = 12920.095988(包括建立连接)tps = 12921.6(不包括建立连接)48

pgbench -c 16 -j 16 -T 600 -S bench2 -h "PGPOOLNODE" -p 5432 实际处理的事务数:389800 tps = 648.857810(包括建立连接) tps = 648.886713(不包括建立连接)

pgbench -c 16 -j 16 -T 600 -S bench2 -h "MASTERNODE" -p 5432 实际处理的事务数:7093473 tps = 11822.379159(包括建立连接) tps = 11823.337051(不包括建立连接)

每个节点都是默认配置的。所有节点都是相同的虚拟机并在同一网络上。

这是我的 pgpool.conf:

listen_addresses = '*'
port = 5432
socket_dir …
Run Code Online (Sandbox Code Playgroud)

postgresql performance pgpool

5
推荐指数
1
解决办法
1369
查看次数

PGPool 内存要求

对于运行连接池和负载平衡但没有查询缓存的专用 PGPool 机器,建议使用多少物理内存?

我看到了;num_init_children(96) * max_pool(2) * number_of_backends(2) = 384中的线条 SHOW pool_pools每个 PID 的模态平均值似乎约为 99M,有几个 1G 异常值

# top for 20 pgpool processes
$ top -p $(pgrep pgpool | head -20 | tr "\\n" "," | sed 's/,$//')

Tasks:  20 total,   0 running,  20 sleeping,   0 stopped,   0 zombie
%Cpu(s):  3.1 us,  4.0 sy,  0.0 ni, 92.2 id,  0.0 wa,  0.0 hi,  0.7 si,  0.0 st
KiB Mem :  1784080 total,    22068 free,  1629960 used,   132052 buff/cache …
Run Code Online (Sandbox Code Playgroud)

postgresql pgpool load-balancing

5
推荐指数
1
解决办法
2133
查看次数

Pgpool 安装 - 未安装 libpq 或 libpq 已旧

根据此处的文档,我想用 PostgreSQL 数据库创建一个 pgpool II。当我尝试安装时,遇到此错误:

  configure: error: libpq is not installed or libpq is old
Run Code Online (Sandbox Code Playgroud)

搜索 pgpool 网站,他们提到./configure使用以下命令运行:

  --with-pgsql 
Run Code Online (Sandbox Code Playgroud)

或者

   --with-pgsql-includedir
Run Code Online (Sandbox Code Playgroud)

或者

   --with-pgsql-libdir 
Run Code Online (Sandbox Code Playgroud)

但我仍然面临同样的问题。谁能指导我从这里可以做什么?

我正在运行从 CentOS 5 上的 yum 包安装的 PostgreSQL 9.2。

postgresql replication linux pgpool

2
推荐指数
1
解决办法
9604
查看次数

pgpool 负载平衡仅将所有查询发送到 master

我的两个 postgresql 服务器配置为流复制,工作正常。

Pgpool 配置为主从模式/负载平衡模式。

pgpool.conf:

listen_addresses = '*'
port = 9999
backend_hostname0 = 'master-postgres-ip'
backend_port0 = port-no
backend_weight0 = 1
backend_data_directory0 = 'data-dir'
backend_hostname1 = 'slave-postgres-ip'
backend_port1 = port-no
backend_weight1 = 1
backend_data_directory1 = 'data-dir'
load_balance_mode = on
master_slave_mode = on
master_slave_sub_mode='stream'
Run Code Online (Sandbox Code Playgroud)

我预计所有写入查询都将转到主查询,而读取查询将分布在两个查询之间。但是,所有的查询都只是为了掌握。但是,如果我停止主控,查询将变为从属。

有人可以告诉我可能出了什么问题吗?

pgpool 在启动时给出以下日志:

2015-11-03 17:25:56: pid 21284: LOG:  find_primary_node: checking backend no 0
2015-11-03 17:25:56: pid 21284: LOG:  find_primary_node: checking backend no 1
2015-11-03 17:25:56: pid 21284: DEBUG:  SSL is requested but SSL support is not …
Run Code Online (Sandbox Code Playgroud)

postgresql pgpool load-balancing

2
推荐指数
1
解决办法
6118
查看次数