クエリ可能なレガシーバックアップからのデータベースの復元
重要
レガシーバックアップの廃止
2020 年 3 月 23 日以降、すべての新しいクラスターが使用できるのはクラウドバックアップのみです。
5.0 にアップグレードすると、バックアップ システムがレガシーバックアップに設定されている場合、クラウドバックアップにアップグレードされます。このアップグレード後:
既存のレガシーバックアップのスナップショットはすべて引き続き利用できますが、 保持ポリシー に従い、時間の経過とともに期限が切れます。
バックアップ ポリシーがデフォルト スケジュールにリセットされます。レガシーバックアップでカスタム バックアップ ポリシーを設定していた場合は、 クラウドバックアップに関するドキュメントに記載されている手順に従ってポリシーを再作成する必要があります。
Atlas は、レガシーバックアップスナップショットをクエリすることでのデータベースの復元をサポートしています。
重要
Atlas はクラウドバックアップのクエリをサポートしていません。
クエリ可能なバックアップのスナップショットを使用して、データベースのデータをエクスポートし、ターゲットの配置に復元できます。 次の手順では、Atlas が提供するトンネルを介してクエリ可能なバックアップのインスタンスに接続します。
注意
ある Atlas クラスターから別の Atlas クラスターにデータを復元するには、ソース クラスターとターゲット クラスターを含む Atlas プロジェクトに対して Project Owner
ロールが必要です。
前提条件
重要
同じデータベースに復元する 場合は、復元中にのみクライアント操作を停止する必要があります。
復元中のクライアント操作
復元中に、ターゲット Atlas クラスターがクライアント リクエストを受信しないことを確認する必要があります。 次のユースケースが適用されます。
同じデータベースに復元する場合は、復元中にクライアントの操作を停止する必要があります。
別のデータベースに復元する場合、クライアント アプリケーションを停止する必要はありません。 この場合は、新しい Atlas クラスターに復元し、新しい配置が実行されたら、その新しいクラスターを使用するようにアプリケーションを再構成します。
手順
クエリ可能なスナップショットへのバックアップ トンネルを開きます。
クエリするスナップショットを選択し、[Next] をクリックします。
Start スナップショットをクエリするプロセス。 Atlas のパスワードの入力を求められます。
クエリ可能なスナップショットへの接続方法としてBackup Tunnelを選択します。
Platform ] を選択します。
[Download Backup Tunnel] をクリックします。
ダウンロードしたファイルを解凍します。
ターミナルまたはコマンド プロンプトを開き、解凍された <tunnel> ディレクトリに移動します。実行可能ファイルを実行してトンネルを開始します。
トンネルのデフォルト ポートは
27017
です。 ポートを変更するには、次の例のように--local
フラグを使用します。./<tunnel executable> --local localhost:27020 注意
ポートを変更する場合は、接続時にポート情報を含める必要があります。
mongodump
クエリ可能なバックアップから単一のデータベースをエクスポートするには、 を使用します。
- データベースからデータをエクスポートするには、次の手順に従います。
トンネルに接続するには、次の
mongodump
オプションを含めます。--port
トンネルのポートに設定します。--db
エクスポートするデータベースの名前に設定します。--out
空のディレクトリに設定して、データ ダンプを出力します。重要
mongodump
を実行しているユーザーが指定されたディレクトリに書込みできるようにします。
mongodump --port <port for tunnel> --db <single-database> --out <data-dump-path> たとえば、ポート
27020
で動作しているトンネルに接続して、test
データベースから/mydata/restoredata/
ディレクトリにデータをダンプするには、次の手順に従います。mongodump --port 27020 --db test --out /mydata/restoredata/ mongodump
はtest
データベースファイルを/mydata/restoredata/test/
ディレクトリに出力します。mongodump
が$PATH
にない場合は、コマンドを実行するときにツールのパスを指定します。
mongorestore
単一データベースを復元するには、 を使用します。
- 単独のデータベースを復元するには:
次の
mongorestore
オプションを含めます。注意
Atlas クラスターに復元するには、
--uri
オプションを使用して DNS シードリスト接続文字列に接続することを推奨します。--uri
宛先クラスターの接続文字列に設定します。--db
宛先データベースの名前に設定します。
注意
パスワードに特殊文字が含まれている場合は、パーセント エンコードする必要があります。
オプションとして、データベースがすでに存在する場合は、宛先クラスター内のデータベースを削除するために
--drop
オプションを含めることができます。
mongorestore --uri "mongodb://username:password@mongodb0.example.com:<Port>,mongodb1.example.com:<Port1>,mongodb2.example.com:<Port2>" --ssl --db <destination database> <data-dump-path/database> --drop
mongorestore --uri "mongodb+srv://username:password@cluster0.example.mongodb.net" --db <destination database> <data-dump-path/database> --drop
注意
Ubuntu 18.04でmongodump
またはmongorestore
を使用している場合、 SRV 接続文字列( mongodb+srv://
形式)を--uri
オプションとともに使用すると、 cannot unmarshal DNS
エラー メッセージが表示されることがあります。 その場合は、次のいずれかのオプションを代わりに使用します。
非 SRV 接続string (
mongodb://
形式)と--uri
オプション直接接続するホストを指定するための
--host
オプション
たとえば、/mydata/restoredata/test
ディレクトリから新しいデータベース restoredTest
に復元するには、次のように行います。
mongorestore --uri "mongodb://username:password@00.foo.mongodb.net:27017,01.foo.mongodb.net:27017,02.foo.mongodb.net:27017" --ssl --db restoredTest /mydata/restoredata/test --drop
この例では、宛先レプリカセットのプライマリまたは宛先シャーディングされたクラスターのmongosがポート27017
でリッスンすることを前提としています。
mongorestore --uri "mongodb+srv://username:password@cluster0.example.mongodb.net" --db restoredTest /mydata/restoredata/test --drop