对于目前还在使用dmetl的人而言,本文主要作用是带各位初步了解如果从0开始到1完成一个数据库数据到另一个数据库迁移的工作,在这里将从导入数据到新建工程进行讲解。
由于一般的数据库都存储在服务器上,我们需要进行自行配置我们需要的配置,首先源库和目的库是必备的这里就不过多赘述。主要进行介绍我们的dmetl该项服务的配置,首先我们需要将中间库进行搭建,这里建议中间库与源库放在一起,因为中间库需要将源库的表结构进行导入并将数据进行镜像转换,之后的操作我们基本都在中间库进行完成。
而对于dmetl服务我们建议放在可以我们电脑直连的服务器上,这样我们在自己的电脑上能进行规则的配置,如果需要跳转在Linux上进行编辑规则的话,操作不方便,且可能出现断联导致数据未保存的问题。
首先进入到“数据源”页面按照自己的需要分别导入源库、中间库、目的库。
导入之后我们需要分别三个数据源
然后在源库中进行添加表操作,根据业务需求进行添加,需要用到的表在过滤条件中进行过滤勾选(注意每次确定的时候需要将过滤条件删除)
我们需要注意的是中间库用于数据量不大且源端数据不允许修改,不能添加影子表的场景,本质上是一个让我们在中间能够进行转化修改数据格式用以匹配目的端表的,因为到目的库的时候可能表结构,表类型发生了变化,或者表名称发生了变化,又或者是我们需要在中间进行隐私数据的加密操作,。所以在这里我们需要将所有的表结构添加到我们的中间库。
镜像同步的任务就是将所有我们需要用到的源端库的数据进行镜像将数据迁移到中间库当中去。
在将所有的表都进行镜像同步之后就可以在中间库中查看我们同步的数据,然后我们需要选中中间库的所有表进行创建影子表增量。影子表增量的作用即用来对比在每次增量同步的时候我们的etl并不知道哪些数据是增量数据,那么这时候影子表的作用就可以与中间库现在的数据进行比对,从而使得etl明确哪些数据是增量数据,而每次在进行增量同步的时候影子表会读取该次同步的数据放入到影子表中。
增量同步主要是为了将中间库中的表进行修改规则以及记录我们需要的别的数据(比如我们原来的主键ID是否需要记录,原来的别的域数据是否需要记录等等),从而适配我们的目的端数据,达到迁移的目的。
同时有增量同步的同时我们也需要进行删除同步数据的操作,这一步也是为了能够让我们的每次操作更加规范有个回退的方式,而不是简单的通过备份还原,然后再整体步骤重新完成,而是一步一步的规范化完成。
一般来说我们基础的建立的辅助性作业应该包含这些:
在前面我们进行了增量同步转换规则的编写,而现在我们需要进行整个流程的汇总作业,对于每一个表我们进行的操作分别是镜像同步——SHADOW增量同步——SQL语句执行,而不是直接在我们的增量同步中直接运行执行SQL,这样的增量作业的汇总操作更加的规范。但需要注意的是在作业里的SQL语句是没有从上到下的关系传变量下来的,而转换里的SQL语句是可以每一条数据都执行一次,并可以传变量下来,这是需要注意的点。
在进行dmetl工作的整个过程中最主要还是需要需要精细,可以先将需要用到的源端表以及目的端表都记录下来,对照着需要用到的表进行创建镜像同步、增量同步等工作,其中一些我遇到的需要注意的问题在下面提到:
在增量同步的时候我们选择使用中间库的影子库,影子库之前有提及主要是用来做对比好增量同步,同时在选择源表的时候选择是否选择首次同步,如果选择首次同步则会将数据同步到基表上,需要注意业务场景是否需要首次同步。
在设置变量的时候如果差别比较大可以使用默认配置和重置两个对比来看,一般来说都是要点默认配置来重置一下顺序和变量名,因为可能会出现变量名错误顺序混乱等错误,需要我们进行规范化处理,当然因为我们在开头的原配置表里添加列的时候后续所有过程都会新加一列,我们也可以通过看字段后面是否有中文名来判断是否是新加的域。
由于在同步的过程中可能出现已经同步过的数据客户在目的端进行过了更改导致迁移错误产生的唯一性约束问题需要具体结合业务场景需求机械能更改。
对于一些可能源端表中可为空的域但在目的表中设置为非空,这时候我们就需要通过表达式或者设定固定值来解决。
对于dmetl的使用场景其实总体来说涉及异构库的迁移数据和数据同步,就可以使用dmetl来进行完成,只是在功能模块上dmetl还提供了很多别的功能组件,但总体来说也是为了满足上述提到的业务场景中,下面是一些功能控件的介绍:
数据脱敏操作:
在数据读取模块中支持多种格式的数据,包含从数据源中的表/视图数据,同时还可以在数据源中添加csv、excel、txt等文件进行导入,只需要导入表的结构。我们也可以直接在现有的数据库中导出数据表数据,并将文件放到etl中也可以实现单独的表导入,这样也可以不需要我们连接到数据库就可以获取数据表的数据。
在数据转换模块当中dmetl提供了很多种的功能模块:
数据清洗转换:主要用于一些数据的填充格式的转换
列转行:对于一些特殊的需要转换的数据进行转换
在数据装载模块中也支持多种不同的格式进行装载。
达梦数据交换平台(DMETL)在实际使用中的性能影响主要来自数据源配置、处理逻辑复杂度、系统资源分配、网络传输及架构设计等多个方面。
文章
阅读量
获赞