注册
【与达梦同行】基于DM8的自动化定时备份脚本
技术分享/ 文章详情 /

【与达梦同行】基于DM8的自动化定时备份脚本

余友 2022/12/29 3441 6 1

一.背景

日常工作中需要经常使用备份功能,尽管DM8可以设置Job任务,但无法应对工作中多样化的备份场景,如脱机物理备份、联机物理备份、联机逻辑备份和归档备份,同时job任务对于普通的运维人员而言,有一定的学习成本。
本定时备份脚本旨在解决上述痛点,提供多样化的备份方式选择,并贴合实际生产需要,提供定时任务设置,借助于图形化交互界面,使得普通运维人员也能够快速上手。
需要提及的是,本脚本仅是DM8备份job任务的补充,而非替代。

二.使用环境

**运行环境:**Linux + perl环境
**备份环境:**基于DM8数据库的 DSC集群、主备集群以及单机环境

三.特色功能介绍

3.1 支持多样备份方式

可供选择的备份方式包括:联机物理备份、脱机物理备份、联机逻辑备份和归档备份。

  • 联机物理备份
    • 支持库级、表空间级的全备、增备(差异增备、累计增备
    • 支持表级的全备
  • 脱机物理备份
    • 支持库级全备、增备(差异增备、累计增备)
  • 联机逻辑备份
    • 支持模式级、用户级、库级、表级的全备
  • 归档备份
    • 支持全库级、LSN号、TIME备份

3.2 支持定时备份

除脱机物理备份外,其他备份方式均支持即时、定时备份,包括即时一次备份、即时多次备份、定时一次备份和定时多次备份。
注1:脱机物理备份备份不支持定时备份,均为即时一次备份
注2:多次备份指的是从某时刻开始,每经过一段时间便执行一次备份的执行方式
注3:目前支持的定时间隔为日、周、月

四.使用过程

脚本获取: 提取码:08xa

4.1上传脚本

1.上传脚本至待备份数据库服务器上任一dmdba所属目录下,并转换文件格式:

sed -i 's/\r$//' DM8_Auto_Backup.pl

2.添加执行权限:

chmod +x DM8_Auto_Backup.pl

4.2 进入脚本目录,以root身份执行

./DM8_Auto_Backup.pl

五.查看备份执行情况

5.1 即时备份

即时备份情况下,包括即时一次备份、即时多次备份,可通过 tail -f auto_bak.log 查看备份情况,或者查看待备份目录查看备份文件是否生成。
注:auto_bak.log 文件作用请参见7.1小节。

5.2 定时备份

定时备份情况下,如果是定时一次备份,可通过 atq 命令查看目前 at 任务;如果是定时多次备份,通过 crontab -l 查看循环备份任务,查看是否已定时调用 at_cron_时间戳.sql,进一步的可查看【at_cron_时间戳.sql】文件中待调用的文件是否生成。

六.脚本工作流程图

6.1 流程图

图片1.png

6.2 定时任务实现方式

1. 涉及服务

(1) AT服务:指定在某个时间点执行某个文件
(2)crontab服务:间隔多长时间执行某个文件

2. 执行方式

当用户确定好备份方式及备份参数后,脚本会将对应的备份命令写入到【at_cron_时间戳.sql】文件中,供定时命令调用。
即时、定时一次备份:通过AT命令设置为基于当前时间或未来某个时间执行一次【at_cron_时间戳.sql】文件。
即时、定时多次备份:通过crontab命令设置为每隔一分钟执行一次【cron_时间戳.file】文件,该文件用来判断是否满足定时备份设置的时间间隔,当满足时便调用一次【at_cron_时间戳.sql】。

七.脚本相关目录说明

首次执行脚本后,会在DM软件安装目录下生成auto_bak.log文件和bak_exc_file子目录。

7.1 auto_bak.log

该文件为备份结果日志文件,存放备份时间、备份时间成功与否、备份结果等信息。

7.2 bak_exc_file

DM软件安装目录下的子目录,用于存放login.sql、login_result.log、arch_status.log等文件。

7.2.1 login.sql

存放访问数据库信息。
备份数据库时需要事先验证用户所输入的账号密码是否正确,因此将用户输入的信息暂存放至此,验证程序会从该文件中获取登录信息进行验证。

7.2.2 login_result.log

存放验证访问数据库后的信息,与login.sql文件配套使用。
验证程序从login.sql中获取登录信息进行验证,然后将验证后的信息暂存放至此,用于下一步程序判断此次验证是否成功,若不成功,用户还可查看此文件来判断具体失败原因。

7.2.3 arch_status.log

存放’select arch_is_valid from v$dm_arch_ini;'查询结果,用于判断待备份数据库是否开启归档。
注:执行联机物理备份、归档备份时使用。

7.2.4 at_cron_时间戳.sql

存放备份命令,供at或crontab调用。

7.2.5 cron_时间戳.file

用于在循环执行脚本作业任务中,计算间隔时间,crontab任务会每分钟调用该文件,一旦间隔时间满足设定的备份作业调用时间,则调用 at_cron_时间戳.sql 文件。

八.常见问题

问题一:未安装AT服务

解决办法:YUM安装

yum insyall at

–启动服务:

systemctl start atd

问题二:未安装locate

问题截图:

图片2.png

脚本提示:

图片3.png

解决办法1:YUM安装

1.yum search locate
2.yum install mlocate
3.updatedb
4.执行 locate disql 检测是否成果
图片4.png

解决办法2:mlocate包安装

1.本地下载包文件:
安装包
2**.创建组(否则后面updatedb会报错)**

[root@VM-0-8-centos ~]# groupadd mlocate

3.解压

[root@VM-0-8-centos opt]# xz -d mlocate-0.26.tar.xz
[root@VM-0-8-centos opt]# tar -xvf mlocate-0.26.tar
-- 进入解压后目录:
[root@VM-0-8-centos opt]# cd mlocate-0.26/
-- 执行如下命令:
./configure
make && make install
updatedb

4.执行 locate disql 检测是否成功
图片4.png

问题三:no crontab for root

图片6.png

## 问题原因:执行脚本的liunx服务器之前尚未使用过 crontab 命令,因此服务器上没有对应的crontab执行文件。

解决办法:执行crontab -e,然后wq退出,即可生成一个crontab执行文件。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服