达梦数据库恢复数据

达梦数据库恢复数据

从指定备份集恢复数据库

目标:将数据库恢复到备份集 DB_DAMENG_FULL_2025_02_13_01_05_18 对应时间点。

停掉当前 DM8 容器

在宿主机执行:

bash 复制代码
docker stop dm8 || true

确保数据库处于关闭(脱机)状态。

启动一次性容器进行恢复

在宿主机执行:

bash 复制代码
cd /mnt/home/dm8/dm-docker

IMAGE=$(docker inspect dm8 --format '{{.Config.Image}}')

docker run --rm -it \
  -v /mnt/home/dm8/data:/opt/dmdbms/data \
  -v /mnt/home/dm8/db_back:/opt/dmdbms/backup \
  --entrypoint /bin/bash \
  "$IMAGE"

说明:

  • --rm:容器退出后自动删除,仅用于本次恢复。
  • 通过 -v 将宿主数据/备份目录挂载到容器内,恢复操作会直接作用于宿主目录。
  • --entrypoint /bin/bash:覆盖镜像默认 entrypoint,避免自动启动数据库,只获得一个 shell。

在容器中使用 dmrman 执行还原

进入容器后:

bash 复制代码
cd /opt/dmdbms/bin
./dmrman use_ap=2

进入 dmrman 后,依次执行以下命令(每条一行):

text 复制代码
CHECK BACKUPSET '/opt/dmdbms/backup/DB_DAMENG_FULL_2025_02_13_01_05_18';

RESTORE DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/opt/dmdbms/backup/DB_DAMENG_FULL_2025_02_13_01_05_18';

RECOVER DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/opt/dmdbms/backup/DB_DAMENG_FULL_2025_02_13_01_05_18';

RECOVER DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' UPDATE DB_MAGIC;

要点:

  • use_ap=2:不依赖 DMAP 服务,更适合容器场景。
  • CHECK BACKUPSET:校验备份集合法性(推荐执行)。
  • RESTORE:从备份集还原数据文件。
  • RECOVER ... FROM BACKUPSET:从备份集恢复数据库到备份结束状态。
  • RECOVER ... UPDATE DB_MAGIC:更新 DB_MAGIC,确保启动正常。

执行完后,在 dmrman 中退出:

text 复制代码
EXIT;

回到 bash:

bash 复制代码
exit

此时一次性容器会被删除,数据已写回宿主 /mnt/home/dm8/data

启动原来的 dm8 容器

在宿主机:

bash 复制代码
docker start dm8

如果容器已被删除,可在 compose 目录重新启动:

bash 复制代码
cd /mnt/home/dm8/dm-docker
docker compose up -d

确保 docker-compose.yml 中挂载仍为:

yaml 复制代码
volumes:
  - /mnt/home/dm8/data:/opt/dmdbms/data
  - /mnt/home/dm8/db_back:/opt/dmdbms/backup

验证恢复结果

查看容器日志:

bash 复制代码
docker logs dm8 --tail 50

使用客户端连接(如 disql 或应用程序),检查关键业务表数据是否符合预期(回退到备份对应时间点)。

相关推荐
Lorin 洛林7 分钟前
为什么大模型总会“胡说八道“?一文彻底搞懂 RAG 知识库原理!
数据库
其实防守也摸鱼21 分钟前
GitHub开源项目破圈方法论:从技术自嗨到生态共赢
服务器·数据库·学习·开源·github·命令行·linux系统
羑悻的小杀马特33 分钟前
AI判不了设备异常?缺的不是算法,是这层数据底座
数据库·人工智能·ai
网安墨雨34 分钟前
MySQL数据库 SQL语句详解
自动化测试·软件测试·数据库·python·sql·mysql
JERRY. LIU38 分钟前
VS CODE进行NRF CONNECT项目开发出现变量无法链接跳转问题及解决方法
数据库·嵌入式硬件·物联网·iot·嵌入式实时数据库
無a伟1 小时前
redis采用的单线程模型,为什么这么快?
数据库·redis·缓存
xlq223222 小时前
高并发服务器day5
java·服务器·数据库
William_cl2 小时前
WinForms EF Core 上下文频繁释放引发的异常排查与规范方案(MES 项目实录)
服务器·数据库·oracle
许彰午3 小时前
01-Oracle 19c静默安装全流程
数据库·oracle
许彰午3 小时前
02-Oracle连接池配置实战
数据库·oracle