OCIクラウド移行ガイドとは
オンプレミスやAWSなど、複数のプラットフォームからOracle Cloud Infrastructureへの移行プロジェクトに取り組んでいるクラウドエンジニア(@araidon,@kazunishi,@yama6)による、OCI移行手順をまとめたシリーズ記事です。
各回、サンプルワークロードから対象サービスを取り上げ、移行手順をガイドいたします。
移行したいサンプルワークロード
日々の業務でよく目にするサービスを中心に、サンプルワークロードとしてまとめてみました。このシリーズでは、主にAWSからの移行を取り上げます。
このワークロードは、ユーザがログインして、Web上で写真を共有するWebサービスをイメージしています。
移行するサービス: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へのデータ移行手順をガイドします。
Autonomous JSON Databaseの起動、mongoshellからの接続、mongoimportユーティリティの利用方法について厚めに記載したいと思います。
移行方式
AWS上のEC2からmongoimportを使用して、Autonomous JSON Databaseへデータを移行していきます。
青い点線が上記の過去記事で実施した、mongoexportユーティリティを利用してAmazon DocumentDBからデータを出力する手順になります。(2.mongoexportでMongoDB形式のJSONファイルエクスポート)
この記事では、赤枠で囲った部分を対象に移行手順を対象とします。
前提条件
前提条件としては、下記記事を参考にし、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を選択します。
Autonomous Databaseの作成ボタンを押下します。
作成に当たり、入力内容は下記のとおりです。
作成ボタンを押下する前に、拡張オプションの表示をクリックし、ツールタブを開くと、MongoDB APIがツールで有効になっていることがわかります。今回、こちらを利用してmongoimportユーティリティからデータを移行します。
作成ボタンを押下します。
数分でAutonomous JSON Databaseが作成されました。
1-2. Oracle Database API for MongoDBの接続準備
作成したDBの詳細画面から、データベース・アクション->すべてのデータベース・アクションの表示を押下します。
別タブでDatabase Actionsの起動パッドが開きます。
関連サービスのOracle Database API for MongoDBをクリックします。
クリックすると、接続文字列のURLが表示されます。
これをコピーしてメモします。
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クラウドサービスとしての活用も考えられます。
参考