根据数据库日志进行增量更新如何作

有两种做法

kettle时间戳增量更新 kettle更新数据kettle时间戳增量更新 kettle更新数据


kettle时间戳增量更新 kettle更新数据


1、在设计数据库的时候,带入时间戳和是否删除字段,新增、修改都要更新这个字段,除此之外,删除是伪删除,也要更新时间戳,然后记录上次的时间戳,就可以取出增量数据了

2、如果设计数据库时未有该内容,只能在加一个类似日志表的东西,记录了什么时候,哪个表,哪行数据,干什么了,然后从这里读取增量

使用Kettle工具进行增量数据同步

增量同步的方式有很多种,我使用的是: 快照表 + 触发器

需求:

当主库库表发生增删改时,从库库表与主库库表数据保持一致。

环境:

1、Mysql

2、kettle 7.1

思路:

1、在主库中,将需要同步的库表新建快照表,表结构一致。

2、在主库中,分别新增库表的增、删、改的触发器。

2、新建一个转换,该转换只针对一张表的增删改。

3、新建‘表输入’控件,查询主库的快照表

4、新建‘插入/更新’控件,插入数据到从库的库表,查询的关键字要求。

5、新建‘删除’控件,将主库的快照表中的数据删除。

注意: 主库的库表,要新增针对增、删、改的三张表快照,三张表的步骤同上面的1 - 5 一致。

6、新建作业控件

7、配置发送邮件服务

8、完成

KETTLE如何实现实时的增量更新

设你的表里有标示ID或者是时间戳,以下以标示ID为例(时间戳同理) 总体结构 表输入 表输入从目标表中取出ID 表输入2 取出源表中ID大于目标表ID的所有记录,注意勾选替换SQL中的变量,如图 表输出 输出到目标表

kettle如何增量更新数据,有哪几种方式

kettle如何增量更新数据,有哪几种方式

如果你用的是INNODB数据库,有一个最简单有效的调整,就是将INI文件里面的下面参数调整:

原始:

innodb_flush_log_at_trx_commit=1

调整为:

innodb_flush_log_at_trx_commit=2

怎么使用kettle进行增量数据的抽取

如果你用的是INNODB数据库,有一个最简单有效的调整,就是将INI文件里面的下面参数调整:

原始:

innodb_flush_log_at_trx_commit=1

调整为:

innodb_flush_log_at_trx_commit=2

Kettle入门之四 Kettle定时任务(后台任务)

前面我们介绍了 Kettle的Spoon的转换和作业定时任务GUI设计方式以及运行,但是在实际应用中,我们需要任务是在后台运行。

首先我们需要了解Kettle的Kitchen和Pan

Kitchen——作业(job)执行器 (命令行方式)

Pan——转换(trasform)执行器 (命令行方式)

下面我们将重点讲解经常会用到的 作业执行器 Kitchen.bat 。

1、新建一个bat文件,命名job.bat,然后编辑,输入内容如下:

注意:确保路径的正确性。

2、双击job.bat,即可运行。

我们已经建立了命令行运行的bat文件,并且已经可以正确执行我们的ETL任务了,但是现在我们在运行bat后,桌面上面会一直存在一个控制台的黑窗口,我们可以使用bat命令中的隐藏窗口的命令。

修改我们的job.bat文件

在此双击job.bat运行,我们将不会再看到控制台黑窗口继续保留在桌面上,并且等待设置的间隔时间后,我们可以看到日志文件记录。

···

2017/12/07 16:51:26 - Kitchen - Logging is at ll : 基本日志

2017/12/07 16:51:26 - Kitchen - Start of run.

2017/12/07 16:51:31 - job2 - 开始执行任务

2017/12/07 16:51:31 - job2 - job2

2017/12/07 16:53:31 - job2 - 开始项[简单表同步]

2017/12/07 16:53:31 - 简单表同步 - Loading transformation from XML file [file:///D:/KettleProject/TEST2.ktr]

2017/12/07 16:53:31 - 简单表同步 - Using run configuration [Pentaho local]

2017/12/07 16:53:31 - 简单表同步 - Using legacy execution engine

2017/12/07 16:53:31 - TEST2 - 为了转换解除补丁开始 [TEST2]

2017/12/07 16:53:32 - 表输入.0 - Finished reading query, closing connection.

2017/12/07 16:53:32 - 表输入.0 - 完成处理 (I=3, O=0, R=0, W=3, U=0, E=0)

2017/12/07 16:53:32 - 插入 / 更新.0 - 完成处理 (I=3, O=0, R=3, W=3, U=1, E=0)

···

上一篇: Kettle入门之三 Kettle定时任务(GUI)

下一篇: Kettle入门之五 Kettle应用场景(增量插入和更新)