基于 pgpool-II 的 postgresql replication 安装配置

发布: 2009-08-12 13:23

1. pgpool replication模式:
基于语句的复制,即将insert,update,delete,create等更新语句分发到所有节点上执行,如果有一个执行失败,其他节点还可以回退到之前的状态。而select语句则选择其中一个节点上执行,并返回结果。
这样做的结果应时更新的额外开销很大。

2. 安装环境及软件版本:
postgresql 84.
pgpool-II 2.2.2
两台linux, IP分别为:192.168.0.155, 192.168.0.151

postgresql的安装不再说明,只说明pgpool的安装及postgresql的replication相关的设置。

注意,postgresql要创建一个相同的账号/密码,并且都使用password认证方式。

pgpool-II 安装在 192.168.0.155上。

下载 pgpool-II
./configure
make
make install

默认在/usr/local/目录下

3. 配置:
pgpool的主要配置文件:pgpool.conf
cd /usr/local/etc
cp -v pgpool.conf.sample pgpool.conf

修改pgpool中的参数
修改设置
listen_addresses = "*"
replication_mode = true
load_balance_mode = true

添加backend主机:

backend_hostname0 = '192.168.0.151'
backend_port0 = 5432
backend_weight0 = 1

backend_hostname1 = '192.168.0.155'
backend_port1 = 5432
backend_weight1 = 1

其他的参数保持默认

启动pgpool

/usr/local/bin/pgpool

这时可以用netstat看到pgpool的监听端口,9999

使用pgpool创建 数据库,在155上执行
createdb -p 9999 -U yourname testrep

4. 登陆、数据测试
psql -p 9999 -U yourname testrep

如果这一步可以登陆上,说明replication配置成功,可以分别看看两台backend已经创建了一个数据库testrep

创建测试表,
create table node (id serial, title text, body text);

添加数据测试,
> insert into node (title, body) values ('abcd', 'iojjjj');

> select count(*) from node;

这时分别查看两个库是否已经有一条记录,如果都有记录,那么一个完整的postgresql replication配置好了。

使用repliation的结果是我们得到两台一样的数据库,在查询的时候就可以通过pgpool的负载均衡功能使用到两台不同的服务器了。


5. 简单结果

经过简单的测试,使用pgpool的replication是有相当大的额外开支,在插入记录,修改记录,删除记录的时候特别严重,在查询的时候稍微有一点。
也许可以装另一个pgpool,它做只读取的工作可能会好些。






原文: http://qtchina.tk/?q=node/315

Powered by zexport