达梦数据库恢复数据

达梦数据库恢复数据

从指定备份集恢复数据库

目标:将数据库恢复到备份集 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 或应用程序),检查关键业务表数据是否符合预期(回退到备份对应时间点)。

相关推荐
星星也在雾里1 天前
PgBouncer 解决 PostgreSQL 连接数超限 + 可视化监控
数据库·postgresql
雨辰AI1 天前
SpringBoot3 + 人大金仓读写分离 + 分库分表 + 集群高可用 全栈实战
java·数据库·mysql·政务
长城20241 天前
关于MySql的ONLY_FULL_GROUP_BY问题
数据库·mysql·聚合列
常常有1 天前
MySQL 底层执行原理:输入SQL语句到两阶段提交
数据库·sql·mysql
Mr. zhihao1 天前
深入解析redis基本数据结构
数据结构·数据库·redis
m0_748839491 天前
利用天正暖通CAD快速掌握风管数量统计的方法
数据库
随身数智备忘录1 天前
什么是设备管理体系?设备管理体系包含哪些核心模块?
网络·数据库·人工智能
海市公约1 天前
MySQL更新语句执行全流程:从Buffer Pool修改到二阶段提交
数据库·mysql·binlog·innodb·undo log·二阶段提交·update执行原理
颂love1 天前
MySQL的执行流程
android·数据库·mysql
程序leo源1 天前
Qt窗口详解
开发语言·数据库·c++·qt·青少年编程·c#