参考手册:DMV8 1-1-190版本《DM8作业使用手册》《DM8备份与还原手册》
一、简介
本次主要介绍达梦数据库定时备份作业配置。
备份作业的配置可以使用两种方式:
1.通过管理工具(方便,友好,易操作)
2.通过SQL语句执行对应的系统包
二、环境说明
OS:NeoKylin Linux Advanced Server release V7Update6/(Chromium)-x86_64
DB_VERSION:DM V8 1-1-190-21.03.12-136419-ENT
客户端管理工具:DM V8 1-1-190(低版本的客户端"作业步骤"那里可能选项可能会有部分差异)
数据库归档模式:已开启
DMAP服务:已运行
三、相关系统表和存储过程介绍
3.1 作业相关主要的系统表和存储过程
系统存储过程:
SP_CREATE_JOB:用于创建作业。参数值较多,参考《DM8作业系统使用手册》创建作业章节。
SP_ALTER_JOB:用于修改作业。参数与SP_CREATE_JOB相同,参考《DM8作业系统使用手册》修改作业章节。
SP_DROP_JOB:用于删除作业。
call SP_DROP_JOB('TEST'); ---删除TEST作业
SP_JOB_CONFIG_START:开始配置作业。必须在增加、删除作业步骤以及作业配置之前执行
call SP_JOB_CONFIG_START('TEST'); ---开始配置TEST作业
SP_JOB_SET_EP_SEQNO:指定作业执行节点。默认作业在控制节点执行。(可选)
call SP_JOB_SET_EP_SEQNO('TEST', 1); ---指定TEST作业在1号节点上执行。节点号取值[0,15],默认为0,表示控制节点。
SP_ADD_JOB_STEP:增加作业步骤。参数值较多,参考《DM8作业系统使用手册》作业步骤章节。
SP_ALTER_JOB_STEP:修改作业步骤。参数与SP_ADD_JOB_STEP相同,参考《DM8作业系统使用手册》作业步骤章节。
SP_DROP_JOB_STEP:删除作业步骤。
SP_DROP_JOB_STEP('TEST', 'S1'); ---删除TEST作业的S1步骤
SP_ADD_JOB_SCHEDULE:增加作业调度。参数值较多,参考《DM8作业系统使用手册》作业调度章节。
SP_ALTER_JOB_SCHEDULE:修改作业调度。参数与SP_ADD_JOB_SCHEDULE相同,参考《DM8作业系统使用手册》作业调度章节。
SP_DROP_JOB_SCHEDULE:删除作业调度。
SP_JOB_CONFIG_COMMIT:结束作业配置。
SP_JOB_CLEAR_HISTORIES:清理作业日志记录。
主要的系统表:
SYSJOBS表:查看已创建的作业。SYSJOB模式下的SYSJOBS表。
SYSJOBSTEPS表:存放作业的所有步骤信息 。SYSJOB模式下的SYSJOBS表。
SYSJOBSCHEDULES表:存放作业的所有调度信息。SYSJOB模式下的SYSJOBSCHEDULES表。
SYSJOBHISTORIES2表:存放作业的执行情况的日志。SYSJOB模式下的SYSJOBHISTORIES2表。
SYSSTEPHISTORIES2表:存放作业步骤的执行情况的日志。SYSJOB模式下SYSSTEPHISTORIES2表。
关于上面的存储过程以及系统表的使用说明,请参考《DM8作业系统使用手册》,手册存放在达梦数据库安装目录下的doc文件夹下。
3.2 备份相关系统存储过程和系统视图
备份相关系统存储过程和函数:
SF_BAKSET_BACKUP_DIR_ADD:添加备份目录。
SF_BAKSET_BACKUP_DIR_REMOVE:删除内存中指定的备份目录。
SF_BAKSET_BACKUP_DIR_REMOVE_ALL:删除内存中全部的备份目录。
SF_BAKSET_CHECK:对备份集进行校验。
SF_BAKSET_REMOVE:删除指定设备类型和指定备份集目录的备份集。
SF_BAKSET_REMOVE_BATCH: 批量删除满足指定条件的所有备份集。使用之前需要先使用SF_BAKSET_BACKUP_DIR_ADD添加将要删除的备份集目录。
SP_DB_BAKSET_REMOVE_BATCH:批量删除指定时间之前的数据库备份集。使用之前需要先使用SF_BAKSET_BACKUP_DIR_ADD添加将要删除的备份集目录。
SP_TS_BAKSET_REMOVE_BATCH:批量删除指定表空间对象及指定时间之前的表空间备份集。使用之前需要先使用SF_BAKSET_BACKUP_DIR_ADD添加将要删除的备份集目录。
SP_TAB_BAKSET_REMOVE_BATCH:批量删除指定表对象及指定时间之前的表备份集。使用之前需要先使用SF_BAKSET_BACKUP_DIR_ADD添加将要删除的备份集目录。
SP_ARCH_BAKSET_REMOVE_BATCH:批量删除指定条件的归档备份集。使用之前需要先使用SF_BAKSET_BACKUP_DIR_ADD添加将要删除的备份集目录。
SF_BAKSET_BACKUP_DIR_ADD 添加备份目录仅对当前会话有效。调用删除备份等函数或查看动态视图时要先调用 SF_BAKSET_BACKUP_DIR_ADD 添加备份目录,否则仅搜索默认备份路径下的备份集。
备份相关动态视图:
V
B
A
C
K
U
P
S
E
T
:
显
示
备
份
集
基
本
信
息
。
V
BACKUPSET:显示备份集基本信息。 V
BACKUPSET:显示备份集基本信息。VBACKUPSET_DBINFO:显示备份集的数据库相关信息。
V
B
A
C
K
U
P
S
E
T
D
B
F
:
显
示
备
份
集
中
数
据
文
件
的
相
关
信
息
。
V
BACKUPSET_DBF:显示备份集中数据文件的相关信息。 V
BACKUPSETDBF:显示备份集中数据文件的相关信息。VBACKUPSET_ARCH:显示备份集的归档信息。
V
B
A
C
K
U
P
S
E
T
B
K
P
:
显
示
备
份
集
的
备
份
片
信
息
。
V
BACKUPSET_BKP:显示备份集的备份片信息。 V
BACKUPSETBKP:显示备份集的备份片信息。VBACKUPSET_SEARCH_DIRS:显示备份集搜索目录。
V
B
A
C
K
U
P
S
E
T
T
A
B
L
E
:
显
示
表
备
份
集
中
备
份
表
信
息
。
V
BACKUPSET_TABLE:显示表备份集中备份表信息。 V
BACKUPSETTABLE:显示表备份集中备份表信息。VBACKUPSET_SUBS:显示并行备份中生成的子备份集信息。
查看备份信息之前应先使用SF_BAKSET_BACKUP_DIR_ADD添加备份集目录,否则只显示默认备份路径下的备份集信息。
关于上面的存储过程、函数以及系统视图的使用,请参考《DM8备份与还原手册》,手册存放在达梦数据库安装目录下的doc文件夹下。
四、配置备份作业
配置的备份策略为:
每周日23点进行数据库全备份;其余每天23点进行增量备份;每天凌晨1点清理历史备份文件,备份文件保留8天;
4.1 通过管理工具进行配置(推荐)
4.1.1 数据库全备作业
4.1.1.1 登录管理工具
使用管理工具连接登录数据库
4.1.1.2 创建代理环境
在管理工具左边导航栏—数据库连接下面—“代理”—选择“创建代理环境”,如图:
4.1.1.3 创建作业
在“代理”—“作业” 下,右键 ”新建作业“
指定作业名
选项—“常规” 设置 ,指定作业名称
设置作业步骤
选项—“作业步骤” 设置,选择"添加",设置新建作业步骤,并确定:
作业步骤—常规选项:
步骤名称:指定步骤名称 。 (必要项)
步骤类型:选择"基于备份集备份数据" 。 (必要项)
备份路径:指定备份文件存放路径 。(必要项)
备份方式:选择"完全备份" 。 (必要项)
备份并行数、备份片大小可以根据实际情况设置。基备份目录为增量备份方式时选择。
全备作业配置"常规"选项即可,"高级"选项默认即可。
设置作业调度
选项—“作业调度” 设置,选择"新建",设置新建作业步骤,并确定:
作业调度配置项:
名称:指定调度名称。
调度类型:可选项为"执行一次"、“反复执行”,备份以及定时自动执行的任务选择"反复执行"。
类别:可选项为"天"、“周”、“月”,根据需要去选择任务执行的频率。根据上面的备份策略这里设置为每周的星期日。
每日频率:指定每天的执行频率,可选择"执行一次"或者按照"执行周期"进行设置,“执行周期” 间隔可选"分钟"、“小时”。
点击"确定",到此全备份作业创建完成。
作业DDL选项
作业DDL选项为上述选项配置的调用系统方法的执行语句,也可以通过执行里面的内容创建整个作业,创建的作业设置和上面图形化中设置的各个选项内容相同。
4.1.2 数据库增量备份作业
4.1.2.1 增量备份作业需要注意的地方
当数据库环境为主备集群时,由于所有的备份作业只能在主库运行,路径存放在主库服务器上。主备库发生切换后,由于备库上对应的备份路径下没有全备文件,所以增量备份作业任务执行时会失败(这里与ORACLE RMAN备份有区别),所以需要在增量备份作业的作业步骤中添加一个全备的作业步骤,并在增量备份的步骤中设置当作业步骤执行失败时执行下一个步骤也就是全备作业步骤,可以解决当没有全备时增量备份执行失败的问题。
4.1.2.2 登录管理工具
使用管理工具连接登录数据库
4.1.2.3 创建作业
在“代理”—“作业” 下,右键 ”新建作业“。
指定作业名
选项—“常规” 设置 ,指定作业名称
设置增量备份作业步骤
选项—“作业步骤” 设置,选择"添加",设置新建作业步骤,并确定:
作业步骤—常规选项:
步骤名称:指定步骤名称 。 (必要项)
步骤类型:选择"基于备份集备份数据" 。 (必要项)
备份路径:指定增量备份文件存放路径 。(必要项)
备份方式:选择"增量备份" 。 (必要项)
基备份目录:指定全备份的目录。这里需要注意:如果当前使用的管理工具与数据库不在同一台机器,“添加” )基备份目录时(下图中步骤①)弹出的选择路径为当前使用的管理工具机器的路径,需要先随便选择一个路径,然后手动修改为服务器上全备份的路径(双击下图步骤②的位置可以修改路径)。
备份并行数、备份片大小可以根据实际情况设置。
作业步骤—高级选项:
高级选项主要是设置当前作业步骤执行后的操作执行成功时:“报告执行成功并结束作业”、“报告执行成功并继续执行下一步”、“不报告执行成功并结束作业”、“不报告执行成功并继续执行下一步”,执行失败时:“报告执行失败并结束作业”、“报告执行失败并继续执行下一步”、“不报告执行失败并结束作业”、“不报告执行失败并继续执行下一步”。 低版本(DM8 1-1-190以下)管理工具上只有"报告执行成功"、“报告执行失败”、“执行下一步”三个选项。
注意:有的低版本管理工具可能这里选项可能会有区别!!!
在增量备份作业中,最好在增量备份作业步骤失败时设置"重试次数"和"重试间隔"。并指定失败后"执行下一步"(下一步为全备作业步骤,下面会设置)。
设置全备作业步骤
操作步骤与设置增量类似,在增量备份作业-"作业步骤"中添加一个全备作业步骤:
该作业步骤截图和上面截图”类型” 会不一样,原因是本次测试使用了两个不同版本的客户端管理工具,在DMV8 1-1-190版本的管理工具中作业步骤类型用于备份数据库的只有”备份数据库“一个作业类型,默认为"基于备份集备份数据库"。 低版本的客户端管理工具上面会显示由两个作业步骤类型"备份数据库"和"基于备份集备份数据库"。
设置作业调度
操作方法和数据库全备作业配置一样,配置项说明参考数据库全备作业的设置调度步骤。
根据备份策略,增量备份设置为周一至周六的每天23点执行。
选项—“作业调度” 设置,选择"新建",设置新建作业步骤,并确定:
选择"确定",完成作业创建设置。
4.1.3 历史备份文件清理
历史备份文件的清理主要是通过SF_BAKSET_BACKUP_DIR_ADD和SP_DB_BAKSET_REMOVE_BATCH两个函数和存储过程来完成。
CALL SF_BAKSET_BACKUP_DIR_ADD('DISK', '/dm/dm134/data/TEST/bak');
CALL SP_DB_BAKSET_REMOVE_BATCH('DISK', NOW()-8);
创建作业
在“代理”—“作业” 下,右键 ”新建作业“。
指定作业名
设置作业步骤
选项—“作业步骤” 设置,选择"添加",设置新建作业步骤,并确定:
设置作业调度
选项—“作业调度” 设置,选择"新建",设置新建作业步骤,并确定:
4.2 通过SQL语句的方式
最简单的就是在管理工具上创建完了之后,可以直接将里面的执行语句拷贝出来,修改对应的备份文件路径即可,然后到其他的环境去执行.
比如上面通过管理工具创建的几个作业DDL语句如下:
对应作业右键—“属性”—“DDL”
创建代理环境语句
SP_INIT_JOB_SYS(1);
全备作业的创建语句
call SP_CREATE_JOB('BAK_FULL',1,0,'',0,0,'',0,'Backup Full Database');
call SP_JOB_CONFIG_START('BAK_FULL');
call SP_JOB_SET_EP_SEQNO('BAK_FULL', 0);
call SP_ADD_JOB_STEP('BAK_FULL', 'S_F1', 6, '01000000/dm/dm134/data/TEST/bak', 1, 2, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('BAK_FULL', 'S_F2', 1, 2, 1, 1, 0, '23:00:00', NULL, '2021-04-23 11:58:18', NULL, '');
call SP_JOB_CONFIG_COMMIT('BAK_FULL');
增量备份作业的创建语句
call SP_CREATE_JOB('BAK_INC',1,0,'',0,0,'',0,'');
call SP_JOB_CONFIG_START('BAK_INC');
call SP_ADD_JOB_STEP('BAK_INC', 'S_I1', 6, '11000000/dm/data/DAMENG5237/bak|/dm/data/DAMENG5237/bak', 1, 2, 1, 5, NULL, 0);
call SP_ADD_JOB_STEP('BAK_INC', 'S_F2', 6, '01000000/dm/data/DAMENG5237/bak', 1, 1, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('BAK_INC', 'S_I2', 1, 2, 1, 126, 0, '23:00:00', NULL, '2021-04-23 14:04:28', NULL, '');
call SP_JOB_CONFIG_COMMIT('BAK_INC');
清理历史备份作业的创建语句
call SP_CREATE_JOB('BAK_CLEAR',1,0,'',0,0,'',0,'');
call SP_JOB_CONFIG_START('BAK_CLEAR');
call SP_ADD_JOB_STEP('BAK_CLEAR', 'S_C1', 0, 'CALL SF_BAKSET_BACKUP_DIR_ADD(''DISK'', ''/dm/dm134/data/TEST/bak'');
CALL SP_DB_BAKSET_REMOVE_BATCH(''DISK'', NOW()-8);', 1, 2, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('BAK_CLEAR', 'S_C2', 1, 1, 1, 0, 0, '01:00:00', NULL, '2021-04-23 14:44:07', NULL, '');
call SP_JOB_CONFIG_COMMIT('BAK_CLEAR');
五、结语
通过达梦数据库管理工具进行创建数据库作业操作非常简单,并且达梦数据库管理工具对于每个操作都会在选择确定完成操作之前自动生成相应的DDL语句。当有时候遇到无法使用图形工具进行操作时而又不确定操作语句参数是否正确时,可以先在能够使用图形工具的机器上使用管理工具将相关操作设置后,将对应的DDL语句直接拷贝下来修改后直接去服务器执行。
另外,在使用上的两点建议:
(1)在使用客户端管理工具的版本最好与数据库版本相同,这样能尽可能的避免一些不必要的小问题,是整个维护操作更顺利。
(2)参考的官方手册也最好与当前使用的数据库版本相同,可以到$DM_HOME/doc(达梦数据库软件安装目录下的doc目录)下面获取。
因为不同的版本的官方手册以及工具可能会存在差异,最好是使用与当前使用的数据库对应的工具和手册。
更多资讯请上达梦技术社区了解:https://eco.dameng.com