ノート:

MongoDB Atlasまたはオンプレミスで実行されているMongoDBデータベースをOracle Autonomous JSON Databaseに移行します

イントロダクション

MongoDBは、柔軟なJSON形式のドキュメントでデータを作成および格納するために使用される一般的なオープンソース・データベースの1つです。つまり、フィールドはドキュメントごとに異なり、データ構造は時間の経過とともに変更できます。

世界有数のリレーショナル・マルチモデル・データベースであるOracleは、コンバージド・データベースと呼ばれ、JSONを処理する優れた機能を備えています。Oracleでは、v12cからのJSONのサポートが導入され、varchar2またはラージ・オブジェクト(LOB)として格納されたJSONデータ(キャラクタ・ラージ・オブジェクト(CLOB)/バイナリ・ラージ・オブジェクト(BLOB))。

MongoDBの課題:

OracleでJSONデータ型を使用する利点:

ノート: Oracle Cloud Infrastructure (OCI) GoldenGate Big Dataデプロイメント、ソース・データベースおよびターゲット・データベース間で接続が確立されていることを確認します。

目的

前提条件

タスク1: MongoDBバイナリのインストールおよびMongoDBサービスの起動

  1. レプリケーション設定用に3つのOCIコンピュート・インスタンスを作成し、データ・ディレクトリにブロック・ボリュームをアタッチします。

    イメージ

  2. 次のコマンドを使用して、yumリポジトリを更新し、MongoDBバイナリをダウンロードします。

    vi /etc/yum.repos.d/mongodb-enterprise-8.0.repo
    [mongodb-enterprise-8.0]
    name=MongoDB Enterprise Repository
    baseurl=https://repo.mongodb.com/yum/redhat/8/mongodb-enterprise/8.0/$basearch/
    gpgcheck=1
    enabled=1
    gpgkey=https://pgp.mongodb.com/server-8.0.asc
    sudo yum install -y mongodb-enterprise
    

    イメージ

  3. 次のコマンドを使用して、データ・ディレクトリを作成し、必要な権限を付与します。

    cd /data
    ls
    chmod 755 mongo
    cd
    chmod 755 -R /data/mongo
    chown mongod:mongod -R /data/mongo
    chmod 400 /etc/mongod.Keyfile
    chown mongod:mongod -R /etc/mongod.Keyfile
    

    イメージ

    イメージ

    ノート:セキュアな認証には、キーファイルが必要です。テストのために、open-sslコマンドを使用してキーファイルを生成できます。

  4. 次のコマンドを使用して、構成ファイルを作成します。

    cat /etc/mongod.conf
    

    イメージ

  5. 次のコマンドを使用して、selinuxを無効にし、mongodサービスを起動します。

    setenforce 0
    getenforce
    systemctl start mongod
    systemctl status mongod
    

    イメージ

  6. セカンダリ・ノードとして機能する残りの2つのノードで、同じ操作を実行します。

タスク2: MongoDBレプリカ・セットの作成

  1. 最初のノードに接続し、管理データベースに接続します。

  2. 次のコマンドを実行してレプリケーションを開始し、最初の管理ユーザーを作成します。このレプリケーション・ユーザーは、レプリケーションの構成および管理に使用されます。

    mongosh
    use admin
    

    イメージ

    rs.initiate()
    db.createUser({
    ...  user: "admin",
    ...  pwd: "password",
    ...  roles: [
    ...         { role: "root", db: "admin" }
    ...   ]
    ...  })
    

    イメージ

    db.auth("admin","password")
    rs.conf()
    

    イメージ

  3. 次のコマンドを使用して、残りの2つのノードを追加します。これらはセカンダリ・ノードとして追加されます。

    rs.add("10.0.1.163;27017")
    

    イメージ

    rs.add("10.0.1.51:27017")
    

    イメージ

  4. 次のコマンドを使用して、レプリカ・セットの構成およびステータスを確認します。

    db.auth("admin","password")
    rs.conf()
    

    イメージ

    rs.status()
    

    イメージ

    イメージ

    イメージ

    イメージ

    rs.printReplicationInfo()
    

    イメージ

