1. 功能简介

2. 实施流程

2.1. 实施流程图

2.2. 源端及目标端环境准备

2.2.1. 源端信息收集

2.2.2. 目的端初始化

2.2.2.1. 实例规划

2.2.2.2. 表空间规划

2.2.2.3. 用户规划

2.2.3. DTS工具优化

2.3. Mysql到dm8迁移

2.3.1. 迁移前准备

2.3.2. 新建达梦数据库用户

2.3.2.1. 新建表空间

2.3.2.2. 新建用户

2.3.3. 新建工程与迁移

2.3.4. 选择迁移方式

2.3.5. 选择数据源和目的库

2.3.6. 指定对象复制或查询

2.3.7. 选择迁移对象

2.3.7.1. 首先迁移表结构

2.3.7.2. 再迁移表数据

2.3.7.3. 再迁移约束索引

2.3.8. 审阅迁移任务

2.3.9. 验证数据

2.3.10. 迁移后注意事项

2.3.10.1. 索引补录

2.3.10.2. 更新统计信息

2.3.10.3. 备份

3. 注意事项

3.1. 配置使用注意事项

  1. 功能简介

DM DTS基于成熟的关系数据模型和标准接口,跨越多种主流大型数据库,能以极少的系统开销实现数据迁移工作。DM DTS的技术原理图如下图所示:

DM数据迁移工具提供了主流大型数据库迁移到DM、DM迁移到主流大型数据库、DM到DM、文件迁移到DM以及DM迁移到文件的功能。DM数据迁移工具采用向导方式引导用户通过简单的步骤完成需要的操作。

DM数据迁移工具支持:

  • DM数据库之间模式、表、序列、视图、存储过程/函数、包、触发器、对象权限的迁移
  • 主流大型数据库Oracle、SQLServer、MySQL、DB2、PostgreSQL、Informix、Kingbase、Sybase的模式、表、视图、序列、索引迁移到DM
  • DM的模式、表、视图、序列、索引迁移到主流大型数据库Oracle、SQLServer、MySQL
  • ODBC数据源、JDBC数据源的模式、表、视图迁移到DM
  • DM数据库模式、表、序列、视图、存储过程/函数、包、触发器、对象权限迁移到XML文件,SQL脚本文件
  • DM数据库的表、视图数据迁移到文本文件,Excel文件,Word文件
  • 指定格式的文本文件,Excel文件,Word文件,XML文件和SQL脚本文件迁移到DM数据库
  1. 实施流程

    1. 实施流程图 

注:流程图中标注的迁移序列、表、视图、其他数据库对象这个流程顺序,在DTS工具中就已经自动处理了,自动按照这个顺序进行依次执行,如果我们需要手动迁移单独的几类数据库对象,需要按照序列、表、视图、其他数据库对象这个顺序进行。在表迁移的时候需要注意,表的迁移是有顺序的,按照表定义、数据、约束、索引、注释的顺序来进行迁移。

  1. 源端及目标端环境准备

    1. 源端信息收集

对于异构数据库迁移到达梦,在迁移之前,需要对源端数据库的一些信息进行收集,以便迁移方案的制定以及迁移评估,需要收集的信息如下表格:

调研项

调研情况

数据库版本/驱动版本

字符集编码

大小写是否敏感

是否以字节为单位

用户/模式

用户权限

表空间(数据、索引)

数据对象个数

大字段表个数

  1. 目的端初始化

    1. 实例规划
  1. 初始化数据库

源端为Mysql的情况下,对于目的端达梦库的初始化参数,需要做好规划,需要注意如下参数:

  • PAGE_SIZE:页大小默认为8K,建议设置成32K,一条记录的长度,受到页大小的限制,不可以超过页大小的一半,所以建议一开始规划页大小为32K;
  • EXTENT_SIZE:簇大小默认为16页,建议设置成32页;
  • CASE_SENSITIVE:默认是大小写敏感,源端为Mysql情况下,建议设置成大小写不敏感
  • BLANK_PAD_MODE:空格填充参数,是否要兼容Mysql进行设置,即在BLANK_PAD_MODE=0的情况下,’A’和’A ’被认为是相同的值,参数为1的情况下,认为是两个不同的值,根据现场具体应用的需求进行设置
  • CHARSET:字符集编码,可选GB18030、UTF-8,默认为GB18030,如果只存储中文和字母数字,使用GB18030更节省空间;
  • LENGTH_IN_CHAR:VARCHAR 类型对象的长度是否以字符为单位,默认是以字节为单位,此参数和字符集编码结合使用,所能存储的字符个数有所不同,详见如下表格:
  • COMPATIBLE_MODE:兼容参数,置为4为部分兼容Mysql参数,在dm.ini中可以进行配置,如果默认0的情况下,达梦视null不等同于空字符串,用户可能会插入空串,会导致is null查不出全部数据,所以视情况而定是否需要修改;

    1. 表空间规划

