mongodump および mongorestore を使用して、自主管理 MongoDB データベースから ApsaraDB for MongoDB レプリカセットインスタンスへの完全オフライン移行を実行します。この手法では、ソースデータベースの完全なスナップショットをエクスポートし、宛先インスタンスに復元します。スナップショット取得後は、増分同期は行われません。
mongodumpおよびmongorestoreは、mongodumpの実行時におけるすべてのデータを移行します。その後のソースデータベースへの書き込みは移行されません。ダウンタイムを最小限に抑えて移行する場合は、代わりに Data Transmission Service (DTS) をご使用ください。詳細については、「DTS を使用した、レプリカセットアーキテクチャを採用する自主管理 MongoDB データベースから ApsaraDB for MongoDB へのデータ移行」をご参照ください。
すべての移行および同期オプションの概要については、「データ移行および同期」をご参照ください。
仕組み
一貫性のあるスナップショットを確保するため、ソースデータベースへの書き込みを停止します。
mongodumpを実行して、すべてのデータベースをローカルのダンプディレクトリにエクスポートします。ソースサーバーと宛先レプリカセットインスタンス間のネットワークアクセスを設定します。
mongorestoreを実行して、ダンプファイルをレプリカセットインスタンスにインポートします。移行されたデータを検証した後、アプリケーションを宛先インスタンスに切り替えます。
前提条件
開始する前に、以下の条件を満たしていることを確認してください。
自主管理 MongoDB データベースと同じバージョンの
mongodumpおよびmongorestoreがインストールされていること。インストール手順については、MongoDB ウェブサイトの「MongoDB のインストール」をご参照ください。自主管理 MongoDB データベースの使用中のストレージ容量を[上回るストレージ容量]を持つ送信先レプリカセットインスタンス。インスタンスをスペックアップするには、「インスタンスの構成を変更する」をご参照ください。
mongodumpおよびmongorestoreは、ソースサーバーまたはソースへのネットワークアクセスを持つ別途のサーバー上で実行してください(mongo シェル内では実行しないでください)。
注意事項
mongodumpを実行する前に、ソースデータベースへのすべての書き込みを停止してください。mongodump実行後の書き込みは移行されません。以前に
mongodumpを実行済みの場合、ダンプディレクトリ内のバックアップファイルを別のディレクトリに移動し、再実行前にダンプディレクトリが空であることを確認してください。空でない場合、次回のデータベースバックアップ時に過去のバックアップファイルが上書きされます。
ステップ 1:自主管理 MongoDB データベースのバックアップ
自主管理 MongoDB データベースが配置されているサーバー(またはソースへのネットワークアクセスを持つ別途のサーバー)で mongodump を実行します。
mongodump --host <mongodb_host> --port <port> -u <username> --authenticationDatabase <database>以下のプレースホルダーを置き換えてください。
| プレースホルダー | 説明 | 例 |
|---|---|---|
<mongodb_host> | ソースサーバーの IP アドレスまたはホスト名 | 127.0.0.1 |
<port> | 自主管理 MongoDB データベースのサービスポート | 27017(デフォルト) |
<username> | ソースへの接続に使用するデータベースアカウント | test |
<database> | 指定アカウントの認証データベース | admin |
例:
mongodump --host 127.0.0.1 --port 27017 -u test --authenticationDatabase adminEnter password: プロンプトが表示されたら、データベースパスワードを入力し、Enter キーを押してください。入力中のパスワードはマスクされます。
mongodump の実行が完了すると、バックアップファイルが現在の作業ディレクトリ内の dump ディレクトリに保存されます。
ステップ 2:レプリカセットインスタンスへのデータ移行
2.1 プライマリノードの接続文字列の取得
宛先レプリカセットインスタンスのプライマリノードのパブリックまたは内部接続文字列を取得します。詳細については、「レプリカセットインスタンスの接続についての概要」をご参照ください。
インターネット経由で接続する場合は、事前にパブリックエンドポイントを申請してください。詳細については、「ApsaraDB for MongoDB インスタンスのパブリックエンドポイントの申請」をご参照ください。
2.2 ソースサーバーの IP アドレスをホワイトリストに追加
ソースサーバーの IP アドレスを宛先レプリカセットインスタンスのホワイトリストに追加します。
イントラネット: ソースデータベースが配置されている Elastic Compute Service (ECS) インスタンスのプライベート IP アドレスを追加します。
インターネット: ソースサーバーのパブリック IP アドレスを追加します。
詳細については、「レプリカセットインスタンスのホワイトリストの設定」をご参照ください。
2.3 バックアップファイルをレプリカセットインスタンスに復元
ソースサーバーで mongorestore を実行し、すべてのバックアップファイルを宛先インスタンスにインポートします。
mongorestore --host <Primary_host> -u <username> --authenticationDatabase <database> <backup_directory>以下のプレースホルダーを置き換えてください。
| プレースホルダー | 説明 | 例 |
|---|---|---|
<Primary_host> | ポートを含むプライマリノードの接続文字列 | dds-bp19f409d7512****-pub.mongodb.rds.aliyuncs.com:3717 |
<username> | 宛先インスタンスのデータベースアカウント(初期アカウント: root) | test |
<database> | 指定アカウントの認証データベース。root アカウントの場合は admin | admin |
<backup_directory> | ステップ 1 で作成したダンプディレクトリへのパス | dump(デフォルト) |
例:
mongorestore --host dds-bp19f409d7512****-pub.mongodb.rds.aliyuncs.com:3717 -u test --authenticationDatabase admin dumpEnter password: プロンプトが表示されたら、データベースパスワードを入力し、Enter キーを押してください。入力中のパスワードはマスクされます。
移行の検証
mongorestore の実行が完了したら、トラフィックの切り替え前にデータが正しく存在し、完全であることを確認してください。
アプリケーションの切り替え
アプリケーションの接続文字列を宛先レプリカセットインスタンスを指すように更新してください。影響を最小限に抑えるため、トラフィックの切り替えは非ピーク時間帯に実施してください。