タスク3: MongoDBレプリカ・セットへのデータのロード

  1. mongorestoreコマンドを使用して、ダンプをMongoDBレプリカ・セットにリストアします。

    mongorestore --username admin --password password dump/
    

    イメージ

    イメージ

    イメージ

    ノート:前述のダンプは、そのレプリカ・セットで実行されているすべてのデータベースに対してmongodumpコマンドを使用して、別のMongoDBレプリカ・セットから取得されました。

  2. 次のコマンドを実行して、すべてのデータベースおよびそれぞれのコレクションがMongoDBレプリカ・セットにリストアされているかどうかを確認します。

    mongosh
    use admin
    db.auth("admin","password")
    show dbs
    

    イメージ

タスク4: OCIでのOracle Autonomous JSON Databaseの構成

  1. OCIコンソールにログインし、Oracle DatabaseAutonomous Databaseに移動し、イメージに示すように次の情報を入力して自律型データベースを作成します。

    イメージ

    イメージ

    イメージ

    ノート: MongoDB互換性のため、ネットワーク・アクセスは、許可されたIPおよびVCNsのみからのセキュア・アクセスまたはプライベート・エンドポイント・アクセスのみに設定する必要があります。

  2. 「ツール構成の編集」をクリックし、MongoDB APIを有効にしてURLをコピーします。

    イメージ

    イメージ

    イメージ

    ノート:前述の接続文字列でユーザー名とパスワードを変更する必要があります。

タスク5: Oracle Autonomous JSON Databaseにアクセスし、必要なMongoDBツールをインストールするためのDatabase Client Machineの作成

  1. 次のコマンドを使用して、ウォレット・ファイルをダウンロードし、Oracle Autonomous JSON Databaseの接続を構成します。

    cat tnsnames.Oracle
    

    イメージ

    cat sqlnet.Ora
    

    イメージ

    イメージ

  2. 次のコマンドを使用して、接続用のMongoDBツールをダウンロードします。

    wget https://fastdl.mongodb.org/tools/db/mongodb-database-tools-rhel70-x86_64-100.5.2.tgz
    

    イメージ

    tar -xvf mongodb-database-toosl-rhel70-x86_64-100.5.2.tgz
    

    イメージ

    wget https://downloads.mongodb.com/compass/mongosh-1.3.1-linux-x64.tgz
    

    イメージ

    tar -xvf mongosh-1.3.1-linux-x64.tgz
    

    イメージ

  3. 次のコマンドを使用して、環境変数としてパスおよびURI (Oracle Autonomous Transaction Processing (ATP)エンドポイント)を設定します。

    cd
    export PATH=/home/oracle/mongosh-1.3.1-linux-x64/bin/:$PATH
    export PATH=$PATH:/home/oracle/mongodb-database-tools-rhel70-x86_64-100.5.2/bin
    echo $path
    

    イメージ

    イメージ

    イメージ

  4. 次のコマンドを使用してOracle Autonomous JSON Databaseに接続できるかどうかを確認します。

    export URI='mongodb://admin:xxxx@xxxxxx-ADBJ.adb.us-ashburn-1.oraclecloudapps.com:27017/admin?authMechanism=PLAIN&authSource=$external&ssl=true&retryWrites=false&loadBalanced=true'
    mongosh $URI
    

    イメージ