目的端的表空间规划,参照源库表空间使用情况即可,另需注意,如源库存储业务数据并不存在独立表空间,目的端则需要创建单独的业务表空间(包括数据表空间以及索引表空间);

目的端达梦的表空间需要根据源端数据量情况,规划表空间数据文件个数以及单个数据文件上限,单个数据文件不宜过大,可以创建多个数据文件;

需要根据源端表空间使用情况进行规划目的端数据文件初始大小,避免在迁移过程中频繁自动扩展,影响迁移速度。

  1. 用户规划

目的端用户参照源库用户进行创建,对于权限设置、资源限制要求等内容需要按照目的端达梦实际上线要求进行设置,因系统正式切割之后,会涉及到等保及分保测评,所以在用户规划时,需要注意测评要求,如下:

  1. 创建用户授予权限,不建议授予DBA角色,一般的权限,授予resource、public、vti、soi、svi这几个角色即可满足使用要求,其中各个角色的介绍,如下图所示,其中SVI角色,在新版本大概114及之后才会有,之前的版本,授予resource、public、vti、soi即可。

  1. 设置用户的资源限制参数中,比较常用的几个参数如下图,图中显示参数缺省值均为在通用机情况下:

  1. 口令限制,在通用机中创建的用户口令长度,复杂度默认只有口令长度九位,即PWD_POLICY=2,在ZYJ中,该参数默认值为14,参数值含义如下:

用户口令最长为 48 字节,创建用户语句中的 PASSWORD POLICY 子句用来指定该用

户的口令策略,系统支持的口令策略有:

0 无策略

1 禁止与用户名相同

2 口令长度不小于 9

4 至少包含一个大写字母(A-Z)

8 至少包含一个数字(0-9)

16 至少包含一个标点符号(英文输入法状态下,除“和空格外的所有符号)

口令策略可单独应用,也可组合应用。组合应用时,如需要应用策略 2 和 4,则设置

口令策略为 2+4=6 即可

该参数不可以在dm.ini中直接修改,需要用SP_SET_PARA_VALUE系统过程来修改,如SP_SET_PARA_VALUE(1, 'PWD_POLICY',8);

    1. DTS工具优化
  1. 设置合理的JVM内存参数:
  • -Xmx   Java Heap最大值,默认值为物理内存的1/4,最佳设值应该视物理内存大小及计算机内其他内存开销而定;
  • -Xms   Java Heap初始值,Server端JVM最好将-Xms和-Xmx设为相同值,开发测试机JVM可以保留默认值;
  • -Xmn   Java Heap Young区大小,不熟悉最好保留默认值;
  • -Xss   每个线程的Stack大小,不熟悉最好保留默认值;
  1. 设置方式
  • window环境下设置dts工具jvm内存值:在安装目录dmdbms\tool下修改dts.ini  文件中添加内存参数配置,如:  -Xms2048m -Xmx2048m
  • linux环境下设置dts工具jvm内存值:在安装目录dmdbms\tool下修改dts  文件中添加内存参数配置,如:  -Xms2048m -Xmx2048m
    1. Mysql到dm8迁移

      1. 迁移前准备
  • 在迁移前,先在本地数据库新建一个空库,并将要迁移到达梦数据库的MySQL数据库复制到本地的这个空库中,因为接下来需要修改某些表的设置。
  • CURRENT_TIMESTAMP
    CURRENT_TIMESTAMP是MySQL的函数,达梦不支持该函数,如果使用了这个函数,那么需要修改。
    例如将TABLE_NAME表中的updated_at字段修改为datetime类型,并去掉默认值。

  • 0000-00-00 00:00:00
    如果你的时间字段中有0000-00-00 00:00:00这样的数据,也是无法迁移成功的,可以批量改为1970-01-01 00:00:00
  • 修改char为varchar
    有的字段设置了默认值时,迁移时可能会提示长度不足。
    例如设定了user_sex这个字段为char(1),默认值为男,那么需要改为char(3)或者改为varchar(1)
  • 注意:varchar的长度与你初始化数据库时的这两个参数UNICODE_FLAG和LENGTH_IN_CHAR相关。
  • UNICODE_FALG:此参数表示了数据库中所有数据的字符集,包括数据字典的字符集。需要注意的是,数据库一旦初始化完成,字符集就将无法修改。我们可以使用select unicode来查询当前数据库的字符集种类,0代表gb18030,1代表UTF8。
  • LENGTH_IN_CHAR:此参数决定了,数据库中的varchar类型对象的长度是否以字符为单位。取值为1则设置为以字符为单位,将存储长度值按照理论字符长度进行放大。取值为0则所有varchar类型对象的长度以字节为单位。
  • enum类型
    例如enum('男','女')

