LoginSignup
3
4

【OCI クラウド移行ガイド】Amazon DocumentDB を Autonomous JSON Databaseへ移行してみた

Last updated at Posted at 2023-11-07

OCIクラウド移行ガイドとは

オンプレミスやAWSなど、複数のプラットフォームからOracle Cloud Infrastructureへの移行プロジェクトに取り組んでいるクラウドエンジニア(@araidon,@kazunishi,@yama6)による、OCI移行手順をまとめたシリーズ記事です。
各回、サンプルワークロードから対象サービスを取り上げ、移行手順をガイドいたします。

移行したいサンプルワークロード

日々の業務でよく目にするサービスを中心に、サンプルワークロードとしてまとめてみました。このシリーズでは、主にAWSからの移行を取り上げます。
このワークロードは、ユーザがログインして、Web上で写真を共有するWebサービスをイメージしています。

image.png

移行するサービス:Amazon DocumentDB→Autonomous JSON Database

今回、移行対象とするのはAmazon DocumentDBです。
Amazon DocumentDBはMongoDB互換のフルマネージド型のネイティブ JSON ドキュメントデータベースです。
Autonomous JSON Databaseでは、Oracle Database API for MongoDBを使用してMongoDB互換のDBとして利用することができます。
本記事では、mongoimportを利用してAmazon DocumentDBからAutonomous JSON Databaseへのデータ移行手順をガイドします。

image.png

Autonomous JSON Databaseの起動、mongoshellからの接続、mongoimportユーティリティの利用方法について厚めに記載したいと思います。

移行方式

