PGpool

postgresql相关开源软件及架构简介

风格不统一 提交于 2020-04-27 18:13:36
1、PgBouncer PG数据库的一个轻量级连接池工具,功能及特点如下: 1)缓存后端PG数据库的连接,当前端应用请求时,分配连接池中的连接给应用,从而充分利用了系统资源。 2)允许应用创建比连接池更多的连接,并未应用连接提供排队等候功能,这样既充分利用了资源,也保证了应用端的高并发。 3)可以对应用连接进行限制,这样,可以起到系统稳定和安全作用。 4)PgBouncer的通信效率非常高。 5)PgBouncer通过C语言实现,短小精悍,消耗很少的系统资源。 6)PgBouncer支持三种连接池模式:会话级别,事务级别,语句级别。 2、Slony-I PG数据库的一款逻辑复制工具,功能及特点如下: 1)Slony-I支持级联复制,一个节点为订阅者的同时,也可以作为下一级的数据提供者,数据的原始生产者对数据的修改,会在各级订阅者之间传播。 2)Slony-I集群中的各节点上都需要有slon守护进程,以处理复制中的事件,例如:配置事件,同步事件。 3)Slony-I可以通过slonik工具进行管理和配置,其具备处理脚本的能力。 4)Slony-I具备强大逻辑复制功能的同时,也有些限制,例如:大对象的复制,DDL复制,用户权限复制等。 3、Bucardo PG数据库的一款具备双向同步功能的工具,功能及特点如下: 1)可以为PG实现双master架构,5

PostgreSQL密码安全策略

瘦欲@ 提交于 2020-04-22 01:48:48
引用地址: https://blog.csdn.net/weixin_34143774/article/details/89561946 请以原文为主,引用注明出处。 问题:今天公司进行软件测评,在测评期间,测评人员问起PostgreSQL登录失败导致用户锁定的次数,密码输错几次账户会被锁定? 网上查了一圈,oracle和mysql都有相关设置,只有pg库没有找到相关的设置参数。偶然发现网上的帖子,结果发现PG库尚不支持相关设置。 下面引用一下: 数据库密码管理是数据库安全的重要环节之一。密码管理及配置策略主要包括: 密码加密存储 密码有效期 密码复杂度 密码验证失败延迟 密码验证失败次数限制,失败后锁定, 以及解锁时间 设置密码时防止密码被记录到数据库日志中 下面会依次讲解在PostgreSQL中如何实现密码相关的安全性配置。 1、密码加密存储 pg中密码始终以加密方式存储在系统目录中。ENCREPED 关键字没有任何效果, 但被接受向后兼容。加密方式可以通过password_encryption参数配置。 postgres = # show password_encryption; password_encryption -- ------------------- md5 ( 1 row) postgres = # select * from pg_shadow where

基于Pgpool搭建PostgreSQL11的集群

南楼画角 提交于 2020-04-21 04:22:19
基于Pgpool-II4.1.0搭建PostgreSQL11集群 Pgpool介绍 环境准备 搭建配置 服务器配置 pgpool安装 PostgreSQL数据库配置 pgpool配置 相关脚本 启动 停止 测试 负载均衡测试 自动故障转移测试 写在最后 关于作者 相关链接 该篇文章主要是介绍基于pgpool4.1以及PostgreSQL的流复制实现PostgreSQL的读写分离以及高可用,配置参考 Pgpool-II官方文档 。使用版本为Pgpool4.1、PostgreSQL11.6。 文章略长。。。。。。。。。。。虽然我也不想 Pgpool介绍 pgpool相关介绍不在该文章中,需要者可以参考我的另一篇文章。传送门: pgpool介绍 环境准备 本次使用三台CentOS7.3的服务器来搭建集群,首先在三台服务器上部署PostgreSQL11.6版本的数据库,部署教程大家可以网上自行查找。具体规划如下: Hostname IP Address Virtual IP 192.168.111.6 server1 192.168.111.1 server2 192.168.111.2 server3 192.168.111.3 架构图参考官网: 搭建配置 服务器配置 故障转移、在线恢复时需要ssh到其它服务器执行命令,故需要配置服务器之间无密码ssh登录

PostgreSQL使用repmgr配置级联复制

