symmetricds 双向同步工具

symmetricds 双向同步工具

官方地址:http://www.symmetricds.org
转载于 :https://www.cnblogs.com/killclock048/p/9817482.html

symmetricds工具下载 :https://pan.baidu.com/s/1iznKU7PQA7wKlAYblHqDNg
提取码:7i35

SymmetricDS是一个文件和数据库同步软件,支持多主复制,同步时过滤和在异构的网络环境中进行数据转换传输。它支持单向和双向上的多个订阅者,异步的数据复制。
SymmetricDS具有
1. 平台独立。不依赖其他组件包,独立配置完后实现功能。
2. 业务无关。不需要关心数据库中的业务,直接配置同步的表名等参数。
3. 同步及时。基于触发器的数据同步,保证数据传输的及时性。

使用方式:
首先下载SymmetricDS工具
将samples目录下的corp-000.properties文件拷贝到engines目录下,samples目录下是官网提供的一个范例,engines是你配置自己同步服务的目录,corp-000.properties可以说是配置从机节点参数的一个模板,所以拷贝出来做修改,文件名可以自定义修改

范例:
主节点(注意:去掉注释,其中的group.id=sqlserver、 engine.name=sqlserver-001
这个参数只是自定义参数,实际按照自己的要求取名)

主节点配置

group.id=sqlserver	
external.id=001
engine.name=sqlserver-001
registration.url=
sync.url=http://localhost:8080/sync/sqlserver-001
db.driver=net.sourceforge.jtds.jdbc.Driver
db.url=jdbc:jtds:sqlserver://127.0.0.1:1433;DatabaseName=sqlserverDb
db.user=sa
db.password=123456
job.routing.period.time.ms=5000
job.push.period.time.ms=10000
job.pull.period.time.ms=10000

engine.name 引擎名称,可以理解成当前节点服务的名称
db.driver 数据库的jdbc驱动名称
db.url 数据库连接字符串
db.user 数据库用户名
db.password 数据库密码
registration.url 上一级节点的注册地址,如果是顶级节点,就设为空
sync.url 本机的注册地址 http://localhost:8080/sync/sqlserver-001
其中8080是当前节点服务启动后需要占用的端口,sunserver-000即第一个参数engine.name的值
group.id 节点组的ID,当前顶级节点组名为sqlserver,意思是服务端
external.id 当前节点组下节点的编号,通过上面的group.id和external.id可以定位到唯一的节点
后面的参数是对S服务运行参数的配置,保持默认就好。

子节点配置

group.id=mysql
external.id=002
engine.name=mysql-002
registration.url=http://localhost:8080/sync/sqlserver-001
sync.url=http://10.0.0.40:9030/sync/mysql-002
db.driver=com.mysql.jdbc.Driver
db.url=jdbc:mysql://127.0.0.1:9030/saitron_babyplan?useUnicode=true&characterEncoding=utf-8
db.user=root
db.password=root
job.routing.period.time.ms=5000
job.push.period.time.ms=10000
job.pull.period.time.ms=10000

配置基本上与父节点类似,其中有些需要关注的是:
registration.url 这里填写的是上级节点的注册地址,可以看到就是父级配置参数中的sync.url
这里的sync.url其实不用配置,因为节点到此为止。如果sun1以下还有节点分支,那需要配置这个参数,并且在下一个节点的registration.url配置这个值。

初始化SymmetricDS配置:

初始化顶级节点sun的系统表结构。这里的系统表,指的就是Symmetric自己的同步服务表,并且所有的节点数据库中都需要有这些系统表(这也是我觉得悲催的地方,光这些系统表就二三十个,忒不美观了)。稍微庆幸的是,我们只要在顶级节点中创建这些表,所有子节点在服务启动后,会根据顶级节点自动创建。
通过命令行进入到symmetric\engines目录中
执行
…\bin\symadmin --engine sqlserver-001 create-sym-tables
(在bin目录下执行symadmin --engine sqlserver-001 create-sym-tables 命令)
运行成功,完成初始化系统表 ,此时数据库会多很多表(sym前缀的表都是)。

注意:将以下sql 改为自己.properties配置文件中对应参数后执行语句。
(1)配置节点组
insert into sym_node_group (node_group_id, description)
values ('mysql', '客户端');
insert into sym_node_group (node_group_id, description)
values ('sqlserver', '服务端');2)配置各节点组间的数据同步模式。有push(推)和wait(等待||拉)两种,由data_event_action制定,其中w(wait for pull)代表拉,p代表推(push)。
insert into sym_node_group_link (source_node_group_id, target_node_group_id, data_event_action)
values ('sqlserver', 'mysql', 'P');
insert into sym_node_group_link (source_node_group_id, target_node_group_id, data_event_action)
values ('mysql', 'sqlserver', 'W');3)配置各个节点信息。这里只要配置sun的节点信息就可,其他子节点sun1、sun2在注册节点后,会自动生成系统表并且插入数据
insert into sym_node (node_id, node_group_id, external_id, sync_enabled)
values ('001', 'sqlserver', '001', 1);

Insert into sym_node_security
	(node_id,node_password,registration_enabled,registration_time,initial_load_enabled,initial_load_time,initial_load_id,
	initial_load_create_by,rev_initial_load_enabled,rev_initial_load_time,rev_initial_load_id,rev_initial_load_create_by,
	created_at_node_id)
values ('001','123456',0,current_timestamp,0,current_timestamp,null,null,0,null,null,null,'001');

insert into sym_node_identity values ('001');4)配置数据通道表。有外键关联的表,一定要定义在同一通道中,才能进行关联同步。
insert into sym_channel
	  (channel_id, processing_order, max_batch_size, enabled, description)
values('bus_info', 1, 100000, 1, 'pc-duan');5)定义触发器。在这里定义需要同步库中的哪些表,注意有外键关联的表,通道值要相同。sym_trigger中的excluded_column_names字段,可以设置不想同步的表字段,这里并没有体现。
insert into sym_trigger
	  (trigger_id,source_table_name,channel_id,last_update_time,create_time)
values('Initnewbaby','Initnewbaby','bus_info',current_timestamp,current_timestamp);6)配置数据路由。配置数据同步时数据的走向,即从哪个节点向哪个节点同步。其中ROUTER_TYPE='column'就是指明由需同步的表中某列的值来决定数据流向,具体的条件则来表达式决定:ROUTER_EXPRESSION='org_code=:EXTERNAL_ID' 。默认ROUTER_TYPE=default’就好。
insert into sym_router
	  (router_id,source_node_group_id,target_node_group_id,router_type,create_time,last_update_time)
values('client_2_server', 'sqlserver', 'mysql', 'default',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('Initnewbaby','client_2_server', 200, current_timestamp, current_timestamp);

启动SymmetricDS
注册所有子节点,命令行进入D:\sun1\symmetric\engines 顶级节点目录。执行注册节点命令。
注:每一个子节点都需要注入,有几个节点需要注入几次。

…\bin\symadmin --engine sqlserver-001 open-registration mysql 002

再分别执行注入节点命令
…\bin\symadmin --engine sqlserver -001 reload-node 002

启动服务。
sun2为子节点所在目录,sun1为上级节点
分别启动三个节点的服务,先执行子节点。
命令行进入 D:\ sun2\symmetric\engines
执行
…\bin\sym --port 9030
命令行进入 D:\ sun1\symmetric\engines
执行
…\bin\sym --port 8080
这里要注意端口号,即配置文件中注册地址的端口号。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值