文档章节

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

威武不能笑
 威武不能笑
发布于 2014/04/30 10:35
字数 1476
阅读 2871
收藏 5

前部分:

  1. 下载:下载后的源码包中就包含中文手册和入门教程。

    http://www.pgpool.net/mediawiki/index.php/Downloads

    记住,ubuntu的话,挑选源代码下载!否则./configure的时候会报".PO"文件缺失的错误!

  2. 安装:

    ①./configure

    ②make&&make install

  3. 配置:

    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 such file or directory”,则新建/var/run/pgpool目录,并赋予写权限,或者修改pgpool.conf文件的pid_file_name选项,修改文件路径保证当前用户可访问控制。


  5创建system_db的调度函数:

            

            CREATE OR REPLACE FUNCTION pgpool_catalog.dist_def_branches(anyelement)

              RETURNS integer AS

            $BODY$

                SELECT CASE WHEN $1 >= 1 and $1 <= 30000 THEN 0

            WHEN $1 > 30000 and $1 <= 60000 THEN 1

            ELSE 2

             end;

            $BODY$

              LANGUAGE sql VOLATILE

              COST 100;

            ALTER FUNCTION pgpool_catalog.dist_def_branches(anyelement) OWNER TO postgres;

安装过程基本参考了(就是手册和入门教程):http://pgpool.projects.pgfoundry.org/pgpool-II/doc/tutorial-zh_cn.html

    6.结果验证:

        貌似全网的教程都没什么具体的验证方法(手册中的验证方法也不提示结果,模棱两可;而且我是在多个服务器上搭建的集群,不能直接用)。我这里大致记录了一下验证方法。前提是,已经使用pgbench -p 9999向数据库中插入测试数据。

        首先,我这里设置的pgpool监听端口号是9999,数据库集群(initdb)配置的端口号是5432.这种情况下,使用psql -p 9999 bench_parallel和psql -p 5432 bench_parallel都可以连接到bench_parallel数据库(测试并发模式的数据库)

        然后,使用9999端口登录数据库时,执行"select count(1) from pgbench_accounts;",获得的结果应该是被分发到各个服务器上数据的总和(经由pgpool获取查询结果);使用5432端口登录数据库时,执行"select count(1) from pgbench_accounts;",获得的结果应该是只存在本地数据库中的数据条目。

        最后说一句,不出意外的话,pgadmin连接到的服务器应该是5432,也就是说,在pgadmin上看到的数据仅仅是本地数据库中存储的数据。如果你配置的是并发模式,而且在pgadmin上看到的是测试数据的总数,那么很可能和我犯了同样的毛病,这个问题在后半部分有解释


后半部分:问题记录:

①编译pgbench时发现问题:Makefile:19: ../../src/Makefile.global: No such file or directory,

其实这种问题的原因都是,源代码解压过后,configure没有运行过,所以重新回到最高层./configure,会把缺失的文件补全。

②编译pgbench时发现问题:pgbench# make all之后:/usr/bin/ld: cannot find -lpgport。libpgport存在于/usr/local/pgsql/lib中,cp /usr/lcoal/pgsql/lib/libpgport.a /usr/local/lib.即可解决


③启动pgpool时:

bind(0.0.0.0:9999) failed. reason: Address already in use

遇见这个问题,说明9999端口被其它程序占用。

执行命令 lsof|grep 9999,查看9999端口被哪个进程占用。结果是pgpool。所以killall pgpool即可解决问题。

注意,如果报错bind(0.0.0.0:postgresql) failed. reason: Address already in use,那说明你的端口号设成了5432,和postgresql相同,重启服务器是否能够成功尚未可知。

pgpool只进入重用(replication),不进入并发(parallel)模式

按照入门教程一步一步配置下来发现,每一步都没有问题,但是执行pgbench -i -s 3 -p 9999 bench_parallel后,发现每一个数据库节点都是完整的存了一份数据,即便是将bench_parallel数据库单独放置在一个文件夹(表空间)中,也同样能看出文件大小是一样的,51M。

前后拖了将近一周,今天仔细的 看了一下数据分布表dist_def,忽然发现,table_name列中,值是“accounts”,而数据库bench_parallel中的表名是"pgbench_accounts"。。。。这个问题好囧,表名改成pgbench_accounts,然后再用pgbench向节点插数据,会发现插入的速度明显降低,甚至可以说是相当慢。当然,这是在将数据分区(节点)存储,效率一定会低,这样插入的数据才是我的目标--并发。

