mongodbデータベースバックアップ
2482 ワード
1.mongodbバックアップ
不測の事態が発生した場合、データベースのバックアップは非常に重要であり、問題が発生した場合、バックアップによってデータをリカバリする必要があります.
バックアップの一般的な方法は、次の2つです.
2.直接copyデータディレクトリ
mongodbのすべてのデータはデータディレクトリの下に配置され、デフォルトは/data/db/.
データベースをバックアップするには、データディレクトリの下にあるすべてのファイルcopyを1部だけコピーすればいいです.
しかし、これはデータベースサービスが先に停止する必要があります.サービスが実行時にこのディレクトリを直接バックアップした場合、一部のデータがバッファに残っているため、ファイルが破損する可能性があります.
オンラインで実行されているサービスでは、データベースのバックアップを停止することは不可能です.次は、バックアップのためにサービスを停止しないことです.
3. mongodump
mongodumpはmongodbに付属するツールで、実行時にバックアップできます.
mongodumpは、実行中のMongodbをクエリーし、クエリーしたドキュメントをディスクに書き込みます.
3.1 mongodump実行オプション
コマンドラインからオプションパラメータを問い合わせることができます./bin/mongodump --help
共通パラメータ:
-h [ --host ] arg
運転するホスト
--port arg
実行中のポート
-u [ --username ] arg
username
-p [ --password ] arg
password
--dbpath arg
mongodbのデータベースディレクトリに直接アクセスしてバックアップします.
mongodが実行中でこのパラメータが使用できない場合は、データベース・ディレクトリがロックされます.
-d [ --db ] arg
Database to useバックアップするデータベースは、すべてのデータベースを空にします.
-c [ --collection ] arg
collection to use(some commands)は、すべてを空で表す集合を指定します.
-o[--out]arg(=dump)output directory or"-"for stdoutバックアップディレクトリに保存されているアドレス
-q [ --query ] arg
json queryはクエリーを指定できます
次のようになります../bin/mongodump --host 127.0.0.1 --port 9980 --db news --out /home/work/backup/;
レプリカセットreplica set方式の場合、hostはレプリカセット名とhost、ポートmongodump --host repl0/mongo0.example.net,mongo0.example.net:27018,mongo1.example.net,mongo2.example.net
3.2バックアップ・スクリプト
計画タスクを使用してデータベースをバックアップし、1時間に1回バックアップします.
作成されたバックアップディレクトリは次のとおりです.
/home/gang/backup/mongodb/2014-03-29-10
shellスクリプト:#! /bin/sh
# @author bj1602#163.com
# @file backup.sh
# @desc mongodb,
set -x
hostname="127.0.0.1";
port="9980";
db="news";
log_date=`date +"%F-%H"`;
log_dir="/home/gang/backup/mongodb/$log_date";
mongo_dir="/home/gang/mongo/";
mkdir -p $log_dir;
echo `date +"%F %H:%M:%S"`;
cd $mongo_dir;
./bin/mongodump --host $hostname --db $db --port $port --out $log_dir;
echo `date +"%F %H:%M:%S"`;
mongodbのすべてのデータはデータディレクトリの下に配置され、デフォルトは/data/db/.
データベースをバックアップするには、データディレクトリの下にあるすべてのファイルcopyを1部だけコピーすればいいです.
しかし、これはデータベースサービスが先に停止する必要があります.サービスが実行時にこのディレクトリを直接バックアップした場合、一部のデータがバッファに残っているため、ファイルが破損する可能性があります.
オンラインで実行されているサービスでは、データベースのバックアップを停止することは不可能です.次は、バックアップのためにサービスを停止しないことです.
3. mongodump
mongodumpはmongodbに付属するツールで、実行時にバックアップできます.
mongodumpは、実行中のMongodbをクエリーし、クエリーしたドキュメントをディスクに書き込みます.
3.1 mongodump実行オプション
コマンドラインからオプションパラメータを問い合わせることができます./bin/mongodump --help
共通パラメータ:
-h [ --host ] arg
運転するホスト
--port arg
実行中のポート
-u [ --username ] arg
username
-p [ --password ] arg
password
--dbpath arg
mongodbのデータベースディレクトリに直接アクセスしてバックアップします.
mongodが実行中でこのパラメータが使用できない場合は、データベース・ディレクトリがロックされます.
-d [ --db ] arg
Database to useバックアップするデータベースは、すべてのデータベースを空にします.
-c [ --collection ] arg
collection to use(some commands)は、すべてを空で表す集合を指定します.
-o[--out]arg(=dump)output directory or"-"for stdoutバックアップディレクトリに保存されているアドレス
-q [ --query ] arg
json queryはクエリーを指定できます
次のようになります../bin/mongodump --host 127.0.0.1 --port 9980 --db news --out /home/work/backup/;
レプリカセットreplica set方式の場合、hostはレプリカセット名とhost、ポートmongodump --host repl0/mongo0.example.net,mongo0.example.net:27018,mongo1.example.net,mongo2.example.net
3.2バックアップ・スクリプト
計画タスクを使用してデータベースをバックアップし、1時間に1回バックアップします.
作成されたバックアップディレクトリは次のとおりです.
/home/gang/backup/mongodb/2014-03-29-10
shellスクリプト:#! /bin/sh
# @author bj1602#163.com
# @file backup.sh
# @desc mongodb,
set -x
hostname="127.0.0.1";
port="9980";
db="news";
log_date=`date +"%F-%H"`;
log_dir="/home/gang/backup/mongodb/$log_date";
mongo_dir="/home/gang/mongo/";
mkdir -p $log_dir;
echo `date +"%F %H:%M:%S"`;
cd $mongo_dir;
./bin/mongodump --host $hostname --db $db --port $port --out $log_dir;
echo `date +"%F %H:%M:%S"`;
./bin/mongodump --help
./bin/mongodump --host 127.0.0.1 --port 9980 --db news --out /home/work/backup/;
mongodump --host repl0/mongo0.example.net,mongo0.example.net:27018,mongo1.example.net,mongo2.example.net
#! /bin/sh
# @author bj1602#163.com
# @file backup.sh
# @desc mongodb,
set -x
hostname="127.0.0.1";
port="9980";
db="news";
log_date=`date +"%F-%H"`;
log_dir="/home/gang/backup/mongodb/$log_date";
mongo_dir="/home/gang/mongo/";
mkdir -p $log_dir;
echo `date +"%F %H:%M:%S"`;
cd $mongo_dir;
./bin/mongodump --host $hostname --db $db --port $port --out $log_dir;
echo `date +"%F %H:%M:%S"`;