达梦数据库迁移

1. 创建目录

sudo mkdir -p /home/dm_data

2. 【关键】根据生产环境调查结果,设置目录所有权。

假设确认后运行用户仍为 dmdba:dinstall,则命令不变:

sudo chown -R dmdba:dinstall /home/dm_data

3. 复制数据后,再次确保数据目录权限正确

sudo cp -rp /opt/dmdbms/data/DAMENG /home/dm_data/

再次递归修正,以防复制过程中权限变化

sudo chown -R dmdba:dinstall /home/dm_data/DAMENG

达梦数据库存储迁移操作清单 (生产环境)

一、 准备工作

创建目标目录并设置权限

sudo mkdir -p /home/dm_datasudo chown -R dmdba:dinstall /home/dm_data

二、 停止服务并复制数据

停止数据库服务

sudo systemctl stop DmServiceDMSERVER

验证服务已停止# 必须输出:Active: inactive (dead)

sudo systemctl status DmServiceDMSERVER | grep Active

【关键预备】检查并清理源目录,是干净的物理目录,而非软链接。

确保 /opt/dmdbms/data/DAMENG

检查类型

ls -l /opt/dmdbms/data/ | grep DAMENG

如果是软链接(显示 '->'),则删除它

sudo rm -f /opt/dmdbms/data/DAMENG

如果之前有备份,可恢复实体目录(例如:DAMENG_FINAL_BACKUP)# sudo mv /opt/dmdbms/data/DAMENG_FINAL_BACKUP /opt/dmdbms/data/DAMENG

复制数据到新目录 (使用 cp)

sudo cp -rp /opt/dmdbms/data/DAMENG /home/dm_data/sudo chown -R dmdba:dinstall /home/dm_data/DAMENG

三、 修改配置文件 (dm.ini)

修改新 dm.ini 中的路径

sudo sed -i 's|/opt/dmdbms/data/DAMENG|/home/dm_data/DAMENG|g' /home/dm_data/DAMENG/dm.ini

验证修改

检查关键路径是否已更新

grep -E "\s*(SYSTEM_PATH|CTL_PATH)" /home/dm_data/DAMENG/dm.ini

应全部显示

/home/dm_data/DAMENG

四、 【最核心】修改控制文件 (dm.ctl)

转换控制文件为文本

cd /opt/dmdbms/bin
./dmctlcvt TYPE=1 SRC=/home/dm_data/DAMENG/dm.ctl DEST=/home/dm_data/DAMENG/dmctl.txt

检查并替换文本中的路径

检查旧路径(确认需要修改)

grep -n "/opt/dmdbms/data/DAMENG" /home/dm_data/DAMENG/dmctl.txt

全局替换为新路径

sed -i 's|/opt/dmdbms/data/DAMENG|/home/dm_data/DAMENG|g' /home/dm_data/DAMENG/dmctl.txt

【致命验证】必须确保旧路径被完全清除,# 这行命令必须返回空!有任何输出都表示替换不彻底,需手动处理。

grep "/opt/dmdbms/data/DAMENG" /home/dm_data/DAMENG/dmctl.txt

转换回控制文件并清理

./dmctlcvt TYPE=2 SRC=/home/dm_data/DAMENG/dmctl.txt DEST=/home/dm_data/DAMENG/dm.ctlrm /home/dm_data/DAMENG/dmctl.txt

五、 更新服务配置并启动

修改服务启动脚本

sudo sed -i 's|INI_PATH="/opt/dmdbms/data/DAMENG/dm.ini"|INI_PATH="/home/dm_data/DAMENG/dm.ini"|' /opt/dmdbms/bin/DmServiceDMSERVER

验证修改

grep '^INI_PATH=' /opt/dmdbms/bin/DmServiceDMSERVER# 应输出:INI_PATH="/home/dm_data/DAMENG/dm.ini"

重新加载并启动服务

sudo systemctl daemon-reloadsudo systemctl start DmServiceDMSERVER

六、 最终验证 (成功铁证)

验证服务状态,必须输出:Active: active (running)

sudo systemctl status DmServiceDMSERVER | grep Active

【核心证据】验证进程文件路径,必须输出以 /home/dm_data/DAMENG/... 开头的路径# 例如:/home/dm_data/DAMENG/SYSTEM.DBF

sudo lsof -p pidof dmserver | grep DAMENG | head -2

验证存储空间变化

df -h /optdf -h /home# /opt 可用空间应增加,/home 可用空间应减少

七、 紧急回滚方案 (如迁移失败)

如果任何一步验证失败,立即按顺序执行以下命令回滚:

1. 停止服务

sudo systemctl stop DmServiceDMSERVER

2. 还原服务脚本配置

sudo sed -i 's|INI_PATH="/home/dm_data/DAMENG/dm.ini"|INI_PATH="/opt/dmdbms/data/DAMENG/dm.ini"|' /opt/dmdbms/bin/DmServiceDMSERVER

3. 重新加载配置

sudo systemctl daemon-reload

4. 启动服务 (使用原数据)

sudo systemctl start DmServiceDMSERVER

5. 验证回滚,# 应显示 /opt/dmdbms/data/DAMENG/... 路径

sudo systemctl status DmServiceDMSERVER | grep Activesudo lsof -p pidof dmserver | grep DAMENG | head -2

操作要点提醒
逐行执行:严格按顺序操作,执行一行,验证一行,无误再进行下一行。
核心检查点:重点关注 第四.3 步(控制文件旧路径必须清空)和 第六.2 步(进程必须打开新路径文件)。
路径一致:所有命令中的 /home/dm_data 路径需保持一致。

posted on 2026-08-12 14:59  无线的达不溜  阅读(2)  评论(0)    收藏  举报