为了方便我们增加一些环境变量在postgres用户下的.bash_profile文件中:
CLUSTERNAME=slony_example
MASTERDBNAME=pgbench
SLAVEDBNAME=pgbenchslave
MASTERHOST=localhost
SLAVEHOST=localhost
REPLICATIONUSER=postgres
PGBENCHUSER=pgbench
export CLUSTERNAME=tang_rep
一般来说,我们使用slony提供的一些脚本工具进行配置,这样可以大大减少我们配置的时间。
使用脚本工具需要配置脚本工具的配置文件/usr/local/etc/slon_tools.conf:
cp slon_tools.conf-sample /usr/local/etc/slon_tools.conf
然后编译/usr/local/etc/slon_tools.conf文件,首先是设置CUSTER_NAME,把文件中的$CLUSTER_NAME名字改成我们需要的名字,我这里使用了“ tangrep”:
$CLUSTER_NAME = 'tangrep';
然后就是节点配置,把文件里面不需要的add_node的部分删除,加上我们的配置:
add_node(node => 1,
host => 'localhost',
dbname => 'pgbench',
port => 5432,
user => 'postgres',
password => '');
add_node(node => 2,
host => 'localhost',
dbname => 'pgbenchslave',
port => 5432,
user => 'postgres',
password => '');
最后就是数据集的配置了,也就是配置我们需要同步的表或sequence:
"pkeyedtables" => [
'pgbench_accounts',
'pgbench_branches',
'pgbench_history',
'pgbench_tellers',
],
原本文件中还有对sequnece、无主键表同步的配置示例,把这些都注释掉。
生成pgbench测试数据库及相关的表:
createuser -A -D $PGBENCHUSER
createdb -O $PGBENCHUSER -h $MASTERHOST $MASTERDBNAME
createdb -O $PGBENCHUSER -h $SLAVEHOST $SLAVEDBNAME