安稳与你 提交于 2020-04-06 15:12:09
最近的项目要求配置共享存储的四节点集群,使集群能够形成负载均衡。 但是大家知道,PostgreSQL不支持使用同一数据目录生成多个实例,在执行pg_ctl start的时候,如果指定的数据目录有实例在运行,则该实例会发生错误导致数据库down掉。故而,我们选择了基于pgpool-II + repmgr的策略来实现基于NAS共享存储的负载均衡策略。架构如下图所示: 共享磁盘的实现方法多种多样,本文主要讲解repmgr的使用方法: (零)准备工作 本例中,准备了四台虚拟机,IP地址分别为: 192.168 . 100.1 node1 192.168 . 100.2 node2 192.168 . 100.3 node3 192.168 . 100.4 node4 NAS存储中,分别创建目录data1、data2、data3、data4,并挂载到各数据节点上。* 注意目录权限必须为 700 在所有节点安装repmgr。其中,只有 node1节点上执行initdb ,而node2、node3、node4 均不初始化 。 在node1节点的postgresql.conf添加以下配置: hot_standby = on wal_level = ' replica ' max_wal_senders = 50 创建repmgr用户及数据库 [Harvest@node1 ~] createuser

pgpool-II 数据库集群工具的安装配置(主要是记录下安装过程中遇到的问题)

女生的网名这么多〃 提交于 2020-02-28 12:36:47
前部分: 下载:下载后的源码包中就包含中文手册和入门教程。 http://www.pgpool.net/mediawiki/index.php/Downloads 记住,ubuntu的话,挑选源代码下载!否则./configure的时候会报".PO"文件缺失的错误! 安装: ①./configure ②make&&make install 配置: pgpool-II 的配置参数保存在 pgpool.conf 文件中。文件以每行 “parameter = value” 的格式保存。当你安装 pgpool-II 后, pgpool.conf.sample 被自动建立。我们建议拷贝或者重命名它为 pgpool.conf ,然后你可以随意编辑它。 $ cp /usr/local/etc/pgpool.conf.sample /usr/local/etc/pgpool.conf pgpool-II 默认只接受到 9999 端口的本地连接。如果你希望从其他主机接受连接,请设置 listen_addresses 为 '*'. listen_addresses = 'localhost' port = 9999 4.启动: pgpool -n & 注意:如果提示“ could not open pid file as /var/run/pgpool/pgpool.pid. reason: No

安装pgpool

我的梦境 提交于 2020-02-27 21:22:31
https://my.oschina.net/heiky/blog/1588143?from=singlemessage&isappinstalled=0 来源: oschina 链接: https://my.oschina.net/caixu23/blog/3162335

multiple Postgres clusters (not instances) on 2 machines

ぐ巨炮叔叔 提交于 2019-12-25 00:38:01
问题 I am trying to setup (half way done already) 2 Postgres clusters, say prod and test (not instances) on 2 machines say .114 and .115. One cluster has 2 instances. Each instance runs on each of machines. I am trying to make .114 as primary for test cluster while .115 will work as secondary for it. For prod cluster .115 will work as primary and .114 as secondary. Although it sounds not-good that i have test and prod on same machines but this is what customer needs now. I have already setup test

pgpooladmin 3.5.2 Error code e1014 could not read .pcppass file

陌路散爱 提交于 2019-12-22 07:51:54
问题 That the error looks like The right's are Anyone there to solve the problem? 回答1: The page in the link (http://www.pgpool.net/docs/latest/pgpool-en.html#pcp_comand_password) in the posted solution is no longer present. I was able to resolve this by copying the .pcppass file from the postgres user's directory to /var/www/ and changing it's owner to the apache system user. sudo cp /home/postgres/.pcppass /var/www/ sudo chown apache /var/www/.pcppass sudo chmod 600 /var/www/.pcppass 回答2:

Java queries against PGPool II cause “unnamed prepared statement does not exist” errors

不打扰是莪最后的温柔 提交于 2019-12-22 03:22:09
问题 I have a Java app that uses a Postgres database and I'm trying to introduce PGPool in order to scale up my database. I'm running into a problem where Postgres throws the following error: unnamed prepared statement does not exist . After cranking up the logging on Postgres I see the following stuff happening for every select statement my app executes: EDTLOG: 00000: duration: 7.585 ms parse <unnamed>: "my select statement here" EDTLOG: 00000: duration: 0.088 ms bind <unnamed>: "my select

primary lagging behind recovery in postgres streaming replication

不想你离开。 提交于 2019-12-11 02:37:57
问题 I was doing a streaming replication between 3 nodes of postgresql-9.5 . 1 master and 2 slaves I was trying to configure auto failover but when i switched back to my original master, and restarted the postgres service, I am getting the following error:- highest timeline 1 of the primary is behind recovery timeline 11 Can somebody please help. Thanx in advance 回答1: I'm not sure what you exactly mean by "when i switched back to my original master", but it looks that you are doing the wrongest