news 2026/10/31 7:02:15

达梦数据库(DM)Linux 下创建新实例并预防 MySQL 迁移问题

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
达梦数据库(DM)Linux 下创建新实例并预防 MySQL 迁移问题

达梦数据库(DM)Linux 下创建新实例并预防 MySQL 迁移问题

适用场景:宿主机已存在一个达梦实例(示例:/opt/dmdbms/data/DMDB,端口 5236),需要在不影响老实例的前提下新建一个实例,专门用于承接 MySQL 迁移,并通过初始化参数提前规避迁移常见问题。


一、总体思路

  1. 隔离:新实例使用全新的空目录、不同的端口,与老实例完全隔离。
  2. 验证:创建前先确认用户、目录、端口,避免误伤老实例。
  3. 参数前置:把 MySQL 迁移中"建库后无法修改"的参数在dminit阶段一次性设对。
  4. 建库后配置:开启 MySQL 兼容模式等参数,重启生效。
  5. 迁移配合:DTS 工具设置与数据库参数配合,减少报错。

二、创建前验证(必做)

2.1 确认 dmdba 用户存在

iddmdba

预期输出类似:

uid=1001(dmdba) gid=1002(dinstall) groups=1002(dinstall)

2.2 确认老实例端口,避开冲突

ss-lntp|grepdmserver

示例输出:

LISTEN 0 4096 *:5236 *:* users:(("dmserver",pid=1087,fd=3))

说明老实例占用5236,新实例选用5237(或其他未占用端口)。

2.3 验证新端口是否空闲

ss-lntp|grep5237

无输出即表示端口可用。

2.4 验证目标目录是否干净

ls-ld/opt/dmdbms/data/NEWDB
  • 提示No such file or directory:路径干净,可创建。
  • 目录已存在:用ls -A /opt/dmdbms/data/NEWDB确认是否为空,非空则换路径,不要冒险。

2.5 创建目录并授权给 dmdba

mkdir-p/opt/dmdbms/data/NEWDBchowndmdba:dinstall /opt/dmdbms/data/NEWDBls-ld/opt/dmdbms/data/NEWDB

确认属主为dmdba:dinstall。


三、执行初始化(关键参数)

切换到dmdba用户执行:

su- dmdbacd/opt/dmdbms/bin

执行dminit(面向 MySQL 迁移的参数已显式指定):

./dminitpath=/opt/dmdbms/data/NEWDB\DB_NAME=NEWDB\INSTANCE_NAME=NEWDB\PORT_NUM=5237\PAGE_SIZE=16\EXTENT_SIZE=32\CHARSET=1\CASE_SENSITIVE=0\LENGTH_IN_CHAR=1\BLANK_PAD_MODE=0\SYSDBA_PWD=你的密码

如果执行后出现初始化失败

initdb V8 db version: 0x7000d file dm.key not found, use default license! License will expire on 2026-11-13 Invalid parameter:LENGTH_IN_CHAR. Input "help" for help information. fail to init db.

原因是:达梦从 2024 年第二季度之后的版本开始,就正式取消了这个初始化参数。你看到的 Invalid parameter:LENGTH_IN_CHAR 正是因为版本不再支持它。社区里也有其他用户遇到过完全相同的报错,官方回复的建议就是直接删除这个参数。

3.1 参数说明(为何这样设)

参数建议值原因建库后可否修改
CASE_SENSITIVE0MySQL 默认大小写不敏感;达梦默认敏感,不关会导致查询/对象名对不上不可修改
CHARSET1(UTF-8)对应 MySQL 的 utf8/utf8mb4不可修改
LENGTH_IN_CHAR1让 VARCHAR 按字符计长,避免 UTF-8 下汉字截断不可修改
PAGE_SIZE16或32防止宽表/大字段迁移时报"记录超长"不可修改
BLANK_PAD_MODE0贴近 MySQL 字符串比较不补空格的行为不可修改
PORT_NUM5237避开老实例 5236可改(需重启)

初始化成功后会输出完成提示,并在/opt/dmdbms/data/NEWDB下生成dm.ini等文件。老实例目录/opt/dmdbms/data/DMDB全程未被触碰。


四、注册新实例为系统服务(推荐)

用 root 执行注册脚本,便于单独启停新实例:
su - root

/opt/dmdbms/script/root/dm_service_installer.sh\-tdmserver\-pNEWDB\-dm_ini/opt/dmdbms/data/NEWDB/dm.ini

如果上面命令报错可能是目录不正确
初始化时 path=/opt/dmdbms/data/NEWDB,实际生成的 dm.ini 在 NEWDB 子目录下,完整路径应该是 /opt/dmdbms/data/NEWDB/NEWDB/dm.ini —做参考,以实际情况为准

/opt/dmdbms/script/root/dm_service_installer.sh\-tdmserver\-pNEWDB\-dm_ini/opt/dmdbms/data/NEWDB/NEWDB/dm.ini

之后可单独启停:

systemctl start DmServiceNEWDB systemctl stop DmServiceNEWDB systemctl status DmServiceNEWDB

