Mysql迁移达梦实践

0、前言

前几天因为要搭建一个达梦的开发环境,数据从mysql中迁移,所以做了一次mysql到达梦的迁移工作(数据量不大,所以也没碰到太多问题)。看了一下 上好像也没有比较详细的mysql迁移达梦的文章,于是我把这次迁移总结一下供大家参考。对于oracle迁移达梦可以参考我之前的两篇文章:
oracle迁移达梦7手顺及注意事项
oracle迁移达梦常见问题汇总

1、概述

mysql迁移达梦主要需要完成以下工作:

  1. 分析待移植系统,确定移植对象。
  2. 通过数据迁移工具 DTS 完成常规数据库对象及数据的迁移。
  3. 通过人工完成 视图、函数、过程等对象的迁移。
  4. 移植完成后对移植的结果进行校验,确保移植的完整性和正确性。
  5. 对应用系统进行移植、测试和优化。

2、迁移准备

2.1、版本选择
首先需要选择合适的数据库版本,优先选择完整安装版本(无完整安装版本的平台例外),避免数据库客户端和服务 器端存在版本不匹配带来的额外工作量,达梦在不同平台的不同版本上,安装包都会有差异, 一定要采用严格匹配的原则,除非得到达梦原厂技术人员的允许,尽量减少干扰性的问题出现。

2.2、数据库参数选择
初始化库,关键的点在于对初始化参数的设置,从mysql迁移到oracle推荐参数设置如下:
1、页大小page_size,在达梦中,页大小默认是8k,如果数据库中表存在较多大字段,建议设置成16k或者32k,否则导入数据时会 错。
2、mysql是大小写不敏感的,大小写敏感参数CASE_SENSITIVE设置成0。
3、簇大小 EXTENT_SIZE。数据文件使用的簇大小,即每次分配新的段空间时连续的页数,只能是16页或32页,缺省使用16页,从 mysql移植到 DM 使用默认值就可。
4、在dm.ini中将COMPATIBLE_MODE参数设置成4,表示兼容mysql。
5、在dm.ini中将CALC_AS_DECIMAL修改为1,表示整数相除保留小数。

2.3、其它准备事项
1、迁移前在达梦中创建对应的用户,默认会将数据迁移到SYSDBA用户下。
2、迁移前在达梦中创建对应的表空间,默认迁移到MAIN表空间下。
3、对于dts机器的内存推荐至少要大于4g,否则会出现”java heap space”之类内存不足的 错。
4、机器的CPU要多核,开12个以上的并行速度会快很多。
5、尽量考虑上SSD,机械盘的速度比较慢

3、迁移过程

3.1、制定迁移计划
1、迁移建议按照以下顺序进行:先迁移序列,再迁移表,最后迁移视图、函数等对象。
2、对于表的迁移,建议先迁移表结构(不包含索引、约束),再迁移表数据,最后迁移索引和约束。
3、数据量大的表单独进行迁移
4、对于大字段较多的表,需要修改批量的行数,以免造成迁移工具内存溢出。

3.2、建立迁移工程
使用达梦的dts迁移工具创建迁移工程,在迁移创建mysql到达梦的迁移工程即可,但是需要注意dts工具连接mysql要自己手动指定驱动包,如下图:

3.3、迁移表
迁移表我们按照表结构=》表数据=》表约束这个顺序来。
首先是表结构:

接着迁移表数据:

这里说一下迁移表时碰到的问题:
–问题1:

解决方案:

–问题2:分区表问题
本次迁移因为表较少没碰到该问题,但这是在迁移表时十分典型的一个问题。因为达梦中要求分区表的分区列必须是主键。对于这个类型的错误需要使用复合主键,将分区键添加到主键中。

–问题3:‘0000-00-00 00:00:00’ 插入失败
因为mysql 中有’0000-00-00’ ‘0000-00-00 00:00:00’ 这样无效的日期类型数据,迁移时会 错,需要先在mysql中修改掉。

3.4、其它对象迁移
对于视图、函数、包这类对象,建议用脚本到达梦管理工具中直接执行。这里举几个本次迁移碰到的问题例子。

–问题1:视图创建 错

解决方案:
这里是因为mysql中支持select * from t1 join t2这种写法,而在达梦中要改成select * from t1,t2或着select * from t1 join t2 on(xxx)

–问题2:函数创建 错

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年4月13日
下一篇 2020年4月13日

相关推荐