目录
一、前言
很多项目由于存储空间限制,给数据库备份预留的空间不足,同时数据库中一些数据量大的模式不是必须备份的,这样就可以考虑只备份一些最重要的模式,确保硬件损坏等不可控因素下数据不至完全丢失。
二、环境
操作系统:凝思磐石6.0
数据库:达梦7
三、备份方法
编写shell脚本,利用达梦dexp工具、crontab定时任务、tar解压缩来做。
四、操作步骤
4.1、在备份目录新建back.sh脚本文件
dmdba@dmdsc01:~/dbbak$ touch back.sh
dmdba@dmdsc01:~/dbbak$ chmod 755 back.sh
dmdba@dmdsc01:~/dbbak$ vim back.sh
脚本内容如下
schname=PI6000
filename=$schname-$(date '+%Y%m%d%H%M%S')
echo $filename
## 设置环境变量
export DM_HOME=/home/dmdba/dmdbms
export PATH=$DM_HOME/bin:$DM_HOME/tool:$PATH:$HOME/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$DM_HOME/bin
## 导出用户PI6000的数据
/home/dmdba/dmdbms/bin/dexp userid=SYSDBA/SYSDBA owner=$schname directory=/home/dmdba/dbbak/ file=$filename.dmp log=$filename.log parallel=4
## 压缩备份文件和日志文件然后删除dmp和log文件
cd /home/dmdba/dbbak
tar zcvf $filename.tar.gz *.dmp *.log --remove-files
## 保存30天备份文件,删除29天之前备份
find /home/dmdba/dbbak/ -mtime +29 -name "*.tar.gz" -exec rm -rf {} \;
dexp命令参数说明
root@dmdsc01:/home/dmdba/dbbak# /home/dmdba/dmdbms/bin/dexp help
dexp V7.6.1.92-Build(2021.02.26-135621)ENT
格式: ./dexp KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
例程: ./dexp SYSDBA/SYSDBA GRANTS=Y TABLES=(SYSDBA.TAB1,SYSDBA.TAB2,SYSDBA.TAB3)
USERID 必须是命令行中的第一个参数
关键字 说明(默认值)
--------------------------------------------------------------------------------
USERID 用户名/口令 格式:USER/PWD*MPP_TYPE@SERVER:PORT#SSLPATH@SSLPWD
FILE 导出文件 (dexp.dmp)
DIRECTORY 导出文件所在目录
FULL 整库导出 (N)
OWNER 以用户方式导出 格式 (user1,user2,...)
SCHEMAS 以模式方式导出 格式 (schema1,schema2,...)
TABLES 以表方式导出 格式 (table1,table2,...)
FUZZY_MATCH TABLES选项是否支持模糊匹配 (N)
QUERY 用于导出表的子集的select 子句
PARALLEL 用于指定导出的过程中所使用的线程数目
TABLE_PARALLEL 用于指定导出的过程中表内的并发线程数目,MPP模式下会转换成单线程
TABLE_POOL 用于指定表的缓冲区个数
EXCLUDE 忽略指定的对象
格式 EXCLUDE=(CONSTRAINTS,INDEXES,ROWS,TRIGGERS,GRANTS) or
EXCLUDE=TABLES:table1,table2 or
EXCLUDE=SCHEMAS:sch1,sch2
INCLUDE 包含指定的对象
格式 INCLUDE=(CONSTRAINTS,INDEXES,ROWS,TRIGGERS,GRANTS) or
INCLUDE=TABLES:table1,table2
CONSTRAINTS 导出约束 (Y)
TABLESPACE 导出对象带有表空间 (N)
GRANTS 导出权限 (Y)
INDEXES 导出索引 (Y)
TRIGGERS 导出触发器 (Y)
ROWS 导出数据行 (Y)
LOG 屏幕输出的日志文件
NOLOGFILE 不使用日志文件(N)
NOLOG 屏幕上不显示日志信息(N)
LOG_WRITE 日志信息实时写入文件: 是(Y),否(N)
DUMMY 交互信息处理: 打印(P), 所有交互都按YES处理(Y),NO(N)
PARFILE 参数文件名
FEEDBACK 每 x 行显示进度 (0)
COMPRESS 导出数据是否压缩 (N)
ENCRYPT 导出数据是否加密 (N)
ENCRYPT_PASSWORD 导出数据的加密密钥
ENCRYPT_NAME 加密算法的名称
FILESIZE 每个转储文件的最大大小
FILENUM 一个模板可以生成的文件数
DROP 导出后删除原表,但不级联删除 (N)
DESCRIBE 导出数据文件的描述信息,记录在数据文件中
LOCAL MPP模式下登录使用MPP_LOCAL方式(N)
HELP 打印帮助信息
4.2、创建定时任务,每天02点执行一次
root@dmdsc01:/home/dmdba/dbbak# crontab -e
00 02 * * * /home/dmdba/dbbak/back.sh
通过以下命令查看定时任务情况
查看定时任务服务是否启动:service cron status
启动定时任务服务:service cron start
停止定时任务服务:service cron stop
重启定时任务服务:service cron restrat
五、查看执行情况
root@dmdsc01:/home/dmdba/dbbak# ls -lrth
总用量 405M
-rwxr-xr-x 1 root root 674 5月 22 21:42 back.sh
-rw-r--r-- 1 root root 405M 5月 22 21:53 PI6000-20210522215101.tar.gz