一、 工作原理
1. 灵蜂ETL工具 之 BeeDI日志解析同步的工作机制
下图显示了日志解析同步的组件关系。
日志解析同步由日志解析模块、过滤转换模块和数据加载模块组成。日志解析模块从指定的解析点(源库日志中事务发生时间)开始,按照提交顺序依次解析日志文件中各个事务包含的DML记录,同时向前移动解析点,并将记录封装为灵蜂ETL工具BeeDI内部格式数据,过滤转换模块根据预设的规则对解析后的数据进行过滤,排除不需同步的数据,对数据进行转换,满足标准化需要。数据加载模块将最终需要同步的数据翻译为目标数据库可接受的DML,按照预设的事务缓冲区大小执行提交DML,同时通知日志解析模块记录解析时间点,用于下次日志解析的起点。
每个日志解析模块可以对应多个过滤转换模块,每个过滤转换模块可以对应多个数据加载模块,由此单个增量数据流可以根据过滤条件向多个目标同步。
对于双向数据同步,只需反向设置从目标库解析日志,并将解析后的数据加载到源库。解析模块支持忽略某一指定用户产生的事务,由此可以避免双向同步时增量数据的反复同步。
1. SQL Server事务复制的工作机制
事务复制由 SQL Server 快照代理、日志读取器代理和分发代理实现。 快照代理准备快照文件(其中包含了已发布表和数据库对象的架构和数据),然后将这些文件存储在快照文件夹中,并在分发服务器中的分发数据库中记录同步作业。
日志读取器代理监视为事务复制配置的每个数据库的事务日志,并将标记为要复制的事务从事务日志复制到分发数据库中。分发代理将快照文件夹中的初始快照文件和分发数据库表中的事务复制到订阅服务器中。
下图显示了事务复制的主要组件。
新的事务复制订阅服务器中必须包含一些表,这些表需要与发布服务器中的表具有相同的架构和数据,这样才能从发布服务器中接收增量更改。
二、 技术参数对比
序号 | 技术 参数 | SQL Server事务复制 | 灵蜂 ETL工具 BeeDI日志解析同步 |
1 | 复制 表结构要求 | 结构一致且包含主键 | 支持同构或异构表同步,同步表不要求必须包含主键 |
2 | 复制数据的清洗转换 | 创建发布模块时,通过筛选器过滤复制数据,不支持对数据进行转换 | 过滤转换模块可对解析数据进行过滤,支持多种转换操作,如类型转换、字段运算、参照转换、字符串处理、字符集转换、空值处理、日期转换、聚集运算、既定取值、字段切分、字段合并 |
3 | 双向 复制 | 需要在订阅服务器创建触发器 | 直接解析目标库日志,将增量变化同步到源库 |
4 | 复制过程表结构改变 | 重新设置发布订阅,初始化快照数据 | 配置源表和目标表数据映射关系,从断点处继续同步 |
5 | 复制点 移动 | 不支持 | 任意指定从某一时间点开始挖掘增量数据 |
6 | 事务审计 | 不支持 | 记录每一事务的执行用户、执行时间、insert、delete和update记录数 |
7 | 部署方式 | 需要主库开启发布模块,从库开启订阅模块 | 集中部署,无需在主从库安装 |