Mysql迁移DM国产达梦数据库

2024-06-04 9745阅读

目录

1 快速迁移

1.1 已有用户的情况下迁移

1.1.1 打开迁移工具

1.1.2 创建工程

1.1.3 新建迁移

1.1.3.1 选择迁移方式

1.1.3.2 配置数据

1.1.3.3 配置目的

1.1.3.4 迁移选项

1.1.3.5 指定模式

1.1.3.6 指定对象

1.1.3.7 审阅任务

1.1.3.8 迁移完成

1.1.4 查看迁移后的表

1.1.4.1 登录新用户ESO

1.1.4.2 查看表数据

1.1.4.3  spring连接配置

1.2 无用户的情况下迁移

2 迁移后的报错

2.1报错内容

提取关键信息

2.2 验证报错

2.3 分析报错

2.3暴力解决Java代码中问题

2.3.1实体类Entity解决方式

2.3.2mapper里的原始sql解决方式

2.3.3其他手动sql解决方式

2.4破釜沉舟解决问题

3 可视化重装 for Windows

3.1删除实例服务

3.1.1停止实例服务

3.1.2删除数据库服务实例

3.2 创建数据库实例

3.2.1 新建

3.2.2 模板

3.2.3 数据实例保存目录

3.2.4 数据库名配置,默认即可

3.2.4 初始化参数(丝滑迁移的关键1)

3.2.5 再次启动服务

3.3 操作数据库

3.3.1 新建连接

3.3.2 新建表空间

3.3.3 创建用户(丝滑迁移的关键2)

3.3.4 常规设置

3.3.5 授权

3.3.6 模式


        甲方爸爸要求,信创的机器(arm架构),现在需要迁移mysql到达梦,先在本地(x86-64架构)模拟下咯!

1 快速迁移

1.1 已有用户的情况下迁移

用户:ESO

模式:ESO

不理解账号创建的同学,先直接跳转章节3.3部分查看。

不会安装达梦数据库的同学,移步本人其他文章查看(Windows版,Docker防踩坑版、信创版)

1.1.1 打开迁移工具

Mysql迁移DM国产达梦数据库 第1张

1.1.2 创建工程

右击空白处,新建

Mysql迁移DM国产达梦数据库 第2张

Mysql迁移DM国产达梦数据库 第3张

1.1.3 新建迁移

Mysql迁移DM国产达梦数据库 第4张

Mysql迁移DM国产达梦数据库 第5张

1.1.3.1 选择迁移方式

MySql迁移DM

Mysql迁移DM国产达梦数据库 第6张

1.1.3.2 配置数据源

输入你的mysql配置后,刷新,选择要迁移的数据库名

Mysql迁移DM国产达梦数据库 第7张

1.1.3.3 配置目的

输入你要迁入的达梦数据库的配置

Mysql迁移DM国产达梦数据库 第8张

1.1.3.4 迁移选项

先用默认

保持对象名大小写,不勾选,达梦默认表名和字段名都大写

Mysql迁移DM国产达梦数据库 第9张

1.1.3.5 指定模式

Mysql迁移DM国产达梦数据库 第10张

1.1.3.6 指定对象

全选你要迁移的表

Mysql迁移DM国产达梦数据库 第11张

1.1.3.7 审阅任务

点击完成开始迁移

Mysql迁移DM国产达梦数据库 第12张

1.1.3.8 迁移完成

Mysql迁移DM国产达梦数据库 第13张

1.1.4 查看迁移后的表

1.1.4.1 登录新用户ESO

Mysql迁移DM国产达梦数据库 第14张

1.1.4.2 查看表数据

Mysql迁移DM国产达梦数据库 第15张

1.1.4.3  spring连接配置

Mysql迁移DM国产达梦数据库 第16张

1.2 无用户的情况下迁移

和1.1操作流程一样,但是账号用的是SYSDBA;

迁移后的表,会自动新建一个模式ESO,但是是属于SYSDBA用户的,也没有独立的表空间;

2 迁移后的报错

2.1报错内容

无效的表或视图名[SYS_USER]

; 第3 行附近出现错误:

无效的表或视图名[SYS_USER]; nested exception is dm.jdbc.driver.DMException: 第3 行附近出现错误:

无效的表或视图名[SYS_USER]] with root cause

dm.jdbc.driver.DMException: 第3 行附近出现错误:

无效的表或视图名[SYS_USER]

    at dm.jdbc.driver.DBError.throwException(DBError.java:684)

Mysql迁移DM国产达梦数据库 第17张

