本文章主要是为了项目中可以定时备份生产或测试环境数据库,并持久化到本地,个人测试完全可行,当然只为了想考虑这种方式的人提供拙见,方法肯定还有。
文章目录
前言
环境:linux、Xftp 7、
利用Xftp 7自带的远程访问属性和定时属性,实现定时从linux拉取备份好的文件(当然最好是打包压缩好的,这样速度更加快捷)
一、前期准备
Xftp 7是一种灵活且轻量级的SFFT/FTP客户端,用于需要安全地通过网络传输文件的用户。
使用Xftp7软件能让文件传输被简化,使用拖拽、直接编辑和增强的同步,这些特性在直观的标签界面中被封装。
它可以帮助你的电和远程计算机进行文件同步,支持Windows和UNIX/Linux之间传输,完美支持SFTP、FTP传输,使用简单、快捷深度用户喜爱,同时Xftp7中文版具有很好的安全性,你完全可以放心自己的数据在传输中不被泄漏。
- 下载地址:Xftp 7安装
二、具体步骤
1.编写bash脚本
内容如下:
一、复杂版(能满足大多数人要求)
####bak_dm.sh脚本起始###
#/bin/bash
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/dm8/bin"
export DM_HOME="/dm8"
export PATH=$PATH:$DM_HOME/bin:$DM_HOME/tool
#当天年月日
CUR_DATE=`date +'%Y%m%d%H%M%S'`
#获取当天是星期几
WEEKDAY_INDEX=`date +'%w'`
#逻辑备份全库
dexp sysdba/***@localhost:5236 file=dexp_${CUR_DATE}.dmp directory=/dm8/backup/dmp log=dexp_${CUR_DATE}.log full=y
#在线物理备份全库、归档日志,每周六全量备份,其他日期增量备份。同时删除30天前的历史备份集
if [[ $WEEKDAY_INDEX -eq 6 ]]; then
disql sysdba/***@localhost:5236<<EOF
backup database full backupset '/dm8/backup/full/dmdb01_full_${CUR_DATE}';
SF_BAKSET_BACKUP_DIR_ADD('DISK','/dm8/backup/full');
call sp_db_bakset_remove_batch('DISK',now()-30);
EOF
else
disql sysdba/***@localhost:5236<<EOF
backup database increment with backupdir '/dm8/backup/full' backupset '/dm8/backup/incr/dmdb01_incr_${CUR_DATE}';
SF_BAKSET_BACKUP_DIR_ADD('DISK','/dm8/backup/incr');
call sp_db_bakset_remove_batch('DISK',now()-30);
EOF
fi
#备份归档
disql sysdba/***@localhost:5236<<EOF
backup archivelog all backupset '/dm8/backup/arch/arch_full_${CUR_DATE}';
SF_BAKSET_BACKUP_DIR_ADD('DISK','/dm8/backup/arch');
call SP_ARCH_BAKSET_REMOVE_BATCH('DISK',now()-30);
EOF
#删除30天前的dmp备份文件
find /dm8/backup/dmp -mtime 30 -type f -name "*.dmp" -exec rm -rf {} \;
######bak_dm.sh脚本结束#####
二、简易版(保存7天的备份数据)
####bak_dm.sh脚本起始###
#!/bin/bash
source /etc/profile
backup_dir=/root/db_backup
log_date=`date +%Y-%m-%d`
/home/dmdba/dmdbms/bin/dexp SYSDBA/SYSDBA directory=${backup_dir} file=scgj.dmp log=scgj.log SCHEMAS=SYSDBA
tar -czvf ${backup_dir}/scgj_${log_date}.tar.gz ${backup_dir}/scgj.dmp ${backup_dir}/scgj.log --remove-files
# 删除7天以前的备份
find ${backup_dir}/ -name "scgj_*.tar.gz" -mtime +7 -exec rm -rf "{}" \;
######bak_dm.sh脚本结束#####
三、简易版(保存最近1天的备份数据)
####bak_dm.sh脚本起始###
#!/bin/bash
# 进入备份的目录,并且删除最近一次备份的文件
cd /app/bak_dm_sql/time_bak && rm -f ./db_bak.dmp
# 开始备份
/home/dmdba/dmdbms/bin/dexp userid=SYSDBA/SYSDBA file=db_bak.dmp log=db_str.log directory=/app/bak_dm_sql/time_bak/ SCHEMAS="SYSDBA" PARALLEL=2
# 备份结束执行此命令打包
tar -zcvf db_newest.tar.gz ./db_bak.dmp
######bak_dm.sh脚本结束#####
- 配置执行权限:
chmod +x /dm8/backup/bak_dm.sh
- 配置定时任务:
#配置定时任务,每天晚上22点定时执行备份脚本
crontab -e
0 22 * * * su - dmdba -c "/dm8/backup/bak_dm.sh" >>/dm8/backup/bak_dm.log 2>&1
- 重启定时任务生效:
service crond restart
- 查看定时任务状态:
查看crontab状态:
service crond status
2.xftp7配置
一、远程连接信息绑定:
参考文章:xftp7连接信息配置指南
二、定时任务配置:
1、定时任务位置:
2、创建定时任务配置持久化目录
3、执行定时任务
3.效果展示
持久化到本地了!!
总结
以上就是今天主要实现的效果
如果有什么疑问和要求可以在评论下方评论,我会积极协助处理哈~