这种类型的字段需要改为

  1. 新建达梦数据库用户

    1. 新建表空间

使用SYSDBA用户登录DM管理工具,新建两个表空间:TEST_DATA、TEST_IDX,分别用于存储表和索引。

  1. 新建用户

新建管理用户,选择刚创建的两个表空间,密码长度至少为9位。

所属角色,勾选PUBLIC,并勾选所需要的权限

新建用户后,将出现同名的模式。

断开连接,使用刚创建的TEST用户登录。

  1. 新建工程与迁移

DM DTS 工具存放在 DM 数据库安装目录下 tool 文件夹,执行 ./dts 即可运行 DM DTS 工具。新建工程,选择迁移,并右键新建迁移。

在新建工程对话框中填写工程名和工程描述信息,点击【确定】按钮,成功添加了一个工程。如下图所示:

展开工程节点,选择【新建迁移】。输入迁移名称:test项目数据迁移,点击【确定】按钮,完成迁移的创建。如下图所示:

迁移名称,迁移描述也是可以任意填写的

  1. 选择迁移方式

默认打开目录为 DM DTS 工具介绍,选择【下一步】。迁移方式选择 【MySQL-->DM】 方式,如下图所示:

  1. 选择数据源和目的库

分别输入主机名 (IP) 端口(MySQL 默认端口 3306,DM 默认端口 5236),用户名和口令(DM 默认口令 SYSDBA),数据库名 (默认),如下图所示:

  1. 指定对象复制或查询

选择源模式和目的模式。从数据源复制对象,目的模式可选择现有模式,如下图所示:

取消勾选视图,视图最后迁移;取消勾选保持对象名大小写

  1. 选择迁移对象

    1. 首先迁移表结构

选择你要迁移的表,点击转换

选择”应用当前选项到其它选项”,在新出现的框框里点击”选择”,确定

只迁移表定义,数据,约束,索引,表及字段注释都不选

点击确定,下一步

点击完成

  1. 再迁移表数据

接下来对数据和索引迁移,和前面迁移表结构步骤一样,只不过转换策略里做改变,这里只对数据勾选,其他勾选取消

再重复以上步骤

  1. 再迁移约束索引

重复以上步骤,转换策略里做改变

最后在迁移视图

重复上述步骤

  1. 审阅迁移任务

用户可查看迁移过程重要参数和修改条件,如需修改,可执行上一步进行修改,确认无误后,点击【完成】,如下图所示:

  1. 验证数据

完成数据迁移后,我们还需对迁移的数据进行验证,表、视图、存储过程、序列都存在且与原数据一致,迁移完成。如下图所示:

迁移完成之后,需要对于源端以及目的端做数据库对象数、数据量进行对比,确认迁移的正确性,以迁移正确性来衡量迁移成功与否,所以迁移完成之后,迁移验证工作是重要且必须的,目前提供了几种迁移验证的方式,其中包括SQL脚本对比方式、compare工具、VERI工具等,详见迁移验证文档。

  1. 迁移后注意事项

    1. 索引补录

在之前的测试迁移,适配完成之后做的一些优化工作,可以创建一张记录表,将优化手段记录在一张表中,在正式迁移完成之后,将前期优化过程中添加的索引等内容进行补录。

  1. 更新统计信息

先进行模式级别更新,再更新索引统计信息,也可以根据需求,进行单独表或者单独列进行更新,下面列出来一些更新统计信息的方式:

注意:大表更新统计信息尽量采用更新关联列、条件列以及索引的统计信息,不要更新全表。

  1. 模式更新:

DBMS_STATS.GATHER_SCHEMA_STATS( '模式名',100,TRUE,'FOR ALL COLUMNS SIZE AUTO');