AWS上のEC2からmongoimportを使用して、Autonomous JSON Databaseへデータを移行していきます。
青い点線が上記の過去記事で実施した、mongoexportユーティリティを利用してAmazon DocumentDBからデータを出力する手順になります。(2.mongoexportでMongoDB形式のJSONファイルエクスポート

この記事では、赤枠で囲った部分を対象に移行手順を対象とします。

image.png

前提条件

前提条件としては、下記記事を参考にし、Amazon DocumentDBからmongexportでデータをjson形式で出力していることです。

この手順で出力したoutput-restaurant.jsonをインプットデータとして使用し、Autonomous JSON Databaseを構築していきます。

移行手順

1.Autonomous JSON Databaseの構築
2.mongoimportの実行
3.結果確認

1. Autonomous JSON Databaseの構築

1-1. Autonomous JSON Databaseの作成

OCIのコンソールにログインし、Oracle DatabaseからAutonomous JSON Databaseを選択します。
image.png

Autonomous Databaseの作成ボタンを押下します。
作成に当たり、入力内容は下記のとおりです。

項目 入力内容
コンパートメント 任意
表示名 任意
データベース名 任意
ワークロード・タイプの選択 JSON
デプロイメント・タイプの選択 サーバーレス
データベース・バージョンの選択 19c
OCPU 1
ストレージ(TB) 1
管理者資格証明の作成
パスワード 任意
ネットワーク・アクセスの選択
アクセス・タイプ 許可されたIPおよびVCN限定のセキュア・アクセス
IP表記法タイプ CIDRブロック
0.0.0.0/0
相互TLS (mTLS)認証が必要 チェックしない
image.png image.png
image.png

作成ボタンを押下する前に、拡張オプションの表示をクリックし、ツールタブを開くと、MongoDB APIがツールで有効になっていることがわかります。今回、こちらを利用してmongoimportユーティリティからデータを移行します。
image.png

作成ボタンを押下します。

image.png
数分でAutonomous JSON Databaseが作成されました。

1-2. Oracle Database API for MongoDBの接続準備

作成したDBの詳細画面から、データベース・アクション->すべてのデータベース・アクションの表示を押下します。
image.png

別タブでDatabase Actionsの起動パッドが開きます。
関連サービスのOracle Database API for MongoDBをクリックします。
image.png

クリックすると、接続文字列のURLが表示されます。
image.png
これをコピーしてメモします。

1-3. Autonomous JSON Databaseへの接続

mongoshellがインストールされた接続用のEC2からAutonomous JSON Databaseへ接続します。
さきほどメモした接続文字列にユーザ名とパスワードを付与し、mongoshで接続を行います。

[ec2-user@ip-10-1-3-138 ~]$ mongosh 'mongodb://admin:passward@XXXXXXXXXXXX-MONGOAJD1.adb.ap-tokyo-1.oraclecloudapps.com:27017/admin?authMechanism=PLAIN&authSource=$external&ssl=true&retryWrites=false&loadBalanced=true'
Current Mongosh Log ID: 6549d93437e9fa1c2b87814c
Connecting to:          mongodb://<credentials>@XXXXXXXXXXXX-MONGOAJD1.adb.ap-tokyo-1.oraclecloudapps.com:27017/admin?authMechanism=PLAIN&authSource=%24external&ssl=true&retryWrites=false&loadBalanced=true&appName=mongosh+2.0.2
Using MongoDB:          4.2.14
Using Mongosh:          2.0.2

For mongosh info see: https://docs.mongodb.com/mongodb-shell/


To help improve our products, anonymous usage data is collected and sent to MongoDB periodically (https://www.mongodb.com/legal/privacy-policy).
You can opt-out by running the disableTelemetry() command.

Warning: Found ~/.mongorc.js, but not ~/.mongoshrc.js. ~/.mongorc.js will not be loaded.
  You may want to copy or rename ~/.mongorc.js to ~/.mongoshrc.js.

Deprecation warnings:
  - Using mongosh on the current operating system is deprecated, and support may be removed in a future release.
See https://www.mongodb.com/docs/mongodb-shell/install/#supported-operating-systems for documentation on supported platforms.
admin> 

接続が完了しました。

2.mongoimportの実行

EC2上にエクスポートされたoutput-restaurant.jsonを使用し、mongoimportを実行します。

admin> exit
$ ls
output-restaurant.json
$ mongoimport --uri='mongodb://admin:password@XXXXXXXXXX-MONGOAJD1.adb.ap-tokyo-1.oraclecloudapps.com:27017/admin?authMechanism=PLAIN&authSource=$external&ssl=true&retryWrites=false&loadBalanced=true' --collection=restaurants  --type=json  --file=restaurant.json --writeConcern {w:0}
2023-11-07T08:32:26.061+0000    connected to: mongodb://[**REDACTED**]@XXXXXXXXXX-MONGOAJD1.adb.ap-tokyo-1.oraclecloudapps.com:27017/admin?authMechanism=PLAIN&authSource=$external&ssl=true&retryWrites=false&loadBalanced=true
2023-11-07T08:32:26.153+0000    done

3.結果確認

再度mongoshellで接続し、データが移行されたか確認します。

$ mongosh 'mongodb://admin:password@XXXXXXXXXXXX-MONGOAJD1.adb.ap-tokyo-1.oraclecloudapps.com:27017/admin?authMechanism=PLAIN&authSource=$external&ssl=true&retryWrites=false&loadBalanced=true'
Current Mongosh Log ID: 6549f63423d796817b99e8df
Connecting to:          mongodb://<credentials>@XXXXXXXXXXXX-MONGOAJD1.adb.ap-tokyo-1.oraclecloudapps.com:27017/admin?authMechanism=PLAIN&authSource=%24external&ssl=true&retryWrites=false&loadBalanced=true&appName=mongosh+2.0.2
Using MongoDB:          4.2.14
Using Mongosh:          2.0.2

For mongosh info see: https://docs.mongodb.com/mongodb-shell/

Warning: Found ~/.mongorc.js, but not ~/.mongoshrc.js. ~/.mongorc.js will not be loaded.
  You may want to copy or rename ~/.mongorc.js to ~/.mongoshrc.js.

Deprecation warnings:
  - Using mongosh on the current operating system is deprecated, and support may be removed in a future release.
See https://www.mongodb.com/docs/mongodb-shell/install/#supported-operating-systems for documentation on supported platforms.
admin> show collections
restaurants
admin> db.restaurants.find()
[
  {
    _id: ObjectId("55f14312c7447c3da7051b6a"),
    URL: 'http://www.just-eat.co.uk/restaurants-5starpizza-ha9/menu',
    address: '379 High Road',
    'address line 2': 'Wembley',
    name: '5 Star Pizza',
    outcode: 'HA9',
    postcode: '6AA',
    rating: 2.5,
    type_of_food: 'Pizza'
  },
  ・・・・
admin> db.restaurants.find().count()
2548

データの中身が確認でき、jsonファイルに用意されていた2,548行のデータが格納されていることが確認できました。

まとめ

mongoimportユーティリティを利用し、Autonomous JSON Databaseへのデータ移行を簡単に行うことができました。Autonomous JSON DatabaseはOracle Database API for MongoDBをサポートしているため、MongoDB互換のDBとして操作することが可能です。
また、SQL を使用して他のデータ モデル (リレーショナル、XMLなど) と一緒に JSONデータ をクエリすることも可能なので、フルマネージド統合DBクラウドサービスとしての活用も考えられます。

参考

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4