数据库同步——SymmetricDS快速入门指南(续)

来源:互联网 发布:数据库系统是以 编辑:程序博客网 时间:2024/06/05 18:20

       通过上一篇文章,可利用SymmetricDS自带的例子实现两个或多个数据库的同步,但是我们会发现,上一篇文章中的数据同步是单向的,如图所示

                                          

       如果现在需要双向同步,或者新建一个表,对新表进行同步,该如何操作呢?

       仔细查看数据库中的系统表(以sym为前缀),可以发现,存在sym_channel、sym_trigger、sym_router、sym_trigger_router和sym_node_group五张表是相互关联的,如图所示。

                            

       sym_channel表设置通道,最少有两条数据,一条表示从corp到store,假设为item,另一个表示从store到corp,假设为sale;sym_trigger表设置触发器,包括设定源表、通道等信息;sym_trigger_router表设置触发器和路由的关联,sym_router表设置路由,包括设定源节点组id、目标节点组id(与sym_node_group表相对应)等信息,至少有两条数据,一条source_node_group_id为corp、target_node_group_id为store,假设为corp_2_store,另一条source_node_group_id为store、target_node_group_id为corp,假设为store_2_corp;sym_node_group定义节点组,在配置文件中定义,如corp和store。

       如果在corp和store数据库中各新建一张表test,具有相同的表结构,要求两表实现数据双向同步,即修改corp数据库test表,store中test表数据立即更新,反正也通过。则需要做两方面工作:

       1、在sym_trigger表中增加两条数据,channel_id字段分别为sym_channel中item和sale,source_table_name字段均为test,其他字段与原记录相同。

       2、在sym_trigger_router表中增加两条数据,trigger_id字段分别对应sym_trigger中新增加数据的trigger_id,router_id字段分别对应sym_router表中两条数据corp_2_store和store_2_corp。

       上述关联表设置完成后,进行测试,分别新增或修改corp和store两数据库中test表的内容,查看对应数据是否更新。


0 0
原创粉丝点击