Linux下MongoDB自動バックアップ

1577 ワード

一、MongoDBバックアップディレクトリの作成


mkdir -p /data/mongodb_bak/mongodb_bak_now
mkdir -p /data/mongodb_bak/mongodb_bak_list

二、新規MongoDBデータベースバックアップスクリプト(/data/mongodb_bak/MongoDB_bak.sh)

#!/bin/bash
#backup MongoDB

#mongodump 
DUMP=/usr/local/mongodb/bin/mongodump
# 
OUT_DIR=/data/mongodb_bak/mongodb_bak_now
# 
TAR_DIR=/data/mongodb_bak/mongodb_bak_list
# 
DATE=`date +%Y_%m_%d`
# 
DB_USER=user
# 
DB_PASS=123
#DAYS=15 15 , 15 
DAYS=15
# 
TAR_BAK="mongodb_bak_$DATE.tar.gz"

cd $OUT_DIR
rm -rf $OUT_DIR/*
mkdir -p $OUT_DIR/$DATE
# 
$DUMP -h 15.62.32.112:27017 -u $DB_USER -p $DB_PASS --authenticationDatabase "admin" -o $OUT_DIR/$DATE
# .tar.gz 
tar -zcvf $TAR_DIR/$TAR_BAK $OUT_DIR/$DATE
# 15 
find $TAR_DIR/ -mtime +$DAYS -delete

exit

三、ファイルの属性を変更し、実行可能にする


chmod +x MongoDB_bak.sh

四、変更/etc/crontab、計画タスクの追加


vi/etc/crontab
#毎週土曜日の夜20:30からMongoDBデータベースバックアップスクリプトの実行
30 20 * * 6 root/data/mongodb_bak/MongoDB_bak.sh 

付録:MongoDBデータベースリカバリ


#すべてのデータベースを復元mongorestore-u$DB_USER -p $DB_PASS --authenticationDatabase "admin"--noIndexRestore --dir/data/mongodb_bak/mongodb_bak_now/2016_12_17/#単一データベースmongorestore-u$DB_を復元USER -p $DB_PASS --authenticationDatabase "admin"--noIndexRestore -d dbname --dir/data/mongodb_bak/mongodb_bak_now/2016_12_17/dbname
パラメータの一部の説明
--dropパラメータ:データを回復する前に元のデータを削除し、データの重複を避ける
--noIndexRestoreパラメータ:データの復元時にインデックスを作成しない
--dirパラメータ:データベースバックアップディレクトリ
-dパラメータ:リカバリするデータベース名の後に続く