0


Mysql迁移DM国产达梦数据库

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

1 快速迁移

1.1 已有用户的情况下迁移

用户:ESO

模式:ESO

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

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

1.1.1 打开迁移工具

1.1.2 创建工程

右击空白处,新建

1.1.3 新建迁移

1.1.3.1 选择迁移方式

MySql迁移DM

1.1.3.2 配置数据源

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

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 无用户的情况下迁移

和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)

提取关键信息

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

2.2 验证报错

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

发现该sql语句是报错的;

2.3 分析报错

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

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

SELECT * FROM "SYS_USER"

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

正确sql如下

select * from "ESO"."SYS_USER"

2.3暴力解决Java代码中问题

2.3.1实体类Entity解决方式

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

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

2.3.2mapper里的原始sql解决方式

报错内容:

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

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

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

修改完成如下:

2.3.3其他手动sql解决方式

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

2.4破釜沉舟解决问题

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

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

3 可视化重装 for Windows

3.1删除实例服务

3.1.1停止实例服务

打开DM库服务查看器

右击停止数据库实例服务

3.1.2删除数据库服务实例

打开DM数据库配置助手

选择数据库

确认删除

3.2 创建数据库实例

3.2.1 新建

3.2.2 模板

默认即可

3.2.3 数据实例保存目录

一般默认即可

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

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

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

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

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

完成

3.2.5 再次启动服务

3.3 操作数据库

3.3.1 新建连接

账号密码一样

SYSDBA/SYSDBA

3.3.2 新建表空间

红框部分自己写

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

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

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

查看新建的表空间

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

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

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

右击管理用户,新建

3.3.4 常规设置

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

ESO/12345678

创建成功

密码长度太短会报错

3.3.5 授权

3.3.6 模式

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

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

标签: 数据库 mysql java

本文转载自: https://blog.csdn.net/weixin_38969534/article/details/135951002
版权归原作者 重生1993 所有, 如有侵权,请联系我们删除。

“Mysql迁移DM国产达梦数据库”的评论:

还没有评论