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パラメータ:リカバリするデータベース名の後に続く
#!/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パラメータ:リカバリするデータベース名の後に続く
vi/etc/crontab
#毎週土曜日の夜20:30からMongoDBデータベースバックアップスクリプトの実行
30 20 * * 6 root/data/mongodb_bak/MongoDB_bak.sh