达梦数据库(六)作业系统

概述

在数据库的运维中,备份等工作是需要每天执行的。dm 的作业系统提供了定时执行任务的能力,同时内置了一些常用的定时作业模版。对比常用的 linux cronjob,通过 dm 的作业系统去执行定时任务,有以下优点:

  1. 用户账号信息更加安全。cronjob 是基于操作系统层面的,想要操作数据库,需要配置数据库登陆信息(一般是记录在隐藏文本文件,通过读取文件的方式实现),一旦将数据库登陆信息记录在系统上,就容易被获取到。
  2. 操作更加简单。如果涉及到的操作比较复杂,一般需要将指令编写成脚本,由 cronjob 触发脚本内容,而 dm 针对相关数据库操作指定了模版,还可通过图形化界面进行实现,极大降低学习、运维成本。
  3. dm的作业系统可以实现作业告警。在 dm 里设置操作员,警告,能在作业出现失败的时候第一时间将结果通知到操作员,使相关人员提前介入处理,降低影响。

作业流程

在这里插入图片描述
通过dm管理工具进行作业管理,只需要在图形化界面点击相关功能按钮,操作比较简单,本文主要介绍命令行方式。

创建作业代理环境

对于刚部署的环境想要使用作业系统,需要初始化作业环境

SP_INIT_JOB_SYS(1);

语句的主要功能是创建作业系统所会涉及到的模式、表和视图,对应的销毁环境语句如下

SP_INIT_JOB_SYS(0);

以数据库备份功能为例

创建作业

SP_CREATE_JOB (
	job_name 			varchar(128), -- 作业名
	enabled 			int,  -- 作业开关
	enable_email 		int,  -- 邮件通知开关
	email_optr_name 	varchar(128), -- 操作员
	email_type 			int, -- 邮件发送时机
	enabled_netsend 	int, -- 网络通知开关
	netsend_optr_name 	varchar(128), -- 操作员
	netsend_type 		int, -- 网络发送时机
	describe 			varchar(500)  -- 作业描述信息
)

作业名作为作业系统管理作业的唯一标识符,不能与DM关键字重合且不能重名

将参数进行划分,方便理解记忆,不考虑告警情况下,主要是指定创建名

[作业名|作业开关,默认为1即可|邮件通知相关,3位字符|网络通知相关,3位字符|描述信息]

开启作业配置

开启作业配置后,会话会处于配置状态,无法操作其他步骤作业

SP_JOB_CONFIG_START (
	job_name varchar(128)
)

设置作业执行节点(可选)

DSC集群需要设置此项,其他架构的数据库不需要

SP_JOB_SET_EP_SEQNO (
   job_name     varchar(128),
   ep_seqno     int
)

配置作业内容

SP_ADD_JOB_STEP (
	job_name 			varchar(128),
	step_name 			varchar(128), -- 步骤名,步骤之间不重名
	type 				int, -- 步骤类型
	command 			text,  -- 步骤指令
	succ_action 		int,
	fail_action 		int,
	retry_attempts 		int,  -- 重试机制
	retry_interval 		int,  -- 重试间隔
	output_file_path 	varchar(256),  -- 废弃,无意义
	append_flag 		int -- 废弃,无意义
)
  • type 内含多种常用数据库模版(下面举例几种常见用法)
    0:自定义 sql 语句
    2:更新统计信息
    4:执行 dts (数据迁移)
    6:备份还原

  • command 的含义取决于 type 的取值,本次仅举例备份还原场景下的 command 含义,command由九个部分组成:
    [备份模式][备份压缩类型][备份日志类型][备份并行数][USE PWR][备份片大小上限][是否删除备份归档文件][保留字符,默认为0][备份文件路径]

  • 备份模式取值:
    0:全量增备
    2:差异增量备份
    4:累计增量备份

备份模式为增量时,备份文件路径应为[全量备份路径|增备存放路径]

总体参数比较复杂,基本使用仅需关注备份名,步骤名,type,command即可,重点是command的配置(一般取值为"0/4+7个0+文件路径")

配置作业调度

SP_ADD_JOB_SCHEDULE (
	job_name 				varchar(128), -- 作业名
	schedule_name 			varchar(128), -- 调度名
	enable 					int, -- 开关
	type 					int, -- 调度周期
	freq_interval 			int, -- 调度频率1
	freq_sub_interval 		int, -- 调度频率2
	freq_minute_interval 	int, -- 执行间隔
	starttime 				varchar(128), -- 作业执行时间
	endtime 				varchar(128), -- 作业结束时间
	during_start_date 		varchar(128), -- 作业生效时间
	during_end_date 		varchar(128), -- 作业失效时间
	describe 				varchar(500)
)

此处参数的调度周期+调度频率+执行间隔共同组合设定了执行时间

  • type:指定调度类型(仅例举常用频率,详细参数可参考官网
    0:表示指定作业只执行一次。
    1:按天的频率来执行。
    2:按周的频率来执行

  • freq_interval:不同调度类型下的发生频率,常用取值为1(每一天,每一周)
    当 type=0 时,这个值无效,系统不做检查。
    当 type=1 时,表示每几天执行
    当 type=2 时,表示的是每几个星期执行

  • freq_sub_interval:在 freq_interval 基础上,继续指定更为精准的频率
    当 type=0或1 时,这个值无效,
    当 type=2 时,表示的是星期几执行

  • freq_minute_interval: 表示一天内每隔多少分钟执行一次

结束作业配置

SP_JOB_CONFIG_COMMIT (
	job_name varchar(128)
)

作业样例

总体而言,通过命令行设定作业所涉及到的参数比较复杂,建议使用图形化工具设置作业或使用作业模版,每次新的作业仅修改部分关键参数。

# 全备
call SP_CREATE_JOB('bakfull',1,0,'',0,0,'',0,'');
call SP_JOB_CONFIG_START('bakfull');
call SP_ADD_JOB_STEP('bakfull', 'bakfull', 6, '00000000/dm8/bak/', 0, 0, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('bakfull', 'bakfull_cycle', 1, 2, 1, 64, 0, '23:00:00', NULL, '2024-04-20 00:00:00', NULL, '');
call SP_ADD_JOB_SCHEDULE('bakfull', 'bakfull_once', 1, 0, 0, 0, 0, NULL, NULL, sysdate+1/1440, NULL, '');
call SP_JOB_CONFIG_COMMIT('bakfull');
# 增备
call SP_CREATE_JOB('bakincr',1,0,'',0,0,'',0,'');
call SP_JOB_CONFIG_START('bakincr');
call SP_ADD_JOB_STEP('bakincr', 'bakincr', 6, '40000000/dm8/bak/|/dm8/bak/', 0, 0, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('bakincr', 'bakincr_cycle', 1, 2, 1, 63, 0, '23:00:00', NULL, '2024-04-20 00:00:00', NULL, '');
call SP_JOB_CONFIG_COMMIT('bakincr');

# 删除策略
call SP_CREATE_JOB('delbak',1,0,'',0,0,'',0,'');
call SP_JOB_CONFIG_START('delbak');
call SP_ADD_JOB_STEP('delbak', 'delbak', 0, 'sf_bakset_backup_dir_add("DISK","/dm8/bak/");call sp_db_bakset_remove_batch("DISK",now()-90);', 0, 0, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('delbak', 'delbak', 1, 1, 1, 0, 0, '23:30:00', NULL, '2024-04-20 00:00:00', NULL, '');
call SP_JOB_CONFIG_COMMIT('delbak');
  • 18
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值