达梦数据库(DM8)多版本定时全量增量备份策略配置详解

达梦数据库(DM8)多版本定时全量增量备份策略配置详解

  • [1 备份说明](#1 备份说明)
    • [1.1 备份策略概述](#1.1 备份策略概述)
    • [1.2 前置条件与准备](#1.2 前置条件与准备)
    • [1.3 版本差异与脚本选择](#1.3 版本差异与脚本选择)
    • [1.4 备份脚本详解](#1.4 备份脚本详解)
  • [2 达梦数据库全方位指南:安装 优化 与实战教程](#2 达梦数据库全方位指南:安装 优化 与实战教程)

1 备份说明

本文档详细说明了达梦数据库(DM8)在不同版本下的定时备份策略配置。备份是数据库运维的核心工作,旨在保障数据安全与可恢复性。本策略主要包含开启归档配置备份代理环境 以及创建定时备份作业三个核心步骤,并针对不同DM8版本提供了相应的SQL脚本。

1.1 备份策略概述

我们的备份策略采用 全量备份 + 增量备份 的组合方式,以实现备份效率与存储空间的平衡:

  • 全量备份:每周六凌晨执行,完整备份整个数据库。备份成功后,会自动清理14天前的历史备份集,以释放磁盘空间。
  • 增量备份:每日晚上执行,仅备份自上次备份以来发生变化的数据块,备份速度快,占用空间小。
  • 统计信息更新:每周六凌晨在全量备份后执行,用于更新数据库的统计信息,优化查询性能。

1.2 前置条件与准备

在执行备份脚本前,请确保满足以下条件:

  1. 环境确认 :使用 dmdba 用户操作,并确保 disql 工具路径正确(通常为 /data/dmdba/dmdbms/bin/disql)。
  2. 归档模式 :数据库必须处于归档模式。非归档模式下仅支持脱机备份,无法进行定时增量备份。下文【1 开归档】部分提供了开启归档的SQL命令。
  3. 备份目录 :确保备份目录(如 /data/dmdba/dmdata/DAMENG/bak)存在且 dmdba 用户有读写权限。
  4. 代理环境 :定时备份作业需要通过数据库代理(SP_INIT_JOB_SYS)来调度。下文【2 开启代理环境】部分提供了初始化命令。

1.3 版本差异与脚本选择

达梦数据库在2023年之后的版本(如2025版)与早期版本(2022、2021年)在备份作业的存储过程接口上略有不同,主要体现在 SP_ADD_JOB_STEPSP_ADD_JOB_STEP_EX 的使用上。

  • 2025年及之后版本 :请使用 SP_ADD_JOB_STEP_EX 存储过程创建作业步骤,其参数列表更丰富。
  • 2023-2024年版本 :部分版本可能兼容 SP_ADD_JOB_STEP
  • 2022年及之前版本 :请使用 SP_ADD_JOB_STEP 存储过程。

请根据您的实际数据库版本,选择下方对应的脚本块进行配置。

1.4 备份脚本详解

以下是各版本的核心备份SQL脚本。请务必在成功开启归档和代理环境后,再执行对应版本的作业创建脚本。

sql 复制代码
登录数据库
su - dmdba
cd /data/dmdba/dmdbms/bin
./disql SYSDBA/'"Dameng@123"'

【1 开归档】
ALTER DATABASE MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE ADD ARCHIVELOG 'DEST=/data/dmdba/dmdata/dmarch,TYPE=LOCAL,FILE_SIZE=2048,SPACE_LIMIT=102400';
ALTER DATABASE OPEN;
CHECKPOINT(100);
BACKUP DATABASE COMPRESSED;


【2 开启代理环境】
SP_INIT_JOB_SYS(1);

【3 备份】
2025年版本备份
--每周六 凌晨2点 全量备份,备份成功删除14天前备份,备份失败作业退出
call SP_CREATE_JOB('fullbak',1,0,'',0,0,'',0,'全量备份');
call SP_JOB_CONFIG_START('fullbak');
call SP_ADD_JOB_STEP_EX('fullbak', 'f1', 6, '01000000/data/dmdba/dmdata/DAMENG/bak', 3, 1, 0, 0, NULL, 0, '');
call SP_ADD_JOB_STEP_EX('fullbak', 's1', 0, 'CALL SP_DB_BAKSET_REMOVE_BATCH(''DISK'', NOW()-15)', 1, 1, 0, 0, NULL, 0, '');
CALL SP_JOB_STEP_SET_NEXT_STEP('fullbak', 'f1', 's1', NULL);
call SP_ADD_JOB_SCHEDULE('fullbak', 'd1', 1, 2, 1, 64, 0, '02:01:01', NULL, '2025-08-29 22:06:30', NULL, '');
call SP_JOB_CONFIG_COMMIT('fullbak');
call SP_JOB_SET_SCHEMA('fullbak', 'SYSDBA');

--每天22点进行增量备份
call SP_CREATE_JOB('crebak',1,0,'',0,0,'',0,'');
call SP_JOB_CONFIG_START('crebak');
call SP_ADD_JOB_STEP_EX('crebak', 'c1', 6, '10000000/data/dmdba/dmdata/DAMENG/bak|/data/dmdba/dmdata/DAMENG/bak', 1, 1, 0, 0, NULL, 0, '');
call SP_ADD_JOB_SCHEDULE('crebak', 'c2', 1, 2, 1, 127, 0, '22:01:01', NULL, '2025-08-29 22:06:30', NULL, '');
call SP_JOB_CONFIG_COMMIT('crebak');
call SP_JOB_SET_SCHEMA('crebak', 'SYSDBA');

--周六更新统计信息
call SP_CREATE_JOB('DB_STAT',1,0,'',0,0,'',0,'');
call SP_JOB_CONFIG_START('DB_STAT');
call SP_ADD_JOB_STEP_EX('DB_STAT', 'DB_STAT', 3, '', 0, 0, 0, 0, NULL, 0, '');
call SP_ADD_JOB_SCHEDULE('DB_STAT', 'DB_STAT', 1, 2, 1, 64, 0, '04:32:06', NULL, '2025-07-24 16:32:06', NULL, '');
call SP_JOB_CONFIG_COMMIT('DB_STAT');


2023-2024年版本备份
--定时自动备份8.1-3-100-2023-12-26
--8.1-3-100-2023-12-26-05134284132-20231226-213242-20081
--每周六 凌晨2点 全量备份与删除备份
call SP_CREATE_JOB('fullbak',1,0,'',0,0,'',0,'');
call SP_JOB_CONFIG_START('fullbak');
call SP_ADD_JOB_STEP('fullbak', 'fullbak', 6, '01000000/data/dmdba/dmdata/DAMENG/bak', 3, 1, 0, 0, NULL, 0);
call SP_ADD_JOB_STEP('fullbak', 'delbak', 0, 'CALL SP_DB_BAKSET_REMOVE_BATCH(''DISK'', NOW()-15)', 0, 0, 0, 0, NULL, 0);
CALL SP_JOB_STEP_SET_NEXT_STEP('fullbak', 'fullbak', 'delbak', NULL);
call SP_ADD_JOB_SCHEDULE('fullbak', 'fullbak', 1, 2, 1, 64, 0, '02:01:53', NULL, '2025-09-16 10:58:53', NULL, '');
call SP_JOB_CONFIG_COMMIT('fullbak');
--每天 22点 增量备份
call SP_CREATE_JOB('addbak',1,0,'',0,0,'',0,'');
call SP_JOB_CONFIG_START('addbak');
call SP_ADD_JOB_STEP('addbak', 'addbak', 6, '11000000/data/dmdba/dmdata/DAMENG/bak|/data/dmdba/dmdata/DAMENG/bak', 0, 0, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('addbak', 'addbak', 1, 1, 1, 0, 0, '22:01:55', NULL, '2025-09-16 11:00:55', NULL, '');
call SP_JOB_CONFIG_COMMIT('addbak');

--2022年和2021年定时备份

--每周六全量备份,备份保留2周
call SP_CREATE_JOB('fullbak',1,0,'',0,0,'',0,'');
call SP_JOB_CONFIG_START('fullbak');
call SP_ADD_JOB_STEP('fullbak', 'f1', 6, '01000000/data/dmdba/dmdbms/data/DAMENG/bak', 3, 1, 0, 0, NULL, 0);
call SP_ADD_JOB_STEP('fullbak', 'f2', 0, 'CALL SP_DB_BAKSET_REMOVE_BATCH(''DISK'', NOW()-15)', 1, 1, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('fullbak', 'f3', 1, 2, 1, 64, 0, '01:00:00', NULL, '2025-12-26 10:20:20', NULL, '');
call SP_JOB_CONFIG_COMMIT('fullbak');

--每天增量备份
call SP_CREATE_JOB('crebak',1,0,'',0,0,'',0,'');
call SP_JOB_CONFIG_START('crebak');
call SP_ADD_JOB_STEP('crebak', 'c1', 6, '11000000/data/dmdba/dmdbms/data/DAMENG/bak|/data/dmdba/dmdbms/data/DAMENG/bak', 1, 1, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('crebak', 'c2', 1, 1, 1, 0, 0, '23:00:00', NULL, '2025-12-26 10:08:37', NULL, '');
call SP_JOB_CONFIG_COMMIT('crebak');

2 达梦数据库全方位指南:安装 优化 与实战教程