SymmetricDS 初步配置步骤
《一》 基本概念
图一
《二》准备工作
SymmetricDS是用java开发的,需要java 5及以上版本的JRE或者JDK,另还需要支持的数据
库之一。SymmetricDS 3.0系列目前支持如下数据库:
∙ MySQL version 5.0.2 and above
∙ Oracle version 10g and above
∙ PostgreSQL version 8.2.5 and above
∙ Sql Server 2005 and above
∙ Sql Server Azure
∙ HSQLDB 2.x
∙ H2 1.x
∙ Apache Derby 10.3.2.1 and above
∙ IBM DB2 9.5
∙ Firebird 2.0 and above
∙ Interbase 2009 and above
∙ Greenplum 8.2.15 and above
其他支持触发器和jdbc的数据库也是可以的,只不过symmetricDS没有实现相应的触发器,需要自己写。
1安装JDK
2 添加java可执行文件的路径到环境变量path
2 安装数据库,这个步骤本文省略,我们假定所有同步的数据库都是sql server 2005 或者2008
《三》安装SymmetricDS
安装很简单,直接解压-server.zip到某个目录
《四》创建数据库:本文省略该步骤
《五》配置server节点:node_0
1 复制samples/server.properties文件到engines目录
2 设置server.properties文件里各项参数如下:
(1) engine.name=server1 :这里指明该代理的名字
(2) db.driver=net.sourceforge.jtds.jdbc.Driver :连接SQL server数据库的JDBC驱动,驱动程序已经在安装文件里;
(3) db.url=jdbc:jtds:sqlserver://localhost:1433/sample :连接数据库的URL,symmetric所监听的数据库为:sample
(4) db.user=sa db.password=sa :登陆数据库的用户名和密码
(5) registration.url= :在所有节点中有一个是symmetricDS的初始数据和参数存放的地方,这个节点称为注册节点,其他节点在第一次启动时需要向该节点申请注册,然后从注册节点获取相应初始数据和参数。作为注册节点这个URL为空。(当然注册节点也可以不参与数据同步)
(6) sync.url=192.168.1.105:8080/sync/server1 :这里声明本代理的访问地址,以便其他代理访问。其中server1 就是engine.name
(7) group.id=server :如基本概念的图一所示,我们把三个节点分为两组,server和client,这个参数就是声明节点所在的组名称
(8) external.id=1 :设置外部ID。这个外部ID跟symmetricDS本身没有关系,主要用在某些表达式中,作为过滤数据的条件。比如在乡镇卫生院的案例中,可以把external.id设置为每个卫生院的机构代码。symmetricDS本身为每个节点设置了唯一的ID号:node_id.
《六》创建symmetricDS存储配置数据所需的数据库表
(1) 打开命令行窗口,进入symmetricDS的samples目录
(2) 执行命令:..\bin\symadmin --engine server1 create-sym-tables
命令执行成功后在数据库里可以看到如下图所示的表
《七》初始化symmetricDS
(1)配置节点组(执行如下sql语句)
insert into sym_node_group (node_group_id, description)
values ('server', '数据中心');
insert into sym_node_group (node_group_id, description)
values ('client', '乡镇卫生院');
(2) 配置节点组之间的数据同步模式.同步模式有推或者拉两种,由data_event_action指定,其中W表示拉,p表示推(P = Push, W = Wait for Pull)
insert into sym_node_group_link (source_node_group_id, target_node_group_id, data_event_action)
values ('server', 'client', 'W');
(2)配置各个节点的信息,目前只有一个节点:注册节点也就是server1,这个注册节点也同时参与数据同步,也是同步节点。其他节点的信息会在他们注册之后自动生成。这里的node_group_id, external_id,值要跟之前的server.properties文件里的设置一样
insert into sym_node (node_id, node_group_id, external_id, sync_enabled)
values ('00000', 'server', '1', 1);
(3)symmetricDS自身的节点ID,作为注册节点自身节点ID需要我们设置,其他节点是自动设置的。
insert into sym_node_identity values ('00000');
(4)设置数据通道Channels,本文将会把HIS中的is.OBJECTS表作为同步监听对象。需要注意的是:有外键关联的表必须定义在同一数据通道。
insert into sym_channel
(channel_id, processing_order, max_batch_size, enabled, description)
values('o', 1, 100000, 1, 'object');
(5)定义触发器,指明哪一个表需要被监听,本文被监听的表为:is.OBJECTS,is是架构名称。(需要在这张表中增加一列:org_code).在objects表中有一个字段ICON是image类型,我们不打算同步这个字段,所以设置EXCLUDED_COLUMN_NAMES=’ICON,’。
insert into sym_trigger
(trigger_id, SOURCE_SCHEMA_NAME ,source_table_name,channel_id, EXCLUDED_COLUMN_NAMES ,last_update_time,create_time)
values('obj','is','objects','o',’ICON,’,current_timestamp,current_timestamp);
java连接sqlserver数据库(6)配置数据路由:即数据同步时的数据流向。本例子中将会根据objects表org_code的值来决定数据的同步流向哪一个节点。
其中ROUTER_TYPE='column'就是指明由需同步的表中某列的值来决定数据流向,具体的条件则来表达式决定:ROUTER_EXPRESSION='org_code=:EXTERNAL_ID'
insert into sym_router
(router_id,source_node_group_id,target_node_group_id, ROUTER_TYPE,ROUTER_EXPRESSION , create_time,last_update_time)
values('server_client', 'server', 'client', 'column', 'org_code=:EXTERNAL_ID', current_timestamp, current_timestamp);
(7)最后就是建立触发器和数据路由之间的关联。symmetricDS中定义的触发器只有被关联后,symmetricDS才会为这个表自动生成相应的触发器。
insert into sym_trigger_router
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
values('obj','server_client', 200, current_timestamp, current_timestamp);
<八>启动symmetricDS
在命令行窗口执行如下命令:
..\bin\sym --port 8080 --server
<九>允许client组的节点注册。(当然目前这个节点还没配置和启动,后面将会讲述如何配置)
另外打开一个命令行窗口,进入symmetricDS的samples目录,执行如下命令:
..\bin\symadmin --engine server1 open-registration client 2
..\bin\symadmin --engine server1 open-registration client 3
<十>配置client节点:node_1
1 engine.name=client1 :这里指明该代理的名字
2 db.driver=net.sourceforge.jtds.jdbc.Driver :连接SQL server数据库的JDBC驱动,驱动程序已经在安装文件里;
3 db.url=jdbc:jtds:sqlserver://localhost:1433/sample :连接数据库的URL,symmetric所监听的数据库为:sample
4 db.user=sa db.password=sa :登陆数据库的用户名和密码
5 registration.url= :注册节点的URL
6 sync.url=192.168.1.116:8080/sync/client1 :这里声明本代理的访问地址,以便其他代理访问。其中client1 就是engine.name
7 group.id=client :如基本概念的图一所示,我们把三个节点分为两组,server和client,这个参数就是声明节点所在的组名称
8 external.id=2 :设置外部ID。这个外部ID跟symmetricDS本身没有关系,主要用在某些表
达式中,作为过滤数据的条件。比如在乡镇卫生院的案例中,可以把external.id设置为每个卫生院的机构代码。symmetricDS本身为每个节点设置了唯一的ID号:node_id.
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论