2018-04-20  by 安静的下雪天  http://www.cnblogs.com/quiet-snowy-day/p/8890785.html 

本文翻译自SymmetricDS官方文档  How SymmetricDS Works  

Published: Saturday, 15 September 2012 00:00

Written by Eric Long

SymmetricDS 是开源的数据库复制服务器,通过捕捉、路由、批处理数据处理以实现多个数据库之间的同步。配置和运行时的信息使用数据库模型存储,为各种操作提供了一致的、可访问的视角。让我们来快速浏览一下,在概念上从安装到同步SymmetricDS是如何工作的。

Configuring Synchronization

配置数据模型是一组表,用户在其中描述节点网络,数据同步以及如何传输数据。节点是连接到数据库的SymmetricDS实例。每个节点在SYM_NODE表中都有一条记录,其中有一个系统使用的唯一内部节点ID,和一个供用户使用的外部节点ID。由于系统中的许多节点都具有共同特征,因此通过SYM_NODE_GROUP表会给每个节点都分配一个节点组。为了把节点连接在一起来同步数据,使用SYM_NODE_GROUP_LINK表中的一条记录将他们联系起来。该连接可以被指定为“push”即源节点发送自己的变更,也可以指定为“pull”即目标轮询源节点的变更。

数据的同步开始于逻辑触发器,它可以捕获对表的insert、update、delete操作。用户指定源表名称及其所在的目录和架构中的位置。可以使用通配符来匹配多个表,而不是分别录入每个表。如果不需要所有的列,可以创建一个列表记录被排除的列,即创建一个垂直子集。配置一个逻辑触发器将使SymmetricDS服务器在数据库的表上创建一个物理触发器。

获取数据到目标节点叫做路由,这是路由器的职责。最简单的是默认路由器,它将发送数据到所有节点。列匹配路由器可以在发送数据到节点之前在列中查找特殊值。它会等待外部节点ID出现在某一列中,在将它发送到该节点之前。其他路由器可以查询数据库,或者执行自定义脚本,以确定数据将会被发送到哪里。路由器与触发器想关联,它提供了创建水平子集的能力。

Change Data Capture

定义逻辑出发器会导致数据库触发器被置于表上,从而捕获数据到SYM_DATA表中。该表中被捕获的变更数据,使得SymmetricDS保证了传输数据的顺序和原子性,这意味着数据在目标节点上会被正确的回放他是如何被记录的。一个条目记录了唯一数据ID序列号,事件类型(insert、update、delete),事务ID,以及变更数据。事务ID作为本次事务的一部分被数据提交共同使用。为了适应不同的表,变更数据被存储为CSV格式。插入事件只记录新的数据行,删除事件记录旧的数据行连同使用的主键,更新事件记录新的数据行,旧的数据行,以及用到的主键。

Change Data Capture

译者注:上图 SYM_DATA表第1,2两条记录有相同的事务ID,说明这次事务包含两个表的数据处理事件。两个表的数据提交都使用了该事务ID。第3条记录表示更新处理,以CSV的格式记录了新数据,旧数据,以及主键。第4条记录表示删除处理,只记录旧数据和主键。

Routing and Batching

路由作业在后台定期执行,把变更聚集到批处理中,并分配到要交付的目标节点。变更的数据通过已配置的路由器来决定哪些节点将接收数据。如果使用的是默认路由器,数据会被分配到所有节点并且给出相同的批号。否则,每个节点将获取自己的批号,以便数据路由到它。数据将会被分配到同一批次处理直到达到最大批处理大小。如果用户配置了事务批处理算法,当有更多包含相同事务ID的数据的时候,批处理会扩大。数据到批处理的指派连同确定指派的路由器ID,记录在SYM_DATA_EVENT表中。批处理到节点的指派记录在SYM_OUTGOING_BATCH表中。

Syncing Data

在配置中关联到一起的节点,使用被指定的“push”或“pull”动作来同步它们的数据。Push是指一个节点连接到另一个节点并推送自己的变更,而pull是指一个节点等待其他节点的连接并接收它们的变更。每个动作都是在一定的时间间隔内执行,但是push动作只在有变更要发送的时候连接到网络,而pull动作是一直保持连接来确认是否有等待处理的变更。Pull处理是很有用的,当连接的节点处于防火墙之后,只允许传出连接而不是传入的连接。

  

批处理的状态记录在两端,源端记录在SYM_OUTGOING_BATCH表中,目标端记录在SYM_INCOMING_BATCH表中。批处理状态记录在两方的数据库中,使得数据复制的问题更容易查找,不管你使用的是哪种系统。带有中心节点并且使用远程节点发送和接收变更的网络,对于网络中任何数据复制的错误,从中心位置查找更加有利。

