基本概念
- 集群(cluster)
- 节点(Node)
- 复制集合(replication set)
- 数据原始生产者(Origin)、数据提供者(Providers)和数据订阅者(Subscribers)
- slon 守护程序(slon daemons)(俄语里的大象,slony表示slon的复数,一群大象)
- slonik 配置程序(slonik configuration processor)(俄语里的 小象)
集群
指的是一组PostgreSQL数据库实例,在集群间发生数据复制。集群在每个Slonik脚本中通过变量cluster_name = cname
来指定。
Slony-I在各个数据库中用集群名称创建一个模式,Slony-I内部使用的函数(包括触发器函数)、表、视图和序列都放在这个模式下。
节点
数据库集群里的单个数据库实例,在Slonik脚本里的开头定义,基本格式:
NODE 1 ADMIN CONNINFO = 'dbname=testdb host=server1 userslony'
1表示节点1,节点号在集群中唯一。“CONNINFO” 是用来连接PostgreSQL数据库的参数字符串,里面是键值对组成,键值对之间用空格隔开。这个字符串配置好以后,Slony-I不会检查是否正确,只在连接的时候才会判断。
复制集合
指的是需要复制的表和序列的集合,目的是把要复制的对象进行分组,然后对不同的分组进行不同的操作。
数据原始生产者、提供者和订阅者
节点生产数据时,被称为数据原始生产者,复制原始数据的节点被称为数据订阅者,但是Slony-I支持级联复制,因此当一个复制节点为另外一个复制节点提供数据时,它又被称为数据提供者。即同时具有提供者和订阅者的角色。
slon守护程序
集群的每一个节点上都有一个slon守护进程,用于处理复制中的事件,事件分为两类:
- 配置事件:做管理配置时,使用slonik程序发出的配置事件(修改或删除配置等)
- 同步事件:当源数据库上需要同步的表发生数据变更时,变更的多个事务组合成一个同步事件。
slonik配置程序
slonik是一个命令行工具,可以处理slonik命令以及slonik命令组合成的脚本
Slony-I复制的限制
限制主要有:
- 对大对象的变更不能复制
- DDL的变更不能复制
- 用户和权限的变更不能复制
基本上只支持对于表数据的同步(大多数基于触发器的数据同步软件特性),此外Slony-I还支持对于序列的同步。
对DDL,支持使用命令“SLONIK EXECUTE SCRIPT”来将DDL执行到所有节点上。使用PgAdmin Ⅲ做表结构变更时,可以使用里面的“使用Slony选项来让表变更在Slony集群里执行”。
对表的要求是:
- 要有主键,可以自动识别
- 没有主键要有唯一键
- 没有主键,要手动指定唯一键,没有唯一键,则不能复制表数据。