はじめに
AWSにてDB移行用に用意されたサービスのAWS Schema Conversion Tool(以下SCT)について簡単な使用法をまとめます。
SCTはAWSのサービスとしては珍しく、ツールをダウンロードし手元で使うサービスになります。
前提条件
以下を事前に用意する必要があります。
- Java Runtime Environment
- 移行対象のJDBCドライバ
ダウンロードやインストール方法などは公式ページに記載されているので、そちらをご覧ください。
今回のSCTで対象とした環境は下記になります。
- 移行元DB:Oracle Database Express Edition 11g Release 2 (Oracle Database XE)
※オブジェクトはAWSより公開されているサンプルを利用しました。
- 移行先DB:Amazon Aurora
スキーマ変換
※プロジェクトの作成、移行元/先への接続設定は割愛させて頂きます。手順はこちら
以下が操作の基本となるプロジェクトウィンドウです。
レポートの要約は公式ページに記載されていますので、そちらをご参照ください。
適用
移行元のオブジェクトを右クリックで開き、[Convert Schema]を実行すると移行先のパネルに対象オブジェクトが追加されます。
※この時点では実際の移行先データベースへの適用はされません
この時、移行先に適用されるSQLコマンドが表示されます。
変換したい箇所がある場合、このSQLコマンドに手を加えることで変更が可能となります。
適用には移行先の対象オブジェクトを右クリックし、[Apply to database]を実行することで適用されます。
適用後に、AWS_*_EXTという拡張パックスキーマが作成されますが、移行が終了するまではそのままにしておきましょう。
マッピングルール
上記で適用までの流れを記載いたしましたが、スキーマの変換に利用できるマッピングルールについても触れておきます。
マッピングルールでは下記のようなことが出来ます。
[sh]
データタイプの変更
オブジェクトの移動
オブジェクトの名前変更
プレフィックス – プレフィックスの追加、削除、置換
サフィックス – サフィックスの追加、削除、置換
[/sh]
今回はデータタイプの変更をしてみます。
サンプルデータベースのPLAYERテーブルのIDカラムがNUMBERなので、これをINT型に変換したいと思います。
デフォルトの設定ではNUMBERはDOUBLEになります。
スキーマ変換の対応状況はこちらでご確認ください。
まずはSettingsからMapping Rulesを選択します。
ルール内容を作成し、[Save All]で保存します。
対象のカラムからmappingタブを見ると作成したルールが適用されているのがわかります。
あとは[Convert Schema]-> [Apply to database]を実行すれば終了です。
メモリ管理
もし、クライアントのメモリに余裕があれば、SCTの使用メモリを大きくすることで
パフォーマンスを上げることも可能です。
その逆にメモリ使用量を下げることも同様に実施出来ます。
詳細はこちら
まとめ
レポートから変換対象を洗い出すだけでなく、マッピングを利用したデータ変換など実際の移行に有用な機能ではないでしょうか。
AWS Database Migration Serviceと合わせて可能な限り、移行にかかるコストを削減していきたいですね。