提取关键信息

  • 无效的表或视图名[SYS_USER]
  • ### SQL: SELECT  *  FROM sys_user     WHERE (username = ?)

    2.2 验证报错

    把报错中的sql,在达梦数据库里执行一遍

    Mysql迁移DM国产达梦数据库 第18张

    发现该sql语句是报错的;

    2.3 分析报错

    首先,达梦数据库安装时,选择的是大小写敏感,所以查看达梦的表名是否大写

    Mysql迁移DM国产达梦数据库 第19张

    所以,sql语句里必须写成:

    SELECT  *  FROM  "SYS_USER"

    Mysql迁移DM国产达梦数据库 第20张

    还是报错,原因是,当前表所在的模式(理解为mysql的数据库)是ESO,我们登录账户是SYSDBA,两者不一致时,需要写上模式作为前缀。若一致则不需要写(用ESO账号登录时)

    Mysql迁移DM国产达梦数据库 第21张

    正确sql如下:

    select  *  from "ESO"."SYS_USER"

    Mysql迁移DM国产达梦数据库 第22张

    2.3暴力解决Java代码中问题

    2.3.1实体类Entity解决方式

    Mysql迁移DM国产达梦数据库 第23张

    通过@TableName()注解,指定表名。

    @TableName("sys_user")   改成   @TableName("ESO.SYS_USER")

    Mysql迁移DM国产达梦数据库 第24张

    2.3.2mapper里的原始sql解决方式

    报错内容:

    Mysql迁移DM国产达梦数据库 第25张

    首先确认这里的实体类SysUserTokenEntity已经修改兼容好了。

    “注意,过滤只看.java文件”

    Mysql迁移DM国产达梦数据库 第26张

    然后过滤只看.xml文件,去排查mapper。

    Mysql迁移DM国产达梦数据库 第27张

    修改完成如下:

    Mysql迁移DM国产达梦数据库 第28张

    2.3.3其他手动sql解决方式

    • 把表名qrtz_手动改成大写QRTZ_;
    • 前缀加上 ESO.
    • 完整:"ESO.QRTZ_"

      Mysql迁移DM国产达梦数据库 第29张

      2.4破釜沉舟解决问题

              暴力解决,需要一个个的去兼容修改,适合代码量不多的情况,很麻烦很费时间,还影响原来的代码;

              我们采用章节3进行可视化重装,实现指定用户和模式以及大小写不敏感;需要用到章节1的快速迁移来实现。

      3 可视化重装 for Windows

      3.1删除实例服务

      3.1.1停止实例服务

      打开DM库服务查看器

      Mysql迁移DM国产达梦数据库 第30张

      右击停止数据库实例服务

      Mysql迁移DM国产达梦数据库 第31张

      Mysql迁移DM国产达梦数据库 第32张

      Mysql迁移DM国产达梦数据库 第33张

      3.1.2删除数据库服务实例

      打开DM数据库配置助手

      Mysql迁移DM国产达梦数据库 第34张

      Mysql迁移DM国产达梦数据库 第35张

      选择数据库

      Mysql迁移DM国产达梦数据库 第36张

      确认删除

      Mysql迁移DM国产达梦数据库 第37张

      Mysql迁移DM国产达梦数据库 第38张

      3.2 创建数据库实例

      3.2.1 新建

      Mysql迁移DM国产达梦数据库 第39张

      3.2.2 模板

      默认即可

      Mysql迁移DM国产达梦数据库 第40张

      3.2.3 数据实例保存目录

      一般默认即可

      Mysql迁移DM国产达梦数据库 第41张

      3.2.4 数据库名配置,默认即可

      Mysql迁移DM国产达梦数据库 第42张

      3.2.4 初始化参数(丝滑迁移的关键1)

      注意时区、字符集编码、大小写敏感

      其中,大小写敏感必须去掉,

      Mysql迁移DM国产达梦数据库 第43张

      这样spring工程代码适配时,不需要暴力的去一个个转换成大写了

      Mysql迁移DM国产达梦数据库 第44张

      完成

      Mysql迁移DM国产达梦数据库 第45张

      Mysql迁移DM国产达梦数据库 第46张

      3.2.5 再次启动服务

      Mysql迁移DM国产达梦数据库 第47张

      Mysql迁移DM国产达梦数据库 第48张

      3.3 操作数据库

      3.3.1 新建连接

      Mysql迁移DM国产达梦数据库 第49张

      账号密码一样

      SYSDBA/SYSDBA

      Mysql迁移DM国产达梦数据库 第50张

      3.3.2 新建表空间

      红框部分自己写

      文件路径MY_ESO\MY_ESO.DBF不可以存在,否则会创建失败!

      完整路径:E:\dmdbms\data\MY_ESO\MY_ESO.DBF

      Mysql迁移DM国产达梦数据库 第51张

      创建成功后,可以看到MY_ESO.DBF文件自动生成。

      Mysql迁移DM国产达梦数据库 第52张

      查看新建的表空间

      Mysql迁移DM国产达梦数据库 第53张

      3.3.3 创建用户(丝滑迁移的关键2)

      新建用户ESO,会自动创建模式(类似数据库)ESO;

      这样,原本的spring java代码,就不需要手动的去加上ESO.前缀

      Mysql迁移DM国产达梦数据库 第44张

      右击管理用户,新建

      Mysql迁移DM国产达梦数据库 第55张

      3.3.4 常规设置

      账号密码设置、关联表空间和索引表空间、散列算法

      ESO/12345678

      Mysql迁移DM国产达梦数据库 第56张

      创建成功

      Mysql迁移DM国产达梦数据库 第57张

      密码长度太短会报错

      Mysql迁移DM国产达梦数据库 第58张

      3.3.5 授权

      Mysql迁移DM国产达梦数据库 第59张

      Mysql迁移DM国产达梦数据库 第60张

      3.3.6 模式

      新建用户成功后,会生成一个和用户名同名的模式

      模式里面才是实际对表的增删改查等操作

      Mysql迁移DM国产达梦数据库 第61张


    免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

    目录[+]