Oracle
备份Oracle
#!/bin/bash
source /home/oracle/.bash_profile
#设置中文防止乱码
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
#获取时间戳
export BAKUPTIME=`date +%Y%m%d%H%M%S`
#dump文件生成目录
export DATA_DIR=/data/backup_oracle/dump
#压缩文件存放目录
export TAR_DIR=/data/backup_oracle/ywdatabak
cd $DATA_DIR
echo "Starting bakup..."
echo "Bakup file path $DATA_DIR/db_expdp_$BAKUPTIME.dmp"
expdp sn_你要备份的数据库名称/sn_你要备份的数据库名称 directory=bak dumpfile=zy_sn_你要备份的数据库名称_$BAKUPTIME.dump logfile=zy_sn_你要备份的数据库名称_$BAKUPTIME.log
expdp sd_你要备份的数据库名称/sd_你要备份的数据库名称 directory=bak dumpfile=zy_sd_你要备份的数据库名称_$BAKUPTIME.dump logfile=zy_sd_你要备份的数据库名称_$BAKUPTIME.log
expdp ml_你要备份的数据库名称/ml_你要备份的数据库名称 directory=bak dumpfile=zy_ml_你要备份的数据库名称_$BAKUPTIME.dump logfile=zy_ml_你要备份的数据库名称_$BAKUPTIME.log
expdp gt_你要备份的数据库名称/gt_你要备份的数据库名称 directory=bak dumpfile=zy_gt_你要备份的数据库名称_$BAKUPTIME.dump logfile=zy_gt_你要备份的数据库名称_$BAKUPTIME.log
expdp lz_你要备份的数据库名称/lz_你要备份的数据库名称 directory=bak dumpfile=zy_lz_你要备份的数据库名称_$BAKUPTIME.dump logfile=zy_lz_你要备份的数据库名称_$BAKUPTIME.log
expdp zy_你要备份的数据库名称/zy_你要备份的数据库名称 directory=bak dumpfile=zy_zy_你要备份的数据库名称_$BAKUPTIME.dump logfile=zy_zy_你要备份的数据库名称_$BAKUPTIME.log
expdp gz_你要备份的数据库名称/gz_你要备份的数据库名称 directory=bak dumpfile=zy_gz_你要备份的数据库名称_$BAKUPTIME.dump logfile=zy_gz_你要备份的数据库名称_$BAKUPTIME.log
#expdp zn_你要备份的数据库名称/zn_你要备份的数据库名称 directory=bak dumpfile=zn_你要备份的数据库名称_$BAKUPTIME.dump logfile=zn_你要备份的数据库名称_$BAKUPTIME.log
#expdp zq_你要备份的数据库名称/zq_你要备份的数据库名称 directory=bak dumpfile=zq_你要备份的数据库名称_$BAKUPTIME.dump logfile=zq_你要备份的数据库名称_$BAKUPTIME.log
expdp gsst_uums/gsst_uums directory=bak dumpfile=zy_gsst_uums_$BAKUPTIME.dump logfile=zy_gsst_uums_$BAKUPTIME.log
expdp gsst_fms/gsst_fms directory=bak dumpfile=zy_gsst_fms_$BAKUPTIME.dump logfile=zy_gsst_fms_$BAKUPTIME.log
expdp gsst_wf/gsst_wf directory=bak dumpfile=zy_gsst_wf_$BAKUPTIME.dump logfile=zy_gsst_wf_$BAKUPTIME.log
#parallel=4 为并行度,有助于减少备份时间,但会增加CPU负载
echo "Starting tar..."
echo "Tar file path $TAR_DIR/SCOTT_$BAKUPTIME.tar.gz"
tar -zcvf $TAR_DIR/zy_sn_你要备份的数据库名称_$BAKUPTIME.tar.gz zy_sn_你要备份的数据库名称_$BAKUPTIME*
tar -zcvf $TAR_DIR/zy_zy_你要备份的数据库名称_$BAKUPTIME.tar.gz zy_zy_你要备份的数据库名称_$BAKUPTIME*
tar -zcvf $TAR_DIR/zy_sd_你要备份的数据库名称_$BAKUPTIME.tar.gz zy_sd_你要备份的数据库名称_$BAKUPTIME*
tar -zcvf $TAR_DIR/zy_ml_你要备份的数据库名称_$BAKUPTIME.tar.gz zy_ml_你要备份的数据库名称_$BAKUPTIME*
tar -zcvf $TAR_DIR/zy_gt_你要备份的数据库名称_$BAKUPTIME.tar.gz zy_gt_你要备份的数据库名称_$BAKUPTIME*
tar -zcvf $TAR_DIR/zy_lz_你要备份的数据库名称_$BAKUPTIME.tar.gz zy_lz_你要备份的数据库名称_$BAKUPTIME*
tar -zcvf $TAR_DIR/zy_gz_你要备份的数据库名称_$BAKUPTIME.tar.gz zy_gz_你要备份的数据库名称_$BAKUPTIME*
#tar -zcvf $TAR_DIR/gn_zq_你要备份的数据库名称_$BAKUPTIME.tar.gz zq_你要备份的数据库名称_$BAKUPTIME*
#tar -zcvf $TAR_DIR/gn_zn_你要备份的数据库名称_$BAKUPTIME.tar.gz zn_你要备份的数据库名称_$BAKUPTIME*
tar -zcvf $TAR_DIR/zy_gsst_uums_$BAKUPTIME.tar.gz zy_gsst_uums_$BAKUPTIME*
tar -zcvf $TAR_DIR/zy_gsst_fms_$BAKUPTIME.tar.gz zy_gsst_fms_$BAKUPTIME*
tar -zcvf $TAR_DIR/zy_gsst_wf_$BAKUPTIME.tar.gz zy_gsst_wf_$BAKUPTIME*
#SFTP配置信息
#用户名
USER=gssec_user_sftpadmin0y4
#密码
PASSWORD=Gssec_P@ssw0rd0y4
#待上传文件根目录
SRCDIR=/data/backup_oracle/ywdatabak
#SFTP目录
DESDIR=gssec_user_sftpadmin0y4/upload
#IP
IP=10.212.8.243
#端口
PORT=22
#获取文件
cd ${SRCDIR} ;
#目录下的文件
FILES=$(ls ${SRCDIR} | grep ${BAKUPTIME} | sed ':a;N;$!ba; s/\n/ /g')
for FILE in ${FILES}
do
echo ${FILE}
#发送文件 (关键部分) 复制出来,如有结尾有空格,请自行去掉
lftp -u ${USER},${PASSWORD} sftp://${IP}:${PORT} <<EOF
cd ${DESDIR}/
lcd ${SRCDIR}
put ${FILE}
by
EOF
done
echo "Bakup job is done!"
#历史文件保留7天
find $DATA_DIR -type f -mtime +7 -exec rm -rf {} \;
find $TAR_DIR -type f -mtime +7 -exec rm -rf {} \;
Copy
Mongo
备份Mongo
#!/bin/bash
export BAKUPTIME=`date +%Y%m%d%H%M%S`
export BAKUPDIR='/data/mongo_dmp'
export mongo_host='127.0.0.1'
export mongo_port='27017'
export db_name='gstj_internet'
export db_user='gstj_internet'
export db_pass='teekjhjOQTV9Oyhv'
mongodump -h ${mongo_host}:${mongo_port} -d ${db_name} -u ${db_user} -p ${db_pass} -o ${BAKUPDIR}/${db_user}/${BAKUPTIME}
cd ${BAKUPDIR}
tar -czvf ${BAKUPTIME}.tar.gz ${BAKUPTIME}
rm -rf ${BAKUPDIR}${BAKUPTIME}
# 删除过期数据
find ${BAKUPDIR} -type f -mtime +60 -exec rm -rf {} \;
Copy
还原Mongo
#!/bin/bash
# 导入之前检查变量
mongo_home='/data/mongodb'
mongo_host='127.0.0.1'
mongo_port='27017'
import_db='iebdc'
import_user='iebdc'
import_passwd='aQuyZC8ty9tQnkME9'
json_dir='/root/mongodb-iebdc/mongodb/'
json_files=$(ls ${json_dir})
for i in $json_files;do
${mongo_home}/bin/mongoimport -h ${mongo_host}:${mongo_port} -d ${import_db} -u ${import_user} -p ${import_passwd} ${json_dir}/${i}
#echo $i # 测试
done
Copy
MySQL
备份MySQL
/bin/bash
set -e
USER="backup"
PASSWORD="backup"
# 数据库数据目录 #
DATA_DIR="/data/mysql"
BIN_INDEX=$DATA_DIR"/mysql-bin.index"
# 备份目录 #
BACKUP_DIR="/data/backup/mysql"
BACKUP_LOG="/var/log/mysql/backup.log"
DATE=`date +"%Y%m%d"`
TIME=`date +"%Y%m%d%H"`
LOG_TIME=`date +"%Y-%m-%d %H:%M:%S"`
DELETE_BINLOG_TIME="7 day"
INCREMENT_INTERVAL="3 hour"
note() {
printf "[$LOG_TIME] note: $*\n" >> $BACKUP_LOG;
}
warning() {
printf "[$LOG_TIME] warning: $*\n" >> $BACKUP_LOG;
}
error() {
printf "[$LOG_TIME] error: $*\n" >> $BACKUP_LOG;
exit 1;
}
full_backup() {
local dbs=`ls -l $DATA_DIR | grep "^d" | awk -F " " '{print $9}'`
for db in $dbs
do
local backup_dir=$BACKUP_DIR"/full/"$db
local filename=$db"."$DATE
local backup_file=$backup_dir"/"$filename".sql"
if [ ! -d $backup_dir ]
then
mkdir -p $backup_dir || { error "创建数据库 $db 全量备份目录 $backup_dir 失败"; continue; }
note "数据库 $db 全量备份目录 $backup_dir 不存在,创建完成";
fi
note "full backup $db start ..."
mysqldump --user=${USER} --password=${PASSWORD} --flush-logs --skip-lock-tables --quick $db > $backup_file || { warning "数据库 $db 备份失败"; continue; }
cd $backup_dir
tar -cPzf $filename".tar.gz" $filename".sql"
rm -f $backup_file
chown -fR mysql:mysql $backup_dir
note "数据库 $db 备份成功";
note "full backup $db end."
done
}
increment_backup() {
local StartTime=`date "-d $INCREMENT_INTERVAL ago" +"%Y-%m-%d %H:%M:%S"`
local DELETE_BINLOG_END_TIME=`date "-d $DELETE_BINLOG_TIME ago" +"%Y-%m-%d %H:%M:%S"`
local dbs=`ls -l $DATA_DIR | grep "^d" | awk -F " " '{print $9}'`
mysql -u$USER -p$PASSWORD -e "purge master logs before '$DELETE_BINLOG_END_TIME'" && note "delete $DELETE_BINLOG_TIME days before log";
filename=`cat $BIN_INDEX | awk -F "/" '{print $2}'`
for i in $filename
do
for db in $dbs
do
local backup_dir=$BACKUP_DIR"/increment/"$db
local filename=$db"."$TIME
local backup_file=$backup_dir"/"$filename".sql"
if [ ! -d $backup_dir ]
then
mkdir -p $backup_dir || { error "创建数据库 $db 增量备份目录 $backup_dir 失败"; continue; }
note "数据库 $db 增量备份目录 $backup_dir 不存在,创建完成";
fi
note "increment backup $db form time $StartTime start ..."
mysqlbinlog -d $db --start-datetime="$StartTime" $DATA_DIR/$i >> $backup_file || { warning "数据库 $db 备份失败"; continue; }
note "increment backup $db end."
done
done
for db in $dbs
do
local backup_dir=$BACKUP_DIR"/increment/"$db
local filename=$db"."$TIME
local backup_file=$backup_dir"/"$filename".sql"
cd $backup_dir
tar -cPzf $filename".tar.gz" $filename".sql"
rm -f $backup_file
note "数据库 $db 备份成功";
done
}
case "$1" in
full)
full_backup
;;
increment)
increment_backup
;;
*)
exit 2
;;
esac
exit 1
Copy
目录备份
#!/bin/bash
#
#
# 时间
DATE=$(date '+%Y-%m-%d_%H_%M_%S')
# 备份目录
BACKUPDIR="/home/backups"
# 需要备份的目录
SORFILE=/opt
# 目标文件名
DESFILE=/home/backups/$SORFILE.$(date '+%Y-%m-%d_%H_%M_%S').zip
[ ! -d $BACKUPDIR ] && mkdir -p $BACKUPDIR
cd $BACKUPDIR
echo "start backup $SORFILE ..."
sleep 3
#echo "$DESFILE"
#tar cvf $DESFILE $SORFILE
#gzip -f .zip $DESFILE
zip -r $DESFILE $SORFILE &>/dev/null
if [ "$?" == "0" ]
then
echo $(date +%Y-%m-%d)" zip sucess">>backup.log
else
echo $(date +%Y-%m-%d)" zip failed">>backup.log
exit 0
fi
# 删除3天前的备份
find $BACKUPDIR -type f -ctime +3 | xargs rm -rf
893

被折叠的 条评论
为什么被折叠?



