最高级的和最没有侵入性的CDC方法是基于日志的方式。数据库会把每个插入、更新、删除操作记录到日志里。
Mysql提供了一个可以读取日志的工具:mysqlbinlog。这个工具可以把二进制的日志格式转换为人可以阅读的格式,然后把这种格式转换到文本文件里。mysqlbinlog里有几个选项,其中最重要的一个选项时可以设置开始/截止时间戳,这样可以只从日志里截取一段时间的日志。另外,日志里的每一项都有一个序列号,可以用来做偏移操作。Mysql的日志提供了上述两种方式来防止CDC过程发生重复和丢失数据的情况。
把mysqlbinlog输出写到文本文件后,我们就可以解析和读取这个文件,可以使用Kettle步骤来读取文件内容,并执行相应语句。
使用基于数据库的日志工具也有缺陷,即只能用来处理一种特定的数据库。
网友评论