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