与老实例的服务互不干扰。


五、建库后必须做的配置(防迁移报错)

用新实例SYSDBA登录disql:

cd/opt/dmdbms/bin ./disql SYSDBA/你的密码@localhost:5237

5.1 开启 MySQL 兼容模式

SP_SET_PARA_VALUE(2,'COMPATIBLE_MODE',4);

4表示兼容 MySQL。静态参数,需重启实例生效。

5.2(可选)放宽严格模式

若迁移遇到 MySQL 能容忍、达梦报错的数据,可执行:

SP_SET_PARA_VALUE(2,'MY_STRICT_TABLES',0);

同样需重启生效,可减少语法/数据格式类报错。

5.3 重启新实例使参数生效

systemctl restart DmServiceNEWDB

重启后可通过以下命令确认:

SELECTPARA_NAME,PARA_VALUEFROMV$DM_INIWHEREPARA_NAMEIN('COMPATIBLE_MODE','MY_STRICT_TABLES');

六、DTS 迁移工具的配合设置

使用达梦 DTS 迁移 MySQL 数据时:

  • 在"指定复制对象"步骤,取消勾选"保持对象名大小写"。
    • 原因:数据库已设为大小写不敏感,对象名统一转大写后,MyBatis 等应用不加双引号也能正常访问,避免 MySQL 小写表名迁移后"查不到"。
  • 迁移前确认源库字符集,与达梦CHARSET设置一致(UTF-8 对 UTF-8)。
  • 对大字段/宽表,确认PAGE_SIZE足够(16K/32K)。

七、整体检查清单

  • dmdba用户存在
  • 老实例端口已确认(5236),新端口(5237)空闲
  • 新目录不存在或为空,属主为dmdba:dinstall
  • dminit显式指定CASE_SENSITIVE=0、CHARSET=1、LENGTH_IN_CHAR=1、PAGE_SIZE=16/32、BLANK_PAD_MODE=0
  • 新实例服务已注册,可独立启停
  • COMPATIBLE_MODE=4已设置并重启生效
  • (可选)MY_STRICT_TABLES=0已设置
  • DTS 迁移时取消"保持对象名大小写"
  • 迁移后抽查汉字长度、大小写查询、宽表数据

八、常见风险提示

  1. 切勿把PATH指向老实例目录(/opt/dmdbms/data/DMDB),否则可能报错或覆盖。
  2. 端口不能与老实例相同,否则新实例启动失败。
  3. CASE_SENSITIVE、LENGTH_IN_CHAR、CHARSET、PAGE_SIZE建库后不可改,这次初始化是最后纠正机会。
  4. COMPATIBLE_MODE是静态参数,改完必须重启,否则不生效。
  5. 迁移前建议对老实例和新实例分别做一次备份/快照,作为兜底。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/31 7:01:24

Rust 智能指针 RefCell<T> 与内部可变性模式

Rust 智能指针&#xff1a;RefCell<T> 与内部可变性模式 在 Rust 的世界里&#xff0c;“所有权”和“借用规则”是保证内存安全的核心。然而&#xff0c;有时业务逻辑需要在不可变引用的情况下修改数据。为了在遵守 Rust 安全底线的前提下实现这一点&#xff0c;标准库提…

作者头像 李华
网站建设 2026/10/31 7:00:39

eNSP 静态路由实验

今天是eNSP 的静态路由实验 一、实验前准备 拓扑配置&#xff1a;路由器R1–R5 链接要求如下图所示基础设施搭配好了之后就基于192.168.1.0/24 来计算网段 由图知6根链接线对应6根骨干链路&#xff0c;然而骨干链路是“点对点”连接&#xff0c;一条链路只需2个IP&#xff08;两…

作者头像 李华
网站建设 2026/10/31 6:59:27

案例 3.10 文件引用

案例 3.10 文件引用在文档编辑与内容管理场景中&#xff0c;文件引用是一项基础而关键的能力。它允许正文通过链接的方式指向外部文件、附件或资源&#xff0c;从而在不把文件内容直接嵌入正文的前提下&#xff0c;实现内容的关联与复用。本案例围绕文件引用的实现思路、常见形…

作者头像 李华
网站建设 2026/10/31 6:59:05

秋招错过提前批和正式批,还有哪些机会

不少同学本来在考研和考公&#xff0c;但突然有了新规划&#xff0c;想秋招找一个保底的 Offer。10 月底才开始找岗位&#xff0c;确实已经错过一部分提前批和网申的机会&#xff0c;但仍有企业在收简历&#xff0c;也有企业正处于面试和 Offer 发放阶段。现在投递&#xff0c;…

作者头像 李华
网站建设 2026/10/31 6:58:40

实验室设备借用系统

实验室设备借用系统 项目简介 本系统是一个基于 Vue3 Express MySQL 的实验室设备借用管理平台&#xff0c;用于高校或科研机构管理实验室设备的借用流程。系统支持多角色权限管理&#xff0c;包括设备管理、借用申请、审批流程、数据统计等功能。 技术栈 前端 Vue 3.5 Vite…

作者头像 李华