pgpool-II使用指南-复制(簡體)
更新:2007-04-25
對映章節:
本文翻译自源代码包中的“pgpool-II Tutorial”文档
(服务器采用上一节安装的结构,单机三DB)
配置复制系统
将pgpool.conf文件中的replication_mode参数设置为true开启数据库复制功能:
replication_mode = true
replication_mode设置为true时,pgpool-II将收到的查询请求转发到每一个数据库节点。
load_balance_mode设置为true时,pgpool-II在数据库节点之间分布SELECT查询。
load_balance_mode = true
在这里我们将这两个参数都设置为true。
验证复制系统
为了能够响应pgpool.conf的修改,必须重新启动pgpool-II。
在重新启动完成后,测试一下复制系统运行是否正常。
首先,创建一个用来复制的数据库,命名为“bench_replication”,它应该在每个节点上创建。
通过pgpool-II使用createdb命令,就会在每个节点创建数据库:
$ createdb -p 9999 bench_replication
接下来,使用带有-i选项的pgbench以预定义的数据表和数据初始化数据库:
$ pgbench -i -p 9999 bench_replication
下边的表格是pgbench -i 创建的数据表和数据的概要信息,如果数据表和数据在所有节点上被正确创建,复制系统将会正常工作。
数据表名 | 数据行数 |
---|---|
branches | 1 |
tellers | 10 |
accounts | 100000 |
history | 0 |
用一个简单的shell脚本来检查每个节点,显示上述4个数据表的数据行数:
$ for port in 5432 5433 5434; do
> echo $port
> for table_name in branches tellers accounts history; do
> echo $table_name
> psql -c "SELECT count(*) FROM $table_name" -p $port bench_replication
> done
>done
关于复制的文档比较简单,就这么多。
题外话,我并不是专门作pgsql的,对它的了解也很肤浅,一边上班一边学习它而已。因为很少在实际工作中使用,所以经验很少。翻译这些东西,也是为了自己能够知道更多关于pgsqld的内容。如果有问题,可以mail给我,并请同时cc给阿益,大家共同探讨。同时我们也在寻求更多的交流渠道供大家使用,希望朋友越来越多,社群越来越大,加强交流使我们进步。
延伸閱讀(Link):
pgpool官方英文网站
pgpool-II官方英文网站
1 則留言:
您好,方便請問個問題嗎?
我使用pgpool-II,後端有4個node
應用replication和load balance
createdb 正常
insert into資料正常
然後我把第4個node pc_ctl stop
繼續透過port 9999 insert資料
select資料正常
但是把node 4 pc_ctl start後
select資料還是正常
但是單獨select node 4 port 5432時,資料只有之前的
再透過port 9999 insert資料
資料有寫入node 4,但是中間缺的那段卻沒有補起來
看起來資料似乎不同步,請問這樣是正常的嗎?
謝謝
張貼留言