PGpool-II 3.0.4 被蹂躏了2个星期后,终于能用了,但从多方测试结果来看效果不同,下面进行3.1的安装测试,也算是给自己留个备忘。
多说无益,进入正题,pgpool介绍请看,你也可以根据其提供的进行安装。(目前只有英文版和日文版,不过很快就会有中文版了,因为笔者已经先拿到了中文版 O(∩_∩)O~ )
具体用哪个版本还要随各位看管的喜好,我做测试的所以就用个最新版了。
您可以从获得相关软件,放到安装主机上,当然 前提是你的PG已经装好了
PG的路径:/data/pgsql/ (我已经编译安装了PG 9.0.4在这个目录下)
pgpool-II 的安装
解压源码包
tar zxvf pgpool-II-3.1.0-alpha3.tar.gz
进入编译并安装
cd pgpool-II-3.1.0-alpha3/
./configure --prefix=/data/pgpool/ --with-pgsql=/data/pgsql/ --enable-sequence-lock
make
make install
--如果你不是 root,建议使用sudo make install,确认 pgpool的安装目录的owner是你当前用户。
安装pgpool_regclass & pgpool_walrecrunning
若您在使用 PostgreSQL 8.0 或之后的版本,强烈推荐在需要访问的 PostgreSQL 中安装 pgpool_regclass
函数,因为它被 pgpool-II 内部使用。如果不这样做,在不同的 schema 中处理相同的表名会出现问题(临时表不会出问题)。
cd pgpool-II-x.x.x/sql/pgpool-regclass
make
make install
psql -f pgpool-regclass.sql template1在 PostgreSQL 9.0 或更高的版本中使用了流复制,你需要在所有的通过 pgpool-II 访问的 PostgreSQL 中安装 pgpool_walrecrunning 函数。
cd pgpool-II-x.x.x/sql/pgpool-walrecrunning
make
make install
psql -f pgpool-walrecrunning.sql template1
--应在在每台通过 pgpool-II 访问的数据库中执行 pgpool-regclass.sql or pgpool-walrecrunning.sql。你不需要在你执行“psql -f pgpool-regclass.sql/pgpool-walrecrunning.sql template1”后建立的数据库中这么做,因为这个模板数据库将被克隆成新建的数据库。
建立 insert_lock 表
若您在复制模式中使用了 insert_lock ,强烈推荐建立 pgpool_catalog.insert_lock
表,用于互斥。到现在为止,insert_lock 还能够工作。但是,在这种情况下,pgpool-II 需要锁定插入的目标表。这种行为和
pgpool-II 2.2 和 2.3 系列类似。表锁与 VACUUM 冲突,所以 INSERT 操作可能因而等待很长时间。
cd pgpool-II-x.x.x/sql
psql -f insert_lock.sql template1
应在在每台通过 pgpool-II 访问的数据库中执行 insert_lock.sql。你不需要在你执行“psql -f insert_lock.sql template1”后建立的数据库中这么做,因为这个模板数据库将被克隆成新建的数据库。
安装过程至此完成。如果你是使用 Solaris 或者 FreeBSD,你需要在以上的描述中用 “gmake” 代替 “make”,因为这些操作系统需要 GNU make。
配置 pgpool-II
详情请看。
配置 pcp.conf
cd /data/pgpool/etc
mkdri sample
mv *.sample* sample
cp sample/pcp.conf.sample pcp.conf
格式: username:[password encrypted in md5]
pg_md5 -p
password: 或者
./pg_md5
配置 pgpool.conf
cp sample/pgpool.conf.sample-stream pgpool.conf
针对每种不同的模式,提供了附加的示例 pgpool.conf。
模式 |
示例文件 |
复制模式 |
pgpool.conf.sample-replication |
主/备模式(Slony-I) |
pgpool.conf.sample-master-slave |
主/备模式(流复制) |
pgpool.conf.sample-stream |
为客户端认证设置 pool_hba.conf (HBA)
cat pool_hba.conf
local all all md5
host all all 127.0.0.1/32 md5
host all all 10.0.0.0/8 md5
启动/关闭 pgpool-II
pgpool -n > /tmp/pgpool.log 2>&1 &
or
pgpool -c -f /data/pgpool/etc/pgpool.conf -F /data/pgpool/etc/pcp.conf -a /data/pgpool/etc/pool_hba.conf
or
pgpool -c -f /data/pgpool/etc/pgpool.conf -F /data/pgpool/etc/pcp.conf -a /data/pgpool/etc/pool_hba.conf -n >/data/pgpool/log/pgpool-`date +%F%H%M%S`.log 2>&1 &
pgpool [ -m ] stop
重新加载配置信息
pgpool-II 能够不需要重启而重新加载配置文件。
pgpool [-c][-f config_file][-a hba_file][-F pcp_config_file] reload
如果一个节点fail,首次链接可以能回失败返回,log也会有如下记录。
2011-08-24 01:30:27 LOG: pid 17426: postmaster on DB node 1 was shutdown by administrative command
2011-08-24 01:30:27 LOG: pid 17426: degenerate_backend_set: 1 fail over request from pid 17426
2011-08-24 01:30:27 LOG: pid 17417: starting degeneration. shutdown host 10.0.2.23(2011)
2011-08-24 01:30:27 LOG: pid 17417: Restart all children
2011-08-24 01:30:27 LOG: pid 17417: find_primary_node_repeatedly: waiting for finding a primary node
2011-08-24 01:30:27 LOG: pid 17417: find_primary_node: primary node id is 0
2011-08-24 01:30:27 LOG: pid 17417: failover: set new primary node: 0
2011-08-24 01:30:27 LOG: pid 17417: failover: set new master node: 0
2011-08-24 01:30:27 LOG: pid 17417: failover done. shutdown host 10.0.2.23(2011)
2011-08-24 01:31:17 LOG: pid 19253: connection received: host=bogon port=17086
持续更新...
Q&A
- 连接时 有下面提示:
- psql -p 9999
- psql: could not connect to server: No such file or directory
- Is the server running locally and accepting
- connections on Unix domain socket "/tmp/.s.PGSQL.9999"?
请先确认conf文件里制定的socket dir,psql里面有这样那个的帮助:
-h, --host=HOSTNAME database server host or socket directory (default: "local socket")
- psql -p 9999 -h /data/pgpool
psql: ERROR: "MD5" authentication with pgpool failed for user "postgres"
请用pg_md5 --md5auth -p 生成 ~/etc/pool_passwd 文件内容
阅读(2487) | 评论(0) | 转发(0) |