命令行方式将mysql数据库迁移到达梦数据库(全步骤)

因项目需求,需要将mysql数据库转换为国产达梦数据库,但由于安全问题,正式环境只能用命令行方式连接,下列是操作全步骤

目录

一、操作逻辑

完全命令行方式操作太过麻烦,则新的操作流程如下:

  1. 本地安装mysql和达梦数据库
  2. 将linux服务器中原始mysql数据库导出并导入到本地
  3. 在本地将mysql迁移为达梦
  4. 导出本地达梦数据库内容
  5. 使用命令行导入到linux服务器的达梦数据库中

二、操作步骤

1、本地安装达梦相关工具

本地安装达梦数据库后,会自动安装连接工具。

电脑左下角搜索"DM管理工具"即为达梦数据库连接工具

进入达梦安装目录,tool文件夹中,dts.exe就是迁移工具

如果本地没有安装达梦,也可以下载下面的安装包安装

安装包地址点击链接

2、将服务器mysql导出到本地

a) 服务器命令行导出mysql数据

进入服务器,直接运行下列命令。

将mysql原始数据库hospital_files导出到服务器的/data/目录下,sql文件名为"数据库.sql"

复制代码
mysqldump --routines -u root -p hospital_files > /data/数据库.sql;

执行完后,会在服务器的/data/目录下生成sql文件,将文件拉取到本地

b) 本地创建mysql库和达梦数据库

先创建hospital_files空数据库,再右键 - 运行sql文件,弹框中文件选取刚才导出的"数据库.sql"文件

本地达梦数据库创建名为"hospital_files"的空数据库

3、本地mysql迁移为达梦

迁移前,本地达梦数据库需要创建与mysql数据库名一样的模式,

我这里mysql数据库名为"hospital_files",所以创建的名为"HOSPITAL_FILES"的模式

打开迁移工具dts.exe - 新建工程 - 新建迁移

新建完成出现如图页面 - 点击下一步

选择mysql → DM选项,点击下一步

输入mysql连接方式 - 点击下一步

注意:如果连接成功,会跳转到下一个页面,否则会报错

输入达梦数据库连接方式 - 点击下一步

注意:如果连接成功,会跳转到下一个页面,否则会报错

这个直接点击下一步

选择对应的数据库 - 点击下一步

点击"反选"即可全选所有的表 - 点击"转换"按钮

将图片上红框的两个打上勾 - 点击确定 - 下一步 - 点击完成

最后会完成迁移工作,如果有报错会有详细提示

迁移完后查看达梦数据库,就有表数据了

4、导出本地达梦数据库

方法一:命令行方式(推荐)

java 复制代码
# 命令解释
./dexp 用户名/密码:端口 file=文件名.dmp directory=/文件输出目录 SCHEMAS=模式名
# 命令实例
./dexp sysdba/'"XXXX@2024"':5236 file=testDM.dmp directory=/opt SCHEMAS=HOSPITAL_FILES

方法二:图形化界面方式

此方式容易出现导入时版本不一致而不能解析的问题

选择对应模式,右键 - 导出 - 弹框中选择导出目录 - 点击确认

5、部署服务器的达梦数据库

a) 修改服务器达梦数据库配置

打开dm.ini文件,位置在dmdbms/data/YLDA文件夹中

修改如下的几个参数

复制代码
COMPATIBLE_MODE = 4
GROUP_OPT_FLAG = 1
MY_STRICT_TABLES = 1

b) 重启达梦数据库

我的数据库安装在/data/文件夹中

复制代码
# 进入目录
cd /data/dmdbms/bin
# 停止服务
./DmServiceDAMENG stop
# 开始服务
./DmServiceDAMENG start

c) 导入数据

三、异常处理

1、导入达梦时报错:Error Code:-70028,创建SOCKET连接失败

原因:可能是由于密码符号的问题导致的

方法一:更换达梦数据库密码,不能有特殊字符,比如@

方法二:将密码加上双引号,比如密码为XXXX@2024,语句中改为' " XXXX@2024 " '

java 复制代码
./dimp sysdba/'"XXXX@2024"':5236 file=testDM.dmp directory=/opt SCHEMAS=HOSPITAL_FILES

2、导入达梦时报错:警告该工具不能解析此文件,请使用更高版本的工具

原因:导出与导入的版本不一致

方法:使用命令行方式导出

java 复制代码
# 先导出本地达梦数据
./dexp sysdba/'"XXXX@2024"':5236 file=testDM.dmp directory=/opt SCHEMAS=HOSPITAL_FILES

# 再服务器导入达梦数据
./dimp  sysdba/'"XXXX@2024"':5236 directory=/opt file=testDM.dmp SCHEMAS=HOSPITAL_FILES
相关推荐
Elastic 中国社区官方博客4 小时前
将你自己的密钥用于现有 Elastic Cloud 部署
大数据·数据库·elasticsearch·全文检索
红海云5 小时前
Jev:给智能系统做判断的模型
大数据·数据库·人工智能
wjkjpcba5 小时前
PCBA烧录程序是什么:PCBA包工包料厂家解析烧录与测试
linux·数据库·人工智能·smt贴片加工·pcba贴片加工厂
꯭自꯭闭꯭5 小时前
达梦事物特性及MVCC
linux·运维·数据库
小马同学-6 小时前
MySQL主从复制和读写分离
数据库·mysql
谢亮_vipxieliang6 小时前
Spring 事务失效的常见场景
java·开发语言·数据库·spring boot
海绵宝宝转agent6 小时前
MySql高频面试八股开源笔记总结
mysql·面试·开源
geovindu7 小时前
sql: JSON and XML Data Handling in SQL using sql server 2025
大数据·数据库·sqlserver·数据库开发·数据库架构
IT大白鼠7 小时前
图数据库系列 · 第 02 篇——架构拆解:原生图存储到因果集群
数据库·架构·nosql
余槐i7 小时前
数据没回滚也不报错:@Transactional 自调用失效的 3 种复现与修复
spring boot·mysql·多线程·spring 事务