2007-04-23

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 則留言:

Unknown 提到...

您好,方便請問個問題嗎?
我使用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,但是中間缺的那段卻沒有補起來
看起來資料似乎不同步,請問這樣是正常的嗎?
謝謝

網誌存檔

PostgreSQL & Google-Analytics Running...

::Planet PostgreSQL::

PostgreSQL Information Page

PostgreSQL日記(日本 石井達夫先生Blog)

PostgreSQL News

黑喵的家 - 資料庫相關

Google 網上論壇
PostgreSQL 8 DBA 專業指南中文版
書籍內容討論與更多下載區(造訪此群組)
目錄下載: PostgreSQL_8 _DBA_Index_zh_TW.pdf (更新:2007-05-18)

全球訪客分佈圖(Google)

全球訪客分佈圖(Google)