
达梦eco平台快速上手 | 达梦技术文档https://eco.dameng.com/document/dm/zh-cn/start/摘要本文区分逻辑导入导出与物理备份还原以 DM8 EXAMDB 跨主机迁移为例给出迁移前信息采集、DMRMAN 全库备份、备份集校验和传输、目标端还原恢复、服务注册、数据验证和冷拷贝实验方法并总结权限、路径、归档和版本兼容等常见问题。关键词DM8DMRMAN物理备份RESTORERECOVERDB_MAGIC跨主机迁移一、先区分逻辑导入导出与物理备份还原数据库迁移中常把“导入导出”作为统称但逻辑迁移和物理迁移的原理完全不同。逻辑导出通过 dexp 等工具把表、模式或数据库对象转换为逻辑文件再由 dimp 导入目标库物理备份则直接备份数据库页、控制信息和日志相关内容由 DMRMAN 等工具还原并恢复。逻辑方式适合选择性迁移、跨版本或跨平台迁移、对象级恢复也便于修改模式名和表空间物理方式更适合整库快速恢复、介质故障处理和同构环境复制。物理备份依赖数据库版本、页结构和备份链一致性不能像普通文件一样随意解压后修改。本文以 DM8 数据库 EXAMDB 从源虚拟机迁移到目标虚拟机为例重点讲推荐的 DMRMAN 备份还原流程同时说明实验中“停库冷拷贝”的适用边界。所有路径均为示例操作前必须确认当前实例的 dm.ini、数据目录、归档目录和服务名。二、为什么物理备份必须关注一致性数据库运行时内存中的脏页、联机日志和磁盘数据文件可能处于不同进度。直接复制正在使用的数据文件复制过程中不同文件的时间点可能不一致目标端即使能启动也可能存在恢复风险。因此数据库级还原通常需要“还原 恢复 更新数据库魔数”等步骤把备份数据恢复到可打开的一致状态。联机备份由数据库协调一致性业务可以继续运行脱机备份或冷拷贝要求数据库完全停止保证所有文件在同一时点关闭。实验环境中最危险的操作是只看到 dmserver 进程后直接 kill -9或者服务尚未停止就打包数据目录。正确做法是通过服务命令或正常 shutdown 停库确认进程退出再执行文件操作。工具选择新版 DM8 物理备份优先使用基于备份集的 DMRMAN 方式。早期 dmbackup/dmrestore 工具与当前备份集机制不同不应混用命令。三、迁移前信息采集正式操作前先采集源库和目标机信息。至少记录数据库版本、安装路径、实例名、服务名、dm.ini 路径、数据文件路径、页大小、字符集、大小写敏感设置、归档状态、备份目录可用空间和目标目录可用空间。物理恢复最好使用相同版本和补丁的软件避免二进制兼容问题。# 源端操作系统信息uname -adf -hfree -hps -ef | grep dmserver | grep -v grep# 从进程参数确认 dm.ini# /dm/dmdbms/bin/dmserver path/dm/data/EXAMDB/dm.ini -noconsole# 数据库客户端查询示例SELECT * FROM V$VERSION;SELECT NAME, STATUS$ FROM V$DATABASE;SELECT PARA_NAME, PARA_VALUE FROM V$DM_INI WHERE PARA_NAME IN(PAGE_SIZE,CASE_SENSITIVE,CHARSET);不要依赖记忆填写实例路径。服务脚本可能指向另一个 dm.ini服务器上也可能存在多个实例。以正在运行进程的 path 参数和服务配置为准并把结果写入迁移记录。迁移前创建验证数据和校验指标例如关键表行数、最大主键、业务日期、表空间使用量。恢复完成后使用同一组 SQL 验证避免只凭数据库能启动就判断迁移成功。四、推荐方法使用 DMRMAN 创建全库物理备份DMRMAN 是 DM8 的脱机备份还原管理工具也可用于数据库级还原和恢复。全库备份可以根据业务窗口选择联机或脱机策略。本文示例以已有归档和规范备份环境为前提命令路径按实际实例调整。# 进入安装目录cd /dm/dmdbms/bin./dmrman-- 在 DMRMAN 中执行示例BACKUP DATABASE /dm/data/EXAMDB/dm.ini FULLBACKUPSET /dm/backup/EXAMDB_FULL_20260710;-- 检查备份集CHECK BACKUPSET /dm/backup/EXAMDB_FULL_20260710;EXIT;备份完成后应检查返回结果、备份目录文件数量、元数据文件和整体大小。不要只看到目录生成就认为成功。若备份过程中空间不足、归档不可用或权限异常可能留下不完整备份集。CHECK BACKUPSET 能够帮助发现明显问题但仍建议在独立环境实际还原验证。备份目录的属主应允许 dmdba 读取传输前可以使用 tar 打包并计算校验值。大文件传输中断后应验证校验值避免在目标端用损坏的备份集反复排查。cd /dm/backuptar -czf EXAMDB_FULL_20260710.tar.gz EXAMDB_FULL_20260710sha256sum EXAMDB_FULL_20260710.tar.gz EXAMDB_FULL_20260710.sha256ls -lh EXAMDB_FULL_20260710.tar.gz EXAMDB_FULL_20260710.sha256五、把备份集传到目标主机可以使用 scp、SFTP 或内网文件共享传输。目标目录应有足够空间且不要解压到正在运行的其他实例数据目录。传输后先校验哈希再解压并修改属主。# 目标端示例mkdir -p /dm/backupcd /dm/backupsha256sum -c EXAMDB_FULL_20260710.sha256tar -xzf EXAMDB_FULL_20260710.tar.gzchown -R dmdba:dinstall /dm/backup/EXAMDB_FULL_20260710chmod -R 750 /dm/backup/EXAMDB_FULL_20260710如果文件由 root 上传忘记 chown 是非常常见的问题。DMRMAN 可能能看到目录但无法读取某个备份片或者恢复时无法创建目标数据文件。排障时同时检查备份集目录和目标数据目录的属主、权限及 SELinux 策略。目标机数据库软件应先安装好但不必提前创建一个同名、正在运行的数据库。若已经存在同名实例必须确认是否可以覆盖并做好原数据备份。实验中建议使用独立目录 /dm/data/EXAMDB_RESTORE恢复验证成功后再决定是否替换正式路径。六、目标端还原、恢复与更新 DB_MAGIC数据库级还原必须在目标实例未运行的状态下执行。先停止可能占用目标数据目录的服务确认没有 dmserver 进程。准备目标 dm.ini 路径和数据目录后进入 DMRMAN。不同版本对目标配置文件准备方式可能略有差异应按对应手册执行。# 停止目标实例服务名按实际环境systemctl stop DmServiceEXAMDB 2/dev/null || trueps -ef | grep dmserver | grep EXAMDB | grep -v grepcd /dm/dmdbms/bin./dmrman-- 示例还原数据库RESTORE DATABASE /dm/data/EXAMDB/dm.iniFROM BACKUPSET /dm/backup/EXAMDB_FULL_20260710;-- 恢复数据库RECOVER DATABASE /dm/data/EXAMDB/dm.iniFROM BACKUPSET /dm/backup/EXAMDB_FULL_20260710;-- 更新数据库魔数使恢复后的库可作为独立数据库使用RECOVER DATABASE /dm/data/EXAMDB/dm.ini UPDATE DB_MAGIC;EXIT;RESTORE 负责把备份内容还原到目标文件RECOVER 根据备份和日志信息推进数据库一致性UPDATE DB_MAGIC 用于更新数据库魔数。执行顺序不能随意省略。若恢复命令提示需要归档但归档缺失应检查备份类型、恢复目标和归档链而不是直接跳过恢复。还原过程中不要同时启动数据库服务。即使服务脚本配置了开机自启也应临时停止并确认。恢复完成后再次统一数据目录属主检查 dm.ini 中端口和路径是否符合目标机环境再启动实例。七、服务注册与启动验证目标数据库恢复后服务脚本必须指向正确的 dm.ini。很多“恢复成功但服务启动了旧库”的问题根因是 systemd 服务仍引用旧路径。可以先直接使用 dmserver 指定路径启动验证再注册正式服务。# 前台/后台验证示例路径按实际环境su - dmdba -c /dm/dmdbms/bin/dmserver path/dm/data/EXAMDB/dm.ini# 查看日志和端口tail -n 200 /dm/data/EXAMDB/*.logss -lntp | grep 数据库端口# 使用 disql 验证/dm/dmdbms/bin/disql SYSDBA/密码127.0.0.1:端口启动后先查看数据库状态和告警日志再执行迁移前准备的校验 SQL。检查关键表行数、最大主键、最近业务时间、用户和模式、表空间、作业、同义词和权限。应用连接前还要确认端口、防火墙和连接串。恢复后的数据库可能继承源端端口、归档路径和外部文件路径。目标机路径不存在时数据库虽然能启动后续归档、备份或作业可能失败。因此验收不能只看表数据还应检查归档、定时任务、外部表、备份策略和监控。八、实验方法停库冷拷贝数据目录在版本、操作系统和路径高度一致的封闭实验环境中可以通过正常停库后打包完整数据目录进行冷拷贝用于理解数据库文件组成或快速复制练习库。但它不应替代正式备份策略也不适合跨版本、跨平台或无法保证完整停库的场景。1. 源端正常停止数据库并确认所有相关进程退出。2. 打包完整实例目录不遗漏控制文件、日志文件和配置文件。3. 传输到目标机并校验压缩包完整性。4. 目标机使用相同版本软件解压到规划目录并统一属主。5. 检查 dm.ini 中路径和端口避免覆盖其他实例。6. 使用指定 dm.ini 启动检查日志并执行数据校验。冷拷贝最常见的错误是源库没有真正停止。查看 ps -ef | grep dmserver 时要确认目标实例进程消失不能只停止了管理工具或某个服务脚本。另一个错误是只复制 SYSTEM.DBF 等部分文件数据库文件之间存在一致性关系缺少控制文件或日志文件会导致无法正常打开。用户在初始化数据库时看到的 data_path/dm/data/EXAMDB/SYSTEM.DBF 是数据文件路径概念但迁移时不能只修改某一个 data_path 就认为所有文件已经重定位。应以 dm.ini、控制信息和实际数据文件列表为整体进行检查优先使用官方备份还原工具处理路径变化。九、常见报错与处理思路问题原因分析处理建议目标目录已有文件可能覆盖旧实例或残留失败恢复文件先备份并使用空目录Permission denied备份集或数据目录属主错误chown/chmod 后重试数据库正在使用dmserver 未停止或文件被占用正常停库并确认进程备份集校验失败传输损坏或备份不完整重新校验、重新传输/备份恢复需要归档备份与恢复目标需要日志链补齐归档或调整恢复方案启动后端口不对dm.ini 仍为源端配置修改目标端端口并重启服务启动的是旧实例systemd 脚本指向旧 dm.ini检查 ExecStart/path 参数数据存在但业务异常用户、作业、外部路径或应用配置未同步做完整应用验收遇到错误时先保留 DMRMAN 完整输出和数据库日志不要反复删除目录重做。记录操作命令、备份集路径、目标 dm.ini 路径和错误时间。很多问题通过对照路径即可发现例如命令恢复到 /dm/data/EXAMDB而服务却读取 /dm/data/EXAMDB2/dm.ini。不要用 kill -9 作为常规停库方式。强制结束进程可能留下需要实例恢复的状态并增加冷拷贝不一致风险。只有正常关闭无法完成且已评估影响时才考虑强制处理并在后续启动时重点检查恢复日志。十、如何设计可验证、可回退的迁移流程完整迁移方案应包含准备、备份、传输、恢复、校验、切换和回退七个阶段。准备阶段冻结版本和路径备份阶段产生可校验备份集传输阶段验证哈希恢复阶段记录每条命令校验阶段对比数据库和业务指标切换阶段修改应用连接回退阶段明确在何种条件下恢复源端服务。正式切换前可以先在目标端完成一次演练恢复测量备份时间、传输时间、恢复时间和校验时间。第二次正式迁移时只需要处理增量变化或重新执行最终备份风险远低于第一次操作就直接切生产。• 保留源库原始备份和目标恢复前快照不在未验证时删除。• 对备份集和传输包计算校验值。• 恢复命令、日志和耗时全部记录到实验报告。• 校验至少包含数据库状态、对象数量、关键表数据和应用连接。• 切换后观察归档、备份、作业和监控不只关注查询成功。十一、物理备份策略的进一步完善一次迁移成功不代表备份体系完善。生产环境应根据 RPO 和 RTO 设计全量、增量和归档备份频率设置备份保留周期并把备份复制到独立故障域。备份任务成功率、备份集校验和恢复演练都需要纳入监控。物理备份适合整库恢复逻辑备份适合对象级补充。二者可以组合定期做物理全库备份关键模式或配置对象额外做逻辑导出。发生单表误删除时不必恢复整库发生系统盘或数据文件损坏时则可以依靠物理备份快速恢复。最重要的原则是“备份的价值由恢复验证决定”。只有定期在独立环境完成 RESTORE、RECOVER 和业务校验才能确认备份在真正故障时可用。把本次 EXAMDB 跨主机迁移实验整理为标准报告正好可以作为后续恢复演练模板。参考资料[1] 达梦技术文档《备份还原简介》https://eco.dameng.com/document/dm/zh-cn/pm/backup-restore-introduction.html[2] 达梦技术文档《物理备份还原》https://eco.dameng.com/document/dm/zh-cn/ops/physical-backup-restore.html[3] 达梦技术文档《备份还原常见问题》https://eco.dameng.com/document/dm/zh-cn/faq/faq-backup-restore.html