kettle从入门到精通 第九十九课 ETL之kettle 一键迁移整库(结构+数据)
本文介绍使用Kettle工具实现MySQL数据库整体迁移的方法。通过分步设计实现从测试环境到阿里云的数据库同步:1)读取源库所有用户表;2)循环处理每张表,先导出表结构DDL语句并在目标库执行;3)再同步表数据。关键点包括:使用information_schema过滤系统表、变量传递表名、分步执行DDL和数据插入。该方法可实现整库表结构和数据的完整迁移,测试结果验证了方案的可行性。最后展示了从te
最近因为家里的一些事情,心情比较糟糕,公众号文章停更了一些日子。今天咱们来结合前面学习到的一系列知识来迁移整个数据库。
场景:如需要将测试环境上面的整个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!!!

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