数据迁移技术方案调研
--ZN
前言:
考虑到现有的业务需求,我们需要对数据进行筛选之后再进行迁移。单纯的数据库备份方案可能无法完全符合我们的业务场景,所以考虑使用ETL中间件。ETL中间件有几个好处,不需要单独部署,可以与springboot做整合。支持复杂的查询语句做数据筛选。导入数据时可以做个性化的定制,比如数据冲突时替换原有数据。性能也很好。且支持压缩,可以减少数据文件的大小。
1.关于ETL
ETL,是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程,是数据仓库的生命线。
抽取(Extract)主要是针对各个业务系统及不同服务器的分散数据,充分理解数据定义后,规划需要的数据源及数据定义,制定可操作的数据源,制定增量抽取和缓慢渐变的规则。
转换(transform)主要是针对数据仓库建立的模型,通过一系列的转换来实现将数据从业务模型到分析模型,通过ETL工具可视化拖拽操作可以直接使用标准的内置代码片段功能、自定义脚本、函数、存储过程以及其他的扩展方式,实现了各种复杂的转换,并且支持自动分析日志,清楚的监控数据转换的状态并优化分析模型。
装载(Load)主要是将经过转换的数据装载到数据仓库里面,可以通过直连数据库的方式来进行数据装载,可以充分体现高效性。在应用的时候可以随时调整数据抽取工作的运行方式,可以灵活的集成到其他管理系统中。
2.已有的ETL技术方案。
Kettle
一款国外免费开源的、可视化的、功能强大的ETL工具,纯java编写,可以在Windows、Linux、Unix上运行,数据抽取高效稳定。
尽管Kettle是一款强大的ETL工具,但也存在一些缺点目前是没有好的办法可以解决:1. 学习曲线较陡:对于新手来说,Kettle可能需要一些时间来理解其概念和操作方式。尤其是在处理复杂的数据转换逻辑时,需要具备一定的数据处理和编程知识。
2. 中文文档和支持有限:相比其他一些国产的ETL工具,Kettle在国内的用户数量虽然很多,但是中文文档和技术支持相对有限。这可能导致在遇到问题时需要更多的自学和研究。
3. C/S结构的系统虽然安装比较简单但是安装包很大,启动比较慢,不支持多租户模式,每个做ETL流程的工程师都需要安装一套kettle。
DataX:
是阿里云DataWorks数据集成的开源版本,在阿里巴巴集团内被广泛使用的离线数据同步工具/平台。 DataX 实现了包括 MySQL、Oracle、OceanBase、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、Hologres、DRDS, databend 等各种异构数据源之间高效的数据同步功能。
读写效率调查:
-
- 机器参数
- 执行DataX的机器参数为:
- cpu: 24核 Intel(R) Xeon(R) CPU E5-2630 0 @ 2.30GHz
- mem: 48GB
- net: 千兆双网卡
- disc: DataX 数据不落磁盘,不统计此项
- Mysql数据库机器参数为:
- cpu: 32核 Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz
- mem: 256GB
- net: 千兆双网卡
- disc: BTWL419303E2800RGN INTEL SSDSC2BB800G4 D2010370
DataX jvm 参数
-Xms1024m -Xmx1024m -XX:+HeapDumpOnOutOfMemoryError
测试报告
单表读测试报告
通道数 | 是否按照主键切分 | DataX速度(Rec/s) | DataX流量(MB/s) | DataX机器网卡进入流量(MB/s) | DataX机器运行负载 | DB网卡流出流量(MB/s) | DB运行负载 |
1 | 否 | 183185 | 18.11 | 29 | 0.6 | 31 | 0.6 |
1 | 是 | 183185 | 18.11 | 29 | 0.6 | 31 | 0.6 |
4 | 否 | 183185 | 18.11 | 29 | 0.6 | 31 | 0.6 |
4 | 是 | 329733 | 32.60 | 58 | 0.8 | 60 | 0.76 |
8 | 否 | 183185 | 18.11 | 29 | 0.6 | 31 | 0.6 |
8 | 是 | 549556 | 54.33 | 115 | 1.46 | 120 | 0.78 |
单表写测试报告
通道数 | 批量提交行数 | DataX速度(Rec/s) | DataX流量(MB/s) | DataX机器网卡流出流量(MB/s) | DataX机器运行负载 | DB网卡进入流量(MB/s) | DB运行负载 | DB TPS |
1 | 128 | 5319 | 0.260 | 0.580 | 0.05 | 0.620 | 0.5 | 50 |
1 | 512 | 14285 | 0.697 | 1.6 | 0.12 | 1.6 | 0.6 | 28 |
1 | 1024 | 17241 | 0.842 | 1.9 | 0.20 | 1.9 | 0.6 | 16 |
1 | 2048 | 31250 | 1.49 | 2.8 | 0.15 | 3.0 | 0.8 | 15 |
1 | 4096 | 31250 | 1.49 | 3.5 | 0.20 | 3.6 | 0.8 | 8 |
4 | 128 | 11764 | 0.574 | 1.5 | 0.21 | 1.6 | 0.8 | 112 |
4 | 512 | 30769 | 1.47 | 3.5 | 0.3 | 3.6 | 0.9 | 88 |
4 | 1024 | 50000 | 2.38 | 5.4 | 0.3 | 5.5 | 1.0 | 66 |
4 | 2048 | 66666 | 3.18 | 7.0 | 0.3 | 7.1 | 1.37 | 46 |
4 | 4096 | 80000 | 3.81 | 7.3 | 0.5 | 7.3 | 1.40 | 26 |
8 | 128 | 17777 | 0.868 | 2.9 | 0.28 | 2.9 | 0.8 | 200 |
8 | 512 | 57142 | 2.72 | 8.5 | 0.5 | 8.5 | 0.70 | 159 |
8 | 1024 | 88888 | 4.24 | 12.2 | 0.9 | 12.4 | 1.0 | 108 |
8 | 2048 | 133333 | 6.36 | 14.7 | 0.9 | 14.7 | 1.0 | 81 |
8 | 4096 | 166666 | 7.95 | 19.5 | 0.9 | 19.5 | 3.0 | 45 |
16 | 128 | 32000 | 1.53 | 3.3 | 0.6 | 3.4 | 0.88 | 401 |
16 | 512 | 106666 | 5.09 | 16.1 | 0.9 | 16.2 | 2.16 | 260 |
16 | 1024 | 173913 | 8.29 | 22.1 | 1.5 | 22.2 | 4.5 | 200 |
16 | 2048 | 228571 | 10.90 | 28.6 | 1.61 | 28.7 | 4.60 | 128 |
16 | 4096 | 246153 | 11.74 | 31.1 | 1.65 | 31.2 | 4.66 | 57 |
32 | 1024 | 246153 | 11.74 | 30.5 | 3.17 | 30.7 | 12.10 | 270 |
模拟数据实际实验:
模拟:查出与试卷号1704相关联的四万条试题数据并写入,4W条数据花费十秒,文件大小为4M。
重新读入四万条数据花费10s