⑤对端口号加深了理解:

    本来这对我来说是模棱两可的概念,但是在研究上个问题的过程中,

又对相关知识进行了了解,汗。。。端口号嘛,每个IP确定一个主机,每个主机可以提供许多网络服务,这些网络服务同时使用一个IP,很难辨识,所以有了端口号的概念,也就是一个IP加一个端口号,可以确定一个服务。

这里,postgresql数据库服务器中,先用initdb初始化一个数据库集群(具体可查pgsql/bin/initdb --help),这里定义了一个端口号,默认5432。当然,每一个服务器上不一定只有一个数据库集群,这时,可以新建另一个端口号的数据库集群。


© 著作权归作者所有

威武不能笑
粉丝 2
博文 62
码字总数 12743
作品 0
黄浦
程序员
私信 提问
用Pgpool-II实现Postgresql高可用集群

其实整个安装和配置过程比较简单,官方网站有比较好的文档,在此只是根据前几天的实际部署整理一下。(实际执行的命令都用红色标出) 服务器: 10.18.27.181 pgpool服务器 --------此服务器上...

javasql
2015/02/27
3.9K
0
【入门教程】PostgreSQL+SequoiaDB HA 实践

前言 SequoiaDB作为分布式数据库,从设计之初就已经支持SQL访问。目前,SequoiaDB自研的SQL访问组件SequoiaSQL作为企业版的功能之一已经提供给上百家企业用户使用,并且已经实现分布式架构下...

巨杉数据库
2017/10/26
81
0
PostgreSQL 负载均衡中间件 Pgpool-II 5 版齐发

Pgpool-II 是一个给 PostgreSQL 补充实用功能的工具,包括:连接池、负载均衡、自动故障切换等等。 Pgpool全球开发集团宣布推出以下版本的Pgpool-II: 3.7.3 3.6.10 3.5.14 3.4.17 3.3.21 这...

周其
2018/04/18
1K
5
PostgreSQL 负载均衡中间件 Pgpool-II 五版齐发

Pgpool-II 是一个给 PostgreSQL 补充实用功能的工具,包括:连接池、负载均衡、自动故障切换等等。 Pgpool-II 刚刚发布了五个新版本: 3.7.2 3.6.9 3.5.13 3.4.16 3.3.20 新版本修复了在 Pg...

王练
2018/02/14
2.4K
6
Pgpool-II 最新小版本更新发布,PgSQL 负载均衡中间件

Pgpool-II 是一款 PostgreSQL 周边工具软件,功能包括:连接池、负载均衡和自动故障转移等。 前两天 Pgpool 全球开发组发布了最新的小版本更新,包括:Pgpool-II 4.0.4, 3.7.9, 3.6.16, 3.5...

局长
03/31
819
0

没有更多内容

加载失败,请刷新页面

加载更多

【JVM学习】2.Java虚拟机运行时数据区

来源: 公众号: 猿人谷 这里我们先说句题外话,相信大家在面试中经常被问到介绍Java内存模型,我在面试别人时也会经常问这个问题。但是,往往都会令我比较尴尬,我还话音未落,面试者就会“...

物种起源-达尔文
21分钟前
2
0
dart datetime

var date = DateTime.now().toUtc(); //格式化输出 String timestamp = "${date.year.toString()}-${date.month.toString().padLeft(2, '0')}-${date.day.toString().padLeft(2, ......

zdglf
59分钟前
20
0
如何在Linux中复制文档

在办公室里复印文档过去需要专门的员工与机器。如今,复制是电脑用户无需多加思考的任务。在电脑里复制数据是如此微不足道的事,以致于你还没有意识到复制就发生了,例如当拖动文档到外部硬盘...

老孟的Linux私房菜
今天
47
0
SpringBoot 集成MongoDB

一、MongoDB 简介 MongoDB 如今是最流行的 NoSQL 数据库,被广泛应用于各行各业中,很多创业公司数据库选型就直接使用了 MongoDB,但对于大部分公司,使用 MongoDB 的场景是做大规模数据查询...

zw965
今天
49
0
使用 Envoy 和 AdGuard Home 阻挡烦人的广告

> 原文链接:使用 Envoy 和 AdGuard Home 阻挡烦人的广告 通常我们使用网络时,宽带运营商会为我们分配一个 DNS 服务器。这个 DNS 通常是最快的,距离最近的服务器,但会有很多问题,比如: ...

米开朗基杨
今天
48
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部