达梦数据库迁移
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 路径需保持一致。
浙公网安备 33010602011771号