【SymmetricDS】SymmetricDS是如何工作的的更多相关文章

  1. SymmetricDS 数据库双向同步开源软件入门

    一句话概括该软件:SymmetricDS是一个文件和数据库同步软件,开源的,支持多主复制,同步时过滤和在异构的网络环境中进行数据转换传输.它支持单向和双向上的多个订阅者,异步的数据复制. 以下是从CS ...

  2. SymmetricDS文档翻译--【Chapter 3. 具体配置(Configuration)[section C]】

    3.6. Routers 眼下的实现中提供的Route实现包括: 1.      Default Router:这个Router发送全部的数据到Router中定义的目标节点所属的组中的全部的节点. 2 ...

  3. 多种数据库之间的同步工具SymmetricDS

    代码:https://github.com/JumpMind/symmetric-ds 原理: 通过触发器模式同步时,是将数据库的变化记录到某个系统表中,然后在客户端建立缓冲,并定期将变化push到接 ...

  4. SymmetricDS 快速和灵活的数据库复制

    开始谈谈开源的SymmetricDS,谈谈实际使用中,遇到的一些问题和解决办法.持续更新: SymmetricDS 快速和灵活的数据库复制 实际使用 和 埋过的坑 (一)知识篇 SymmetricDS ...

  5. SymmetricDS 3.5.0 发布,数据同步和复制

    SymmetricDS 3.5.0 关闭 53 个问题,新增对 SQLite on Android.Sybase ASE 和 Sybase ASA 的支持:增加了文件同步功能,可同步目录.文件过滤和脚 ...

  6. Download SymmetricDS Data Sync Software for Free

    Download SymmetricDS Data Sync Software for Free Download SymmetricDS

  7. 【SymmetricDS】实现新的数据库方言

    2018-04-20  by 安静的下雪天  http://www.cnblogs.com/quiet-snowy-day/p/8890785.html  本文翻译自SymmetricDS官方文档 I ...

  8. 基于SymmetricDS的多主一从数据库同步方案

    原文参照:https://blog.csdn.net/seattle0564/article/details/22096901 下面就记录下测试的一款第三方同步方案SymmetricDS(以下简称S) ...

  9. ASP.NET是如何在IIS下工作的

    ASP.NET与IIS是紧密联系的,由于IIS6.0与IIS7.0的工作方式的不同,导致ASP.NET的工作原理也发生了相应的变化. IIS6(IIS7的经典模式)与IIS7的集成模式的不同 IIS6 ...

随机推荐

  1. POJ 3167 Cow Patterns (KMP+前缀和)

    题意:给你两串数字,长度分别为n和m,数字大小在[1,25].当后一串数字每个数字的排名位置与前一串数字(任一长度为m的子串)每个数字的排名位置一致时就完全匹配,最后求哪些位置是完全匹配的. 例如:1 ...

  2. 运行tomcat,报错:Socket bind failed: [730048] ?????????×???(Э?é/???????/???)????í??错误

    运行tomcat时,报错: Socket bind failed: [730048] ?????????×???(Э?é/???????/???)????í??错误 原因分析: 这是因为之前已开启了一 ...

  3. python中的import一个注意事项

    import math def foo(): import math x = math.pi # 如果math在下面import会出错,因为import是个写的过程(添加到sys.modules中), ...

  4. Windows下软件调试

    1. 视频: (1).VS下的C++调试方法.wnv (2).WinDbg高级调试技术.wmv (3).内存与句柄泄漏处理技巧.wmv 2. “WinDbg高级调试技巧” 中 [01:22]讲到“软件 ...

  5. 用外部物理路由器时使用Neutron dhcp-agent提供的metadata服务(by quqi99)

    作者:张华  发表于:2015-12-29版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 ( http://blog.csdn.net/quqi99 ) 环境搭 ...

  6. CentOS 6.6 中jdk1.6的安装和配置方法

    Linux中JDK1.6的安装和配置方法 一.安装 创建安装目录,在/usr/java下建立安装路径,并将文件考到该路径下: # mkdir /usr/java 1.jdk-6u11-linux-i5 ...

  7. XSS 跨站攻击

    未整理完 介绍 XSS (Cross site Scripting),跨站脚本攻击,为了区分层叠样式表css,所以叫了XSS. 对于跨站脚本攻击,黑客界共识是:跨站脚本攻击是新型的"缓冲区溢 ...

  8. Java 框架

    Netty: Netty是由JBOSS提供的一个java开源框架.Netty提供异步的.事件驱动的网络应用程序框架和工具,用以快速开发高性能.高可靠性的网络服务器和客户端程序. 也就是说,Netty ...

  9. Webstorm2016使用技巧——SVN插件使用(svnToolBox)

    1. 安装SVN 我这里使用的是TortoiseSVN-1.9.4.27285-x64-svn-1.9.4,安装过程需要注意的是,默认安装没有选择”command line client tools” ...

  10. axios 拦截 , 页面跳转, token 验证(自己摸索了一天搞出来的)

    最近做项目,需要登录拦截,验证.于是使用了axios的拦截器(也是第一次使用,摸索了1天,终于搞出来了,真是太高兴啦!!!),废话不多说,直接上代码, 项目结构:vue-cli + webpack + ...