注:如果数据量较大,该过程可能较慢,请耐心等待。

  1. 收集表的统计信息

DBMS_STATS.GATHER_TABLE_STATS('模式名','表名',NULL,100,TRUE,'FOR ALL COLUMNS SIZE AUTO');

  1. 收集列的统计信息

SP_COL_STAT_INIT('模式名','表名','列名');

  1. 清除列的统计信息

SP_COL_STAT_DEINIT('模式名','表名','列名');

  1. 收集索引的统计信息 

CALL SP_INDEX_STAT_INIT('模式名','索引名'); 

DBMS_STATS.GATHER_INDEX_STATS(user,'索引名');

STAT <统计信息采样百分比> ON INDEX [<模式名>.]<索引名>;

  1. 对表上所有索引生成统计信息

CALL SP_TAB_INDEX_STAT_INIT('模式名','表名');

  1. 收集表中某列的统计信息

STAT <统计信息采样百分比> ON [<模式名>.]<表名>(<列名>);

如:STAT 100 ON TEST(A);

因为更新索引统计信息比较常用,现写了个过程,将更新一个模式下的所有索引统计信息的语句输出到一个sql文件中,在需要执行时候,直接执行sql脚本文件,在索引数量很多情况下,执行sql脚本可以看到执行到哪条语句,语句如下,SYSDBA换成现场需要的业务模式名,将UTL_FILE.FOPEN中指定的路径地址以及脚本文件,换成现场实际环境的信息。

注意:

  1. 如果是非 WINDOWS环境,且运行达梦服务器的进程有效用户为 root, 则禁止文件操作;
  2. 执行操作的数据库用户必须有DBA权限;
  3. 只能创建、修改在达梦系统目录(含子目录)下的文件。用户可以通 过 select * from v$dm_ini where para_name like '%SYSTEM_PATH%';查看系统目录。

declare

HANDLE UTL_FILE.FILE_TYPE;

begin

HANDLE  :=UTL_FILE.FOPEN('D:\dm8\94\dmdbms\data\DAMENG', 'utl_test.sql', 'W');

for rec in

(

select INDEX_NAME from dba_indexes WHERE table_owner='SYSDBA'

)

loop

UTL_FILE.PUTF(HANDLE,'stat 100 on index  %s;',rec.INDEX_NAME);

UTL_FILE.FFLUSH(HANDLE);

end loop;

UTL_FILE.FCLOSE(HANDLE);

end;

/

  1. 备份

完成整体的迁移工作后,如果为正式迁移,需要对系统做一次全库备份,如果是测试迁移,则需要将迁移过程中的问题处理等内容整理成迁移报告,以便后续正式迁移时,可以快速解决问题,完成迁移工作。

  1. 注意事项

    1. 配置使用注意事项
  1. 按照上线优化脚本进行参数优化(注意参数PK_WITH_CLUSTER一定要置为0再开始迁移工作),ENABLE_MONITOR参数在迁移之后再根据需求开启,迁移过程中开启可能会影响迁移速度;
  2. 扩充redo日志,默认为2*256M,一般扩充为2*2048M即可,也可以按照实际情况进行调整;
  3. 归档迁移之前先不要开启,开启归档会产生IO操作,会影响迁移速度;
  4. 创建系统包SP_CREATE_SYSTEM_PACKAGES(1);避免在迁移过程中有用到系统包时报错。
  5. 迁移空间地理数据时需要开启达梦端的DMGEO包,使用SP_INIT_GEO_SYS(1)命令开启,迁移时需要单独处理。

DTS版本的选择,建议选择和目的端达梦库接近的dts版本;

