mongo_bak.sh数据目录备份方式:
#!/bin/bash
PORT=27017
BACKUP_DIR=
's3://release/repository/环境/mongo_bak/'
DB_NAME=
'mongod***'
DATE=`
date
+%Y_%m_%d`
TAR_BAK=
"mongod${PORT}_bak_$DATE.tar.gz"
stop_mongo(){
expect<<- END
set
time
30
spawn mongo --port $PORT
expect
"*> "
send
"use admin\r"
expect
"*> "
send
"db.shutdownServer();\r"
expect
"*> "
send
"exit\r"
expect eof
END
}
start_mongo(){
/sbin/service
$DB_NAME start
}
stop_mongo &&
echo
"mongo stop ok..."
if
[ $? -
eq
0 ];
then
cd
/opt/mongo/
&&
rm
-rf ${DB_NAME}_*.
tar
.gz &&
tar
fcz ${TAR_BAK} ${DB_NAME} && aws s3
cp
${TAR_BAK} ${BACKUP_DIR} && start_mongo &&
echo
"mongo start ok..."
else
echo
"backup failed"
start_mongo
fi
mongodump备份方式:
#!/bin/sh
#backup mongodb all database
DUMP=
/usr/local/mongodb/bin/mongodump
#mongodump备份文件执行路径
OUT_DIR=
/opt/backup/mongod_bak/mongod_bak_now
#临时备份目录
TAR_DIR=
/opt/backup/mongod_bak/mongod_bak_list
#备份存放路径
DATE=`
date
+%Y_%m_%d`
#获取当前系统时间
DB_USER=dba
#数据库账号
DB_PASS=dba
#数据库密码
DAYS=3
#DAYS=7代表删除7天前的备份,即只保留最近7天的备份
TAR_BAK=
"mongod_bak_$DATE.tar.gz"
#最终保存的数据库备份文件名
cd
$OUT_DIR
sudo
rm
-rf $OUT_DIR/*
sudo
mkdir
-p $OUT_DIR/$DATE
sudo
$DUMP -u $DB_USER -p $DB_PASS -o $OUT_DIR/$DATE
#备份全部数据库
tar
-zcvf $TAR_DIR/$TAR_BAK $DATE
#压缩为.tar.gz格式
find
$TAR_DIR/ -mtime +$DAYS -delete
#删除7天前的备份文件
mysql备份:
#!/bin/bash
DIR=
/opt/platform/backup/mysql_bak
USER=backup
PASSWD=backup
DATE=`
date
+%Y_%m_%d`
IP=
'**.**.**.**'
DATABASES=`mysql -e
"show databases;"
-h$IP -u$USER -p$PASSWD |
grep
-Ev
"Database|information_schema|mysql|performance_schema"
`
DAYS=5
AWS_DIR=
"s3://release/repository/***/mysql_bak/"
for
i
in
$DATABASES
do
echo
$i
mysqldump -h$IP -u$USER -p$PASSWD $i|
gzip
> $DIR/$i-$DATE.gz
aws s3
cp
$DIR/$i-$DATE.gz $AWS_DIR
done
find
$DIR/ -mtime +$DAYS -delete
crontab
0 1 * * *
/bin/bash
/opt/backup/mongo_bak
.sh >
/dev/null
2>&1
30 1 * * *
/bin/bash
/opt/platform/backup/mysql_bak
.sh >
/dev/null
2>&1