1. *简介*

ETL(Extract-Transform-Load的缩写,即数据抽取、转换、装载的过程),对于企业或行业应用来说,我们经常会遇到各种数据的处理,转换,迁移,所以了解并掌握一种etl工具的使用,必不可少的,Kettle就是强大的ETL工具。

1.1. *核心组件*

1.1.1. *Chef(中文:厨师)*

允许你创建任务(Job)。 任务通过允许每个转换,任务,脚本等等,更有利于自动化更新数据仓库的复杂工作。任务通过允许每个转换,任务,脚本等等。任务将会被检查,看看是否正确地运行了。

1.1.2. *Kitchen(中文:厨房)*

作业(job)执行器;允许你批量使用由Chef设计的任务 (如使用一个时间调度器)。KITCHEN也是一个后台运行的程序。做批处理是用kitchen执行作业

1.1.3. *Spoon(中文:勺子)*

1.1.3.1. *简介*

是一个图形用户界面,允许你通过图形界面来设计ETL转换过程(Transformation)和任务。

1.1.3.2. *启动*

双击spoon.bat文件


mongodb oplog备份有哪几种方式 mongo备份数据库_数据

1.1.4. Pan(中文:平底锅)

转换(trasform)执行器;允许你批量运行由Spoon设计的ETL转换 (如使用一个时间调度器)。Pan是一个后台执行的程序,没有图形界面。

2.安装

官网地址:http://www.kettle.be


mongodb oplog备份有哪几种方式 mongo备份数据库_数据_02

下载具体版本:kettle-neo4j-remix-8.2.0.7-719-REMIX.zip (>1GB)

3.2. *MySQL链接*

3.2.1. *驱动jar包*

链接MySQL时,需要将MySQL的对应链接jar包移动到 *kettle\data-integration\Data Service JDBC Driver* 文件夹下面(jar包链接:https://mvnrepository.com/artifact/mysql/mysql-connector-java/8.0.24)


mongodb oplog备份有哪几种方式 mongo备份数据库_数据_03

如:


mongodb oplog备份有哪几种方式 mongo备份数据库_mysql_04

7.1.基本方案

*考虑到生产环境mysql和mongodb,尤其是mongodb数据量过大这一问题,本次备份方案为每日增量备份生产库的数据,循环某时段有效数据的trace_code,一次备份一套有效的用户数据(单个trace_code),使得数据在备份的过程中不会出现内存不足的情况,方案流程为mysql与mongodb同时备份

7.1.1使用kettle完成方案

图为增量方案流程


mongodb oplog备份有哪几种方式 mongo备份数据库_mysql_05

7.1.2数据迁移

首先文件——》新建——》转换/作业/数据库与连接 创建一个job或者是转换

7.1.2.1获取数据库时间并设置变量

创建步骤


mongodb oplog备份有哪几种方式 mongo备份数据库_数据_06

步骤一:获取时间


mongodb oplog备份有哪几种方式 mongo备份数据库_mongodb_07


mongodb oplog备份有哪几种方式 mongo备份数据库_mongodb_08

步骤二:把获取的时间赋值到变量中


mongodb oplog备份有哪几种方式 mongo备份数据库_mongodb_09

7.1.2.2 获取时间段内的有效trace_code个数

创建步骤


mongodb oplog备份有哪几种方式 mongo备份数据库_数据_10

步骤一:获取变量,并找到某时段有效用户的数量


mongodb oplog备份有哪几种方式 mongo备份数据库_mongodb_11

步骤二:设置变量


mongodb oplog备份有哪几种方式 mongo备份数据库_mysql_12

7.1.2.3 设置一个循环并做条件判断

步骤:设置有效字段值


mongodb oplog备份有哪几种方式 mongo备份数据库_mysql_13

7.1.2.4 获取一个trace_code

创建步骤


mongodb oplog备份有哪几种方式 mongo备份数据库_mongodb_14

步骤一:循环当天有效的trace_code,并取出一个


mongodb oplog备份有哪几种方式 mongo备份数据库_数据_15

步骤二:设置变量trace_code


mongodb oplog备份有哪几种方式 mongo备份数据库_mysql_16

7.1.2.5 mysql表备份数据

创建步骤


mongodb oplog备份有哪几种方式 mongo备份数据库_mysql_17

步骤一:获取变量,并把变量设置为数值类型

这里要注意:因为mongodb的查询语句是需要加引号“ ”如果直接拿到设置的变量,就会出现引号嵌套的问题,mongodb无法识别。我前面说过kettle中的变量默认是字符类型的,所以这里我直接把取得的变量设置成数值类型,在sql中加 引号“”引用,这样就兼顾mongodb的使用

mongodb oplog备份有哪几种方式 mongo备份数据库_数据_18

步骤二:查询得到的trace_code数据


mongodb oplog备份有哪几种方式 mongo备份数据库_mysql_19

步骤三:增量备份 注意必须是插入/更新 ,一般的输入到表是全量输出,表中不能够有数据

mongodb oplog备份有哪几种方式 mongo备份数据库_mysql_20


mongodb oplog备份有哪几种方式 mongo备份数据库_mongodb_21

7.1.2.6 mongoDB备份数据

创建步骤


mongodb oplog备份有哪几种方式 mongo备份数据库_数据_22

步骤一:获取变量


mongodb oplog备份有哪几种方式 mongo备份数据库_数据_23

步骤二:创建mongodb表输入


mongodb oplog备份有哪几种方式 mongo备份数据库_数据_24


mongodb oplog备份有哪几种方式 mongo备份数据库_mysql_25


mongodb oplog备份有哪几种方式 mongo备份数据库_mysql_26


mongodb oplog备份有哪几种方式 mongo备份数据库_mongodb_27

步骤三:mongoDB备份


mongodb oplog备份有哪几种方式 mongo备份数据库_mysql_28


mongodb oplog备份有哪几种方式 mongo备份数据库_mysql_29


mongodb oplog备份有哪几种方式 mongo备份数据库_mongodb_30

7.1.2.7 循环累加


mongodb oplog备份有哪几种方式 mongo备份数据库_数据_31

7.1.2.8 条件判断——》备份完成

当变量名>=值 循环条件不成立 跳到成功,说明当前表的mysql+mongodb备份已完成


mongodb oplog备份有哪几种方式 mongo备份数据库_数据_32

7.1.3 注意问题

kettle 设置时间变量是默认为字符串类型,所以需要提前转换好格式

SELECT DATE_FORMAT(adddate(now(),-5),’%Y-%m-%d %H:%i:%s’) as datetimesFROM trace limit 1 adddate(now(),-5) 日期函数可以+ -时间

等到需要用到变量的时候把字符串转换成日期类型就可以比对

SELECT count(1) countnum,0 as stepn1from trace_filewhere order_no != “” and order_no is not null and end_date_time >= str_to_date(’mongodb oplog备份有哪几种方式 mongo备份数据库_数据_33{datetimes}’,’%Y-%m-%d %H:%i:%s’),+1)

7.1.4 定时任务

7.1.4.1 windows中创建批处理文件

bak.bate: cd E:\kettle\data-integration kitchen /file E:\kettle\data-integration\Data Migration\trace数据备份.kjb****EXIT

7.1.4.1 windows创建定时任务


mongodb oplog备份有哪几种方式 mongo备份数据库_mysql_34


mongodb oplog备份有哪几种方式 mongo备份数据库_mysql_35

在这里查看计划详情


mongodb oplog备份有哪几种方式 mongo备份数据库_mongodb_36