タスク6: OCIオブジェクト・ストレージ・バケットへのダンプのアップロードおよびATPへのインポート

  1. mongoexportコマンドを使用して、コレクションのダンプを取得します。

    イメージ

    mongoexport --host=mrep1 --port 27017 --username=admin --authicationDatabase=admin --collection=data --db=sample_weatherdata --out=wheather_data.Json
    

    イメージ

  2. 「アップロード」をクリックして、MongoDBレプリカ・セットでmongoexportコマンドを使用して取得されたデータベースの単一コレクションのダンプをアップロードします。

    イメージ

  3. 「オブジェクト詳細の表示」をクリックして、オブジェクト・エンドポイントの詳細を取得します。

    イメージ

    イメージ

  4. curlコマンドを実行して、そのオブジェクトからデータを読み取り、mongoimportコマンドをエンドポイントを使用してATPに読み取ります。

    curl -X GET https://objectstorage.us-ashburn-1.oraclecloud.com/p/ujXv8Pmhxt9EyLlA9ogm_X524pDRGEymJwbDVyUExAACra1VpAql32U0XaRnaxLt/n/orasenatdoracledigital01/b/jsonbucket/o/wheather_data.json | mongoimport --collection data --uri $URI
    

    イメージ

  5. 収集がATPデータベースにインポートされているかどうかを確認します。

    イメージ

  6. 文書の数がソースと同じかどうかクロスチェックします。

    イメージ

    テストは正常に完了しました。現在は、ソースMongoDBレプリカ・セット内の複数のデータベースで実行されているすべてのデータをターゲットOracle Autonomous JSON Databaseに移動し、ダウンタイムがほぼゼロの移行のためにOCI GoldenGateサービスをデプロイすることをお薦めします。

  7. データ移動の場合は、mongodumpコマンドを使用して、1回かぎりのロードとしてソースからターゲット・データベースにデータをコピーできます。

    export URI="mongodb://mrep1:27017 --username admin --authenticationDatabase admin"
    mongodump --uri=$URI
    

    イメージ

    イメージ

  8. mongorestoreコマンドを実行できるターゲット・システムにこのダンプをコピーします(タスク3で説明されており、ターゲットOracle Autonomous JSON Databaseにロードしています)。

    ノート:移行するデータベース・コレクションに対して、Oracle Autonomous JSON Databaseで同じスキーマ名を作成してください。

    create user sample_airbnb identified by <password>;
    grant connect, resource to sample_airbnb;
    grant unlimited tablespace to sample_airbnb;
    BEGIN
    ORDS_ADMIN.ENABLE_SCHEMA(p_schema => 'SAMPLE_AIRBNB');
    commit;
    END;
    /
    

タスク7: OCIのデプロイ GoldenGate

  1. OCIコンソールに移動し、「Oracle Database」GoldenGate「デプロイメント」に移動して、「デプロイメントの作成」をクリックします。

    MongoDBからOracle Autonomous JSON Databaseの場合は、「テクノロジ」「ビッグ・データ」として、「デプロイメント・タイプ」「データ・レプリケーション」として選択する必要があります。

    イメージ

    イメージ

  2. 管理ユーザーのログインおよび管理のために、OCIコンソールから事前にシークレットを作成します。

    イメージ

    イメージ

    イメージ

タスク8: MongoDBとOracle Autonomous JSON Databaseの両方に対する接続の作成

  1. OCIコンソールに移動し、「Oracle Database」GoldenGate「接続」に移動して、「接続の作成」をクリックします。

    イメージ

  2. 次の情報を入力して、ソース・データベース接続を作成します。

    イメージ

  3. ステップ1を繰り返し、イメージに示すように次の情報を入力してターゲット・データベース接続を作成します。

    イメージ

タスク9: OCI GoldenGateデプロイメントへの接続の割当ておよびテスト

  1. OCIコンソールに移動し、Oracle DatabaseGoldenGate接続に移動して、タスク8で作成した接続をクリックします。

  2. 「割当て済デプロイメント」および「デプロイメントの割当て」をクリックします。

    イメージ

  3. デプロイメントを選択し、「デプロイメントの割当て」をクリックします。

    イメージ

  4. 3つのドットと「接続のテスト」をクリックして、成功したことを確認します。

    イメージ

    イメージ

タスク10: ExtractおよびReplicatプロセスの作成

  1. OCIコンソールに移動し、「Oracle Database」GoldenGate「デプロイメント」に移動して、タスク7で作成したデプロイメントをクリックします。

    「コンソールの起動」をクリックすると、OCI GoldenGate構成コンソールが開きます。

    イメージ

  2. デプロイメント中に作成された「ユーザー名」および「パスワード」を入力します。

    イメージ

    コンソール・ページにログインすると、ExtractおよびReplicat構成に必要なすべてのオプションが表示されます。後のステップに示すように、ExtractおよびReplicatサービスを作成できます。

  3. 抽出プロセスを構成します。

    ソースMongoDBデータベース用に作成された「接続別名」を選択します。

    イメージ

    イメージ

    パラメータ・ファイルでは、sample_airbnbはMongoDB内のデータベースであり、*はそのデータベース内のすべてのコレクションを表します。

    イメージ

  4. Replicatプロセスを構成します。

    1. 「クラシックReplicat」「Replicatタイプ」を選択します。

      イメージ

    2. 次の必須情報を入力します。

      抽出プロセスの作成で名前が付けられた同じ証跡ファイル名を選択する必要があります。「ターゲット」「Oracle Autonomous JSON Database」を選択し、タスク8で作成した「接続別名」を入力します。

      イメージ

      Replicatプロセスは、MongoDBのsample_airbnbデータベースからOracle Autonomous JSON Databaseのsample_airbnbスキーマへのすべてのトランザクションをレプリケートします。

      イメージ

    ノート:構成でソース・データベース名とターゲット・データベース名とスキーマ名をそれぞれ変更する必要があります。

  5. ExtractおよびReplicatプロセスの構成が完了したら、それに応じてプロセスを開始します。

    ノート: Oracle Autonomous JSON Databaseはプライベート・エンドポイントで構成する必要があります。証明書を使用しない場合、相互TLS (mTLS)なしで認証を変更できます。

    正しい動作保証が使用できない場合、レプリケーション・ログ・ファイルに次のエラーが表示されることがあります。

    Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
    

    イメージ

タスク11: プロセスの抽出およびレプリケートの開始および検証

「管理サービス」をクリックして、プロセス・ステータスとそれに対応するレポートおよびログ・ファイルの両方で問題がないか確認します。

イメージ

タスク12: データ同期のテスト

  1. ソースおよびターゲットで、次のコマンドを使用して一部のデータを挿入する前に、コレクション詳細のドキュメント数を確認します。

    • ソース・データベース:

      show dbs
      use sample_airbnb
      show collections
      db.emp.countDocuments()
      

      イメージ

    • ターゲット・データベース:

      show dbs
      use Sample_airbnb
      show collections
      db.emp.countDocuments()
      

      イメージ

  2. 次のコマンドを使用して、ソースおよびターゲット・データベースのデータをチェックします。

    • ソース・データベース:

      db.emp.find({"name":"joe"})
      db.emp.find({"name":"John"})
      

      イメージ

    • ターゲット・データベース:

      db.emp.find({"name":"joe"})
      db.emp.find({"name":"John"})
      

      イメージ

  3. 次のコマンドを使用して、ソースにデータを挿入し、ターゲットにレプリケートされているかどうかを確認します。

    • ソース・データベース:

      dm.emp.insertOne(
      { "name":"John","job":"Data Analyst","Salary":7000})
      db.emp.countDocuments()
      db.emp.find({"name":"John"})
      

      イメージ

    • ターゲット・データベース:

      show DBs
      show collections
      db.emp.find({"name":"John"})
      

      イメージ

      イメージ

      イメージ

タスク13: MongoDB Atlasへの接続

MongoDB Atlasへの接続は、オンプレミスのMongoDBデータベースへの接続とは異なります。

ノート:パブリック・ネットワークで接続を確立する必要がある場合は、必ずNATゲートウェイを作成し、OCI GoldenGateデプロイメントで使用されているプライベート・サブネットとともにアタッチしてください。

イメージ

接続の問題による一般的なエラー

ターゲットOracle Autonomous JSON Databaseへの接続の問題により、レプリケート・プロセスの開始中にその他のエラーが発生する可能性があります:

承認

その他の学習リソース

docs.oracle.com/learnの他のラボを確認するか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerになります。

製品ドキュメントについては、Oracle Help Centerを参照してください。