最近因为家里的一些事情,心情比较糟糕,公众号文章停更了一些日子。今天咱们来结合前面学习到的一系列知识来迁移整个数据库。

场景:如需要将测试环境上面的整个mysql数据库test迁移到阿里云环境,这个时候可以通过将表结构和数据导出为可sql脚本文件或者dump的方式来解决,今天咱们一起来学习下如何通过kettle同步迁移整库。

1、架构设计

1)读取源数据库中所有的表

2)循环处理每个表的表结构和数据

 2、读取库中所有表

1)表输入步骤读取所有表,输出list数据

2)将输出结果list复制到内存供后续步骤使用

 3)这里使用的是mysql,只读取用户新建表,不包含系统表,脚本如下:

SELECT TABLE_NAME
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'test' 
  AND TABLE_TYPE = 'BASE TABLE'
  AND TABLE_SCHEMA NOT IN ('information_schema', 'mysql', 'performance_schema', 'sys');

 

3、同步单个表结构和数据

1)循环设置变量,将表名作为变量往后续步骤传递

2)循环处理单个表结构,根据表名查询表结构脚本,然后在目标数据库执行dml语句。

3)循环处理单个表数据,根据表名查询数据插入到目标数据库。

 4、循环设置变量

1)从前置步骤获取表名

2)将表名设置为变量,往后续步骤传递

 5、循环处理单个表结构

1)表输入获取表结构dml语句

2)日志打印dml脚本

3)在目标数据源创建表

 6、循环处理单个表数据

1)表输入从源数据库获取表数据

2)表输出将数据插入到目标数据库

 7、演示从test数据库同步数据至target数据库

 保存&测试

 表结构和数据轻松同步到target数据库,如下图所示

done!!!

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