最近、いくつかのデータをMongoDBに移植し、できればcronジョブからの毎日のバックアップの実行を検討しており、バックアップの1つをセカンダリmongoデータベースに復元しています。
システムは次のように設定されています。
Mongo docsを確認し、cronジョブサーバーにログインして、次のコマンドを実行しようとしました:(セキュリティのためにユーザー名、ホスト、パスワードを変更しました。実際にはlocalhostに接続していません)
mongodump --Host 127.0.0.1/development --port 27017 --username user --password pass --out /opt/backup/mongodump-2013-10-07-1
次のメッセージが表示されます。
Mon Oct 7 10:03:42開発のシードを含むレプリカセット127.0.0.1の新しいレプリカセットモニターの開始:27017
月10月7日10:03:42がシード開発に正常に接続しました:レプリカセット127.0.0.1の27017
月10月7日10:03:42警告:ノード:development:27017はセットの一部ではありません:127.0.0.1 ismaster:{ismaster:true、maxBsonObjectSize:16777216、ok:1.0}
月10月7日10:03:44レプリカセット127.0.0.1のレプリカセットモニターが開始されました。アドレスは127.0.0.1/
月10月7日10:03:44 [ReplicaSetMonitorWatcher]開始[127.0.0.1/development:27017]に接続できませんでした127.0.0.1/development:27017の設定に失敗しました
mongo -u -p ip/development
を使用してmongoデータベースに接続できることを確認しました
最終的な目標は、運用データベースからデータをダンプし、ステージングデータベースに保存することです。これらの2つのデータベースは両方とも同じボックスにありますが、違いがある場合は、テスト目的で開発テストデータのバックアップを取得しようとしています。
mongo
クライアントは MongoDB接続文字列URI を解析できるため、すべての接続パラメーターを個別に指定する代わりに、単一の接続文字列URIを渡すことができます。
あなたの場合、接続URIをHost
として渡そうとしていますが、127.0.0.1/development
は有効なホスト名ではありません。つまり、database
とは別にHost
パラメーターを指定する必要があります。
mongodump --Host 127.0.0.1 -d development --port 27017 --username user --password pass --out /opt/backup/mongodump-2013-10-07-1
これは私のために働いた。
リファレンス: https://docs.mongodb.com/manual/reference/program/mongodump
構文1:
mongodump --Host <hostname:port> --db <database> --username <username> --password <password> --out <path>
構文2:
mongodump -h <hostname:port> -d <database> -u <username> -p <password> -o <path>
例1:
mongodump --Host 127.0.0.1:27017 --db db_app --username root --password secret --out /backup/db/app-17-03-07
例2:
mongodump -h 127.0.0.1:27017 -d db_app -u root -p secret -o /backup/db/app-17-03-07
Mongodumpで--uri
を使用できます
mongodump --uri "mongodb://usersname:[email protected]:27100/dbname?replicaSet=replica_name&authSource=admin" --out "C:\Umesh"
すべてのコレクションはoutフォルダー内に保存され、データベース名としてディレクトリ名が作成され、すべてのコレクションはbsonであり、メタデータはjson形式で保存されます。
復元用
mongorestore --uri "mongodb://usersname:[email protected]:27100/dbname?replicaSet=replica_name&authSource=admin" -d dbname mongodbumppath
これを試してみてください。
mongodump --Host remotehostip:port --db dbname -u username -p password
ノードサーバーからローカルマシンにコレクションをエクスポートする例を次に示します。
Host : xxx.xxx.xxx.xx
Port :27017
Username:”XXXX”
Password :”YYYY”
AuthDB : “admin”
“DB”: “mydb”
D:\mongodb-backup>mongodump -h xxx.xxx.xxx.xxx –port 27017 -u “XXXX” -p “YYYY” –authenticationDatabase “admin” –db “mydb”
Gzipを使用して、1つのコレクションのバックアップを作成し、その場でバックアップを圧縮することもできます
mongodump --db somedb --collection somecollection --out - | gzip > collectiondump.gz
または、ファイル名に日付がある場合:
mongodump --db somedb --collection somecollection --out - | gzip > dump_`date "+%Y-%m-%d"`.gz