甲骨文认证体系
Vmware认证体系
AWS亚马逊
阿里云认证体系
红帽认证体系
ZStack云计算认证体系
思科认证体系
华为认证体系
CDA数据分析师认证
达梦认证体系
麒麟
定制化课程
达梦数据库培训干货分享WINDOWS上使用BAT定期执行备份操作
发布日期:2020-09-11 10:05:28阅读次数:

在达梦读写分离系统中,当主机压力较大时,我们可以选择备份备机的方式进行全库备份,但是备机无法使用DM7自带的代理作业进行备份。只能使用ETL或脚本的方式进行数据库备份。这种情况下,我们可以使用BAT脚本进行定期完全备份,增量备份数据库以及删除不用的备份集。


首先在数据库中创建备份用的存储过程PRO_BackupDatabase


create or replace PROCEDURE  PRO_BackupDatabase

as

declare

bakname  VARCHAR2(300);

BAKSTR    VARCHAR2(300);

V_DATE    VARCHAR2(50);

begin

select to_char(sysdate,'day') day into  V_DATE;

IF  V_DATE = '星期六' THEN

set bakname='DB_DAMENG_FULL_'||TO_CHAR(SYSDATE,'YYYY_MM_DD_HH24_MI_SS');

set BAKSTR= 'backup database full to '||' " '||bakname||' " '||' backupset ' 'D:\data\bak\' ||bakname|| ''' task thread 4 parallel 4;';

PRINT  BAKSTR;

EXECUTE IMMEDIATE  BAKSTR;

ELSE

set bakname='DB_DAMENG_INCRE_' || TO_CHAR(SYSDATE,'YYYY_MM_DD_HH24_MI_SS');

set BAKSTR = 'backup database increment with backupdir ''D:\data\bak'' to '||'"'||bakname||'"'||' backupset ''D:\data\bak\'||bakname||''' task thread 4 parallel 4;';

PRINT  BAKSTR;

EXECUTE IMMEDIATE  BAKSTR;

END IF;

end;


这里设置的是周六完全备份,其他时间增量备份。备份目录为D:\data\bak

然后开始编写BAT脚本

显示备份脚本和对应的调用SQL

add_bak内容:


@echo off

Set User=SYSDBA

Set Pass=SYSDBA

Set IP=LOCALHOST

Set SysDate=%date:~0,4%-%date:~5,2%-%date:~8,2%

@echo 时间=%SysDate%

@echo 用户名=%User%

@echo 密码=%Pass%

@echo IP地址=%IP%

@echo*****数据库备份******

cd E:\工作\dmdbms\dm7_setup_win64_ent_release_20180504\source\bin

E:

disql.exe %User%/%Pass%@%IP% `D:\data\bak_job\bak.sql

@echo 结束


可以手动修改USER、PASS、IP还有对应的执行SQL脚本,我的bak.sql放在D:\data\bak_job下。

bak.sql内容:


CALL PRO_BackupDatabase();

EXIT;


然后是备份删除的BAT脚本

del_bak内容: 


@echo off

set SrcDir=D:\data\bak

@echo 删除日期%date%

@echo 删除7天前过期备份文件和空目录

REM 指定天数

set DaysAgo=7


powershell -c "Get-ChildItem -Path '%SrcDir%' -Recurse -ErrorAction:SilentlyContinue | Where-Object -FilterScript {(((get-date) -($_.CreationTime)).days -gt %DaysAgo% -and $_.PsISContainer -ne $True)} |Remove-Item -Force"


for /f "delims=%%a in ('dir /ad /b /s D:\data\bak\^|sort /r') do (

rd "%%a">nul 2>nul&&echo 空目录"%%a"成功删除!)

@echo 删除结束


然后是记录日志和调用用的BAT文件

start_bak.bat内容:


@echo off

Set SysDate=%date:~0,4%-%date:~5,2%

cd D:\data\bak_job

D:

@echo 删除备份

call del_bak.bat>>Delete_%SysDate%_log.txt

@echo 开始备份

call add_bak.bat>>Bakup_%SysDate%_log.txt

@echo 结束

Pause


现在让我们做个全备和增备,还有数据删除来试一下

先设置时间到周六

然后执行start_bak.bat 这里我在脚本里加了pause方便观看


第一次全备无问题

然后修改时间到第二天或者第三天,重启下数据库进行增备


增备也可以正常执行,现在试一下备份删除,我将日期调整到第三个星期六


删除和备份日志为一个月记录一份


上海腾科教育科技有限公司聚焦ICT人才培养和教育服务、培养数字化时代的新型ICT人才、促进良性的ICT人才生态发展,提供面授教育、在线教育、IT人才培养与就业、高校专业共建与实验室建设、企业人才定制培养,以及教育科技领域内的技术开发、咨询、服务以及解决方案,专注高校ICT课程课件研发、基于华为公有云的云实验实训平台建设,致力于ICT技术在高等院校的引进、开发和推广,是一家全国性的专业ICT行业技术认证服务公司。

腾科教育是华为授权的培训合作伙伴,专业提供华为ICT技术架构认证、平台与服务认证、行业服务认证等华为职业认证服务,连续多年荣获华为年度最佳合作伙伴贡献奖、华为优秀战略合作伙伴、上海HCIE精英俱乐部伙伴,连续多年举办腾科技术嘉年华华为专场,并协办华为ICT大赛、华为生态伙伴精英赛伙伴赛分赛场、华为人才双选会上海场等活动和赛事,提供面向华为生态合作伙伴和ICT学员的人才供需双选平台及ICT学员就业通道,培养ICT行业所需创新型、融合型人才。