Mysql到DM8使用DTS工具进行迁移相关推荐

  1. dts数据库迁移工具_干货分享丨DM8 DTS工具使用小技巧

    DTS工具的介绍 DM数据库为迁移提供了图形化工具--DTS.DTS可以从主流大型数据库迁移到DM.DM到DM.文件迁移到DM以及DM迁移到文件的功能,极大的简化了迁移操作,让数据迁移变得简单. DT ...

  2. 数据传输服务 DTS > 数据迁移 > 从自建数据库迁移至阿里云 > 源库为MySQL > 从自建MySQL迁移至RDS MySQL

    从自建MySQL迁移至RDS MySQL 更新时间:2020-08-20 10:49:52 编辑我的收藏 本页目录 前提条件 注意事项 费用说明 迁移类型说明 增量数据迁移支持同步的SQL操作 数据库 ...

  3. abp mysql .net core_ABP .Net Core Entity Framework迁移使用MySql数据库

    一.迁移说明 ABP模板项目Entity Framework Core默认使用的是Sql Server,也很容易将数据库迁移到MySQL,步骤如下. 二.迁移MySQL步骤 1. 下载项目 请到 ht ...

  4. 数据传输服务 DTS > 数据迁移 > 同一阿里云账号实例间迁移 > RDS实例间的数据迁移

    RDS实例间的数据迁移 更新时间:2020-04-26 14:24:23 编辑我的收藏 本页目录 前提条件 注意事项 费用说明 迁移类型说明 数据库账号的权限要求 操作步骤 本文介绍如何使用数据传输服 ...

  5. 达梦DM8数据库异机数据迁移测试

    达梦 DM8 数据库异机数据迁移测试 一.源库备份 源库DMOA,主机名:dm3   目标库 DMOA 主机名:db 在DMTEST模式里创建了T_EMP01.T_EMP02.T_EMP03.T_TE ...

  6. MySql(四):常用工具、日志、复制

    1. MySql中常用工具 1.1 mysql 该mysql不是指mysql服务,而是指mysql的客户端工具.语法 : mysql [options] [database] 1.1.1 连接参数 : ...

  7. mac版mysql workbench_MySQL Workbench for mac下载-MySQL Workbench for mac(数据库工具) v8.0.16特别版 - Mac天空...

    MySQL Workbench提供了创建复杂RT模型,正向和反向工程或从简单且用户友好的界面执行各种管理和文档任务所需的所有必需工具.MySQL Workbench可以帮助您轻松管理,建模,生成和设计 ...

  8. mysql主从同步(3)-percona-toolkit工具(数据一致性监测、延迟监控)使用梳理

    在mysql工作中接触最多的就是mysql replication,mysql在复制方面还是会有一些常规问题,比如主库宕机或者从库宕机有可能会导致复制中断,通常需要进行人为修复,或者很多时候需要把一个 ...

  9. mysql为什么直接8.0_为什么要迁移到MySQL8.0?

    原标题:为什么要迁移到MySQL8.0? 来自公众号:老叶茶馆,作者:lefred,翻译:徐晨亮 原文链接:https://lefred.be/content/replace-mariadb-10-3 ...

最新文章

  1. 【直播】李祖贤:集成学习答疑直播之八-- 集成知识点回顾与补充
  2. 求有多少个数是这个数的约数
  3. Laravel 5.2--如何让表单提交错误,不清空?
  4. 多播程序设计(基于UDP协议)
  5. zpl代码可以编译的特殊字符_国际C语言混乱代码大赛(IOCCC)代码解析
  6. Bugzilla集成LDAP的方法
  7. c++ scanf读取_使用scanf()读取内存地址并在C中打印其值
  8. vue-cli3+typescript+路由懒加载报错问题
  9. Python数据结构与算法(1.5)——Python基础之函数与异常
  10. BZOJ 1599: [Usaco2008 Oct]笨重的石子( 枚举 )
  11. LUOGU P4178 Tree
  12. Python实现PDF转TXT
  13. Dart语言入门(一)
  14. R12应付模块详细结账流程
  15. AQS源码解读(六)——从PROPAGATE和setHeadAndPropagate()分析共享锁的传播性
  16. 大写汉字转阿拉伯数字c语言,使用C#实现阿拉伯数字到大写中文的转换
  17. 软件工程专业毕业计算机水平,软件工程专业很“霸气”,不管985还是“二本”,毕业几乎都高薪就业...
  18. Axios—循环发送请求
  19. java map详解
  20. USB 电池充电规范

热门文章

  1. 懒惰程序员的百宝箱:提升工作效率的七大神器
  2. SOLIDWORKS motion如何进行运动仿真
  3. 好的网站标志设计之意象运用手法
  4. wps表格怎么按特定的顺序对数据进行排序
  5. 天才少年稚晖君超酷“硬汉”项目登榜|GitHub近期热门项目盘点
  6. 【DKN】(五)attention.py
  7. matlab人脸识别开题报告,基于人脸识别的出勤点名系统中特征提取算法研究开题报告...
  8. [树莓派1] 硬件选购指南
  9. 使用Keras进行图像分类
  10. 超时锁定计算机,Win10电脑设置锁定屏幕超时怎么办