异步的意思是一个订阅者的数据不一定是最新的,订阅者可以离线,而并不影响数据源的复制.而当订阅者再次连线后,它可以接收到所有的数据.当然,如果订阅者离线了很长的时间,那么它所要接收的数据将对网络和数据源产生很大的负担.
单向意味着你只能在数据源对表进行更改,并将结果复制到订阅者,而不能在订阅者来对表进行更改.
级连意味着一个订阅者也可以作为数据的源头来进行数据的发布,从而分担了主数据源的负担.
下边我们就开始配置slony, 我是在FreeBSD下配置的,并且已经分别在两台机器上安装好了PostgreSQL 8.2.4和slonyI-1.2.10,注意这里的版本是非常重要的,因为我在以前装
slony1-1.2.9来进行配置的时候会报版本错误.所以还是推荐大家使用最新的版本.
在配置之前我们还需要把设置两台PostgreSQL的配置文件pg_hba.conf ,添加如下可以让对方使用用户,密码的访问方式.
host all all 10.218.143.17/32 password
host all all 10.218.143.35/32 password
下边我们就开始配置slony,配置slony的过程就是通过slonik来输入配置的命令,我们把slonik的配置命令都写成脚本的形式来执行,方便复用.
第一个脚本:preamble.sk
define CLUSTER test;
define dc35 1;
define dc17 2;
define fqn fully qualified name;
define SUCCESS 0;
define FAILURES 1;
cluster name = @CLUSTER;
node @dc35 admin conninfo = 'dbname=portal host=10.218.143.35 user=pgsql
password=pgsql';
node @dc17 admin conninfo = 'dbname=portal host=10.218.143.17 user=pgsql
password=pgsql';
脚本很简单,就是定义一些常量,集群的名称和节点的信息.注意以后的脚本都要包含这个脚本来引用这些常量.
第二个脚本:initCluster.sk
#!/usr/local/bin/slonik
include <preamble.sk>;
#初始话集群和主节点
init cluster (id=@dc35,comment='primary node');
#保存节点信息
store node
(
id = @dc17,
comment = 'secondary node - dc17'
);
#配置连接信息,就是告诉订阅服务器如何来访问数据源的服务器
store path
(
server = @dc35,
client = @dc17,
conninfo ='dbname=portal host=10.218.143.35 user=pgsql
password=pgsql'
);
store path
(
server = @dc17,
client = @dc35,
conninfo ='dbname=portal host=10.218.143.17 user=pgsql
password=pgsql'
);
第三个文件:buildSet.sk
#!/usr/local/bin/slonik
include<preamble.sk>;
#创建复制集,复制集是slony最小的复制单位.
create set (id=1,origin=@dc35,comment='dc35');
#向复制集中添加表
set add table (set id=1,origin=@dc35,id=1,fully qualified
name='public.f_slony');
第四个文件:subscribeSet.sk
#!/usr/local/bin/slonik
include<preamble.sk>;
#创建订阅,设置数据源和数据目标.
subscribe set (id=1,provider=@dc35,receiver=@dc17,forward=yes);
执行完以上4个文件后,slony的整体结构我们基本上已经配置好了.接下来就要启动slon进程来开始复制的工作了,首先我们要写一个配置文件,让slon进行来连接哪个数据库.
文件:dc17.slon
cluster_name='test'
conn_info='dbname=portal host=10.218.143.17 user=pgsql password=pgsql'
文件:dc35.slon
cluster_name='test'
conn_info='dbname=portal host=10.210.143.35 user=pgsql password=pgsql'
启动slon进程:
slon -f dc35.slon >dc35.log &
slon -f dc17.slon >dc17.log &
启动之后观察进程的log信息,如果没有什么错误提示,那就基本上配置成功了,接下来我们就可以测试.我的测试表是f_slony,我们可以对f_slony进行删除修改操作,然后观察订阅的结果.默认slon的扫描频率是2s,我们可以设置这个时间间隔.

0 评论:
发表评论