AWS Schema Conversion Tool
ユーザーガイド (Version 1.0)

AWS Schema Conversion Tool を使用したデータベーススキーマの変換

AWS Schema Conversion Tool (AWS SCT) を使用すると、データベースエンジン間で既存のデータベーススキーマを変換できます。AWS SCT ユーザーインターフェイスを使用したデータベースの変換は比較的簡単ですが、変換を行う前に、いくつかの点について考慮する必要があります。

たとえば、AWS SCT を使用して以下のことを実行できます。

  • AWS SCT を使用して、同エンジンを実行する Amazon RDS DB インスタンスに既存のオンプレミスのデータベーススキーマをコピーすることもできます。この機能を使用して、クラウドへの移動やライセンスタイプの変更にかかるコスト削減の可能性を分析できます。

  • 場合によって、データベース機能は同等の Amazon RDS 機能に変換できないことがあります。Amazon Elastic Compute Cloud (Amazon EC2) プラットフォームでデータベースをホストして自己管理する場合は、これらの機能を AWS サービスで代用することで、エミュレートできます。

  • AWS SCT はオンライントランザクション処理 (OLTP) データベーススキーマを Amazon Relational Database Service (Amazon RDS) MySQL DB インスタンス、Amazon Aurora DB クラスター、または PostgreSQL DB インスタンスに変換する多くのプロセスを自動化します。ソースおよびターゲットデータベースエンジンは様々な特徴と機能を含んでおり、AWS SCT は Amazon RDS DB インスタンスにおいて可能な限り同等のスキーマを作成するよう試みます。直接変換ができない場合、AWS SCT はユーザーに対して可能なアクションの一覧を提供します。

このセクションでは、次のトピックについて説明します。

AWS SCT では、以下の OLTP 変換がサポートされています。

ソースデータベース Amazon RDS のターゲットデータベース

Microsoft SQL Server (バージョン 2008 以降)

Amazon Aurora (MySQL または PostgreSQL)、MySQL、PostgreSQL、Microsoft SQL Server

MySQL (バージョン 5.5 以降)

Amazon Aurora (PostgreSQL)、MySQL、PostgreSQL

AWS SCT を使用せずに、MySQL から Amazon Aurora (MySQL) DB クラスターにスキーマとデータを移行できます。詳細については、「Amazon Aurora DB クラスターへのデータの移行」を参照してください。

Oracle (バージョン 10.2 以降)

Amazon Aurora (MySQL または PostgreSQL)、MySQL、Oracle、PostgreSQL

PostgreSQL (バージョン 9.1 以降)

Amazon Aurora (MySQL)、MySQL、PostgreSQL

DB2 LUW (バージョン 9.5、9.7、10.5、および 11.1)

Amazon Aurora (MySQL または PostgreSQL)、MySQL、PostgreSQL

データウェアハウススキーマを変換する場合は、「 Amazon Redshift を使用したデータウェアハウススキーマの AWS Schema Conversion Tool への変換」を参照してください。

データベーススキーマを Amazon RDS に変換するには、次の必要な手順を実行します。各ステップは詳細が記載されたセクションへのリンクになっています。

AWS Schema Conversion Tool (AWS SCT) でマッピングルールを作成する

AWS SCT でスキーマを変換する前に、列のデータ型の変更、あるスキーマから別のスキーマへのオブジェクトの移動、オブジェクトの名前の変更を行うルールを設定できます。たとえば、test_TABLE_NAME という名前のソーススキーマにテーブルのセットがある場合、ターゲットスキーマのプレフィックスを test_ から demo_ に変更するルールを設定できます。

注記

ソースデータベースエンジンとターゲットデータベースエンジンが異なる場合は、マッピングルールのみ作成できます。

マッピングルールを作成して実行できるタスクは次のとおりです。

  • データタイプの変更

  • オブジェクトの移動

  • オブジェクトの名前変更

  • プレフィックス - プレフィックスの追加、削除、置換

  • サフィックス - サフィックスの追加、削除、置換

マッピングルールを作成できるオブジェクトは次のとおりです。

  • データベース

  • スキーマ

マッピングルールを作成する

マッピングルールを作成し、プロジェクトの一部としてルールを保存できます。プロジェクトを開いた状態で、以下の手順でマッピングルールを作成します。

マッピングルールを作成するには

  1. [Settings] メニューから [Mapping Rules] を選択します。[Mapping Rules] ダイアログボックスが表示されます。

    
                            マッピングルールダイアログボックス
  2. [Add new rule] を選択します。ルールのリストに新しい行が追加されます。

  3. 編集アイコンを選択して、ルールを設定します。

    1. [Name] に、ルールの名前を入力します。

    2. [For] で、ルールを適用するオブジェクトのタイプを選択します。

    3. [where] に、オブジェクトに適用するフィルタを入力後、マッピングルールを適用します。where 句は、like 句を使用して評価されます。正確な名前を入力して特定のオブジェクトを選択するか、パターンを入力して複数のオブジェクトを選択できます。

      where 句で利用可能なフィールドは、オブジェクト型によって異なります。たとえば、スキーマの名前のオブジェクト型がスキーマの場合、使用可能なフィールドは 1 つだけです。

    4. [Actions] で、作成するマッピングルールを選択します。

    5. ルールタイプに応じて、追加の値を 1 つまたは 2 つ入力します。たとえば、オブジェクトの名前を変更するには、オブジェクトの新しい名前を入力します。プレフィックスを置換するには、現在のプレフィックスおよび置換後のプレフィックスを入力します。

  4. マッピングルールを設定したら、[Save] を選択してルールを保存します。変更をキャンセルする場合は、[Cancel] を選択します。

  5. ルールの追加、編集、削除が完了したら、[Save All] を選択して変更内容を保存します。

  6. [Close] を選択して、[Mapping Rules] ダイアログボックスを閉じます。

マッピングルールを削除せずに無効にするには、切り替えアイコンを使用できます。既存のマッピングルールを複製するには、コピーアイコンを使用します。既存のマッピングのルールを削除するには、削除アイコンを使用します。マッピングルールへの変更を保存するには、[Save All] を選択します。

オブジェクトのマッピングルールを表示する

マッピングルールを設定すると、スキーマを変換する前に、スキーマ内の特定オブジェクトのルールの効果を確認できます。ソーススキーマツリーで、確認したいオブジェクトを選択します。メインビューで、[Mapping] タブを選択します。[Mapping] タブが開き、オブジェクトに適用されるすべてのマッピングルールのリストが表示されます。ソーススキーマのオブジェクトの名前およびターゲットスキーマのオブジェクトの新しい名前を表示できます。データ型ルールがある場合は、ソーススキーマの列のデータ型、ターゲットスキーマの列の新しいデータ型を表示することもできます。

マッピングルールをエクスポートする

AWS Database Migration Service (AWS DMS) を使用してソースデータベースからターゲットデータベースにデータを移行する場合は、マッピングルールに関する情報を AWS DMS に入力します。タスクの詳細については、「AWS Database Migration Service のレプリケーションタスクを使用」を参照してください。

マッピングルールをエクスポートするには

  1. AWS Schema Conversion Tool、ソーススキーマツリーで、コンテキスト (右クリック) を開き、[Export script for DMS (DMS にスクリプトをエクスポート)] を選択します。[Save] ダイアログボックスが開きます。

  2. スクリプトを保存する場所を指定し、[Save] を選択します。マッピングルールは、AWS DMS で使用できる JSON スクリプトとして保存されます。

AWS Schema Conversion Tool を使用してスキーマを変換する

ソースデータベースおよびターゲット Amazon RDS DB インスタンスの両方にプロジェクトを接続したのち、AWS Schema Conversion Tool プロジェクトは左のパネルでソースデータベースからのスキーマを表示します。スキーマはツリービュー形式で表示され、ツリーの各ノードは遅延ロードです。ツリービューでノードを選択すると、その時点で AWS SCT はソースデータベースからスキーマ情報をリクエストします。

ソースデータベースからスキーマ項目を選択し、スキーマをターゲット DB インスタンスの DB エンジン向けに同等のスキーマに変換することができます。ソースデータベースから任意のスキーマ項目を選択して変換できます。選択したスキーマ項目が親項目に依存する場合、AWS SCT はその親項目にもスキーマを生成します。たとえば、変換する列をテーブルから選択する場合、AWS SCT はスキーマを列、その列のあるテーブル、そのテーブルのあるデータベースに生成します。

スキーマの変換

ソースデータベースからスキーマを変換するには、プロジェクトの左のパネルで、変換するスキーマオブジェクトを選択します。オブジェクトのコンテキスト(右クリック)メニューを開き、次に示すように [Convert schema] を選択します。


                    [Convert schema (スキーマの変換)]

ソースデータベースからスキーマを変換すると、プロジェクトの左のパネルからスキーマ項目を選択でき、プロジェクトの中央のパネルで変換されたスキーマを表示できます。下中央のパネルに変換されたスキーマを作成する SQL コマンドのプロパティが次のように表示されます。


                    ソーススキーマ項目の選択

スキーマを変換した後、プロジェクトを保存できます。ソースデータベースからのスキーマ情報は、プロジェクトと共に保存されます。この機能では、ソースデータベースに接続されていなくてもオフラインで作業できます。ソースデータベースに [Refresh from Database (データベースから更新)] を選択すると、AWS SCT はプロジェクトのスキーマを更新するためにソースデータベースに接続します。詳細については、「 AWS Schema Conversion Tool での変換されたスキーマの更新および再読み込み」を参照してください。

自動的に変換できない項目のデータベース移行評価レポートを作成できます。評価レポートは、自動的に変換できないスキーマ項目の特定と解決に役立ちます。詳細については、「AWS Schema Conversion Tool で評価レポートの作成 」を参照してください。

AWS SCT が変換されたスキーマを生成する場合、そのスキーマはターゲット DB インスタンスにすぐには適用されません。代わりに、変換されたスキーマはターゲット DB インスタンスに適用する準備ができるまでローカルに保存されます。詳細については、「変換されたスキーマの適用」を参照してください。

変換されたスキーマの編集

変換されたスキーマを編集し、プロジェクトの一部として変更を保存できます。

変換されたスキーマを編集するには

  1. ソースデータベースのスキーマを表示する左のパネルで、変換されたスキーマの編集するスキーマ項目を選択します。

  2. 選択した項目の変換されたスキーマを表示している下中央のパネルで [SQL] タブを選択します。

  3. [SQL] タブで表示されたテキストで、必要に応じてスキーマを変更します。更新する際に、スキーマはプロジェクトと共に自動的に保存されます。

    
                            ターゲット DB インスタンスからのスキーマの更新

更新する際に、プロジェクトと共に変換されたスキーマへの変更が格納されます。新しくソースデータベースからスキーマ項目を変換し、項目の以前に変換されたスキーマを更新した場合、既存の更新はソースデータベースに基づいて新しく変換されたスキーマで置き換えられます。

変換されたスキーマのクリア

ターゲット DB インスタンスにスキーマを適用するまで、AWS SCT はプロジェクトで変換したスキーマをローカルでのみ保存します。ターゲット DB インスタンスのツリービューノードを選択してから [Refresh from Database] を選択することにより、プロジェクトから計画されたスキーマをクリアできます。ターゲット DB インスタンスにスキーマが書き込まれていなかったため、データベースから更新することによって、AWS SCT プロジェクトで計画されたスキーマの要素は削除され、ターゲット DB インスタンスに存在するものと一致するようになります。


                    ターゲット DB インスタンスからのスキーマの更新

AWS Schema Conversion Tool での手動変換の処理

評価レポートには、ターゲット Amazon RDS DB インスタンスのデータベースエンジンに自動的に変換できない項目のリストが含まれます。変換できない各項目に対して、[Action Items] タブにアクション項目があります。

評価レポートのアクション項目には、以下の方法で対応できます。

  • ソースデータベーススキーマの変更

  • ターゲットデータベーススキーマの変更

ソーススキーマの変更

一部の項目については、ソースデータベースのデータベーススキーマを、自動的に変換できるスキーマに変更する方が容易な場合があります。最初に、新しい変更にアプリケーションアークテクチャと互換性があることを確認し、次にソースデータベースのスキーマを更新します。最後に、更新されたスキーマ情報のあるプロジェクトを更新します。その後、更新されたスキーマを変換し、新しいデータベース移行評価レポートを生成できます。ソーススキーマで変更された項目のアクション項目は表示されなくなります。

このプロセスの利点は、ソースデータベースから更新するときに、更新されたスキーマを常に使用できることです。

ターゲットスキーマの変更

一部の項目については、ターゲットデータベースに変換されたスキーマを適用する方が容易な場合があるため、自動的に変換できなかった項目のターゲットデータベースに同等のスキーマを手動で追加します。スキーマを適用することで、ターゲット DB インスタンスに自動的に変換できるスキーマすべてを記述できます。詳細については、「 AWS Schema Conversion Tool での変換されたスキーマの保存および適用」を参照してください。

ターゲット DB インスタンスに書き込まれるスキーマには、自動的に変換できない項目は含まれません。ターゲット DB インスタンスにスキーマを適用したら、ターゲット DB インスタンスでソースデータベースと同等のスキーマを手動で作成できます。データベース移行評価レポートのアクション項目には、同等のスキーマを作成する方法の提案が含まれています。

警告

ターゲット DB インスタンスでスキーマを手動で作成する場合、手動作業のコピーを保存します。再度プロジェクトからターゲット DB インスタンスに変換したスキーマを適用する場合、行った手動作業は上書きされます。

場合によっては、ターゲット DB インスタンスで同等のスキーマを作成できないことがあります。ターゲット DB インスタンス向けに DB エンジンから利用できる機能を使用するために、アプリケーションとデータベースの一部を再設計することが必要な場合があります。その他の場合、自動的に変換できないスキーマは無視できます。

AWS Schema Conversion Tool での変換されたスキーマの更新および再読み込み

AWS Schema Conversion Tool プロジェクトのソーススキーマおよびターゲットスキーマの両方を更新できます。

  • [Source (ソース)] – ソースデータベースのスキーマを更新した場合、AWS SCT はプロジェクトのスキーマをソースデータベースの最新のスキーマと置き換えます。この機能を使用すると、ソースデータベースのスキーマが変更された場合にプロジェクトを更新できます。

  • [Target (ターゲット)] – ターゲット Amazon RDS DB インスタンスのスキーマを更新した場合、AWS SCT はプロジェクトのスキーマをターゲット DB インスタンスからの最新のスキーマと置き換えます。ターゲット DB インスタンスにスキーマを適用しなかった場合は、AWS SCT はプロジェクトから変換されたスキーマをクリアします。その後、クリーンターゲット DB インスタンスのソースデータベースからスキーマを変換します。

次に示すように、[Refresh from Database (データベースから更新)] を選択して AWS SCT プロジェクトでスキーマを更新します。


                ソースデータベースからのスキーマの更新

AWS Schema Conversion Tool での変換されたスキーマの保存および適用

AWS Schema Conversion Tool が変換されたスキーマを生成する場合 (AWS Schema Conversion Tool を使用してスキーマを変換する で示すように)、変換されたスキーマはターゲット DB インスタンスにはすぐに適用されません。代わりに、変換されたスキーマは、ターゲット DB インスタンスに適用する準備ができるまで、プロジェクトにローカルで保存されます。この機能を使用すると、ターゲット DB エンジンに自動的に変換できないスキーマ項目を使用できます。自動的に変換できない項目の詳細については、AWS Schema Conversion Tool で評価レポートの作成 を参照してください。

オプションとして、ターゲット DB インスタンスにスキーマを適用する前に、変換されたスキーマをツールで SQL スクリプトとしてファイルに保存することができます。さらにツールで、変換したスキーマをターゲット DB インスタンスに直接適用することもできます。

変換されたスキーマのファイルへの保存

変換されたスキーマを SQL スクリプトとしてテキストファイルに保存できます。これにより、ツールが自動的に変換できない項目に対応するために、AWS SCT から生成された SQL スクリプトを変更できます。ターゲットデータベースに変換されたスキーマを適用するために、ターゲット DB インスタンスで更新されたスクリプトを実行できます。

変換されたスキーマを SQL スクリプトとして保存するため、次に示すように、スキーマ要素のコンテキスト(右クリック)メニューを開き、[Save as SQL] を選択します。


                    [Save SQL scripts to a file (ファイルに SQL スクリプトを保存)]

変換されたスキーマの適用

変換されたスキーマをターゲット Amazon RDS DB インスタンスに適用する準備ができたら、プロジェクトの右側のパネルからスキーマ要素を選択します。スキーマ要素のコンテキスト(右クリック)メニューを開き、次に示すように、[Apply to database] を選択します。


                    [Apply to database (データベースに適用)]

拡張パックスキーマ

変換後のスキーマをターゲット DB インスタンスに適用すると、AWS SCT によって追加ワークスキーマがターゲット DB インスタンスに追加されます。このスキーマは、変換されたスキーマをターゲット DB インスタンスに書き込むときに必要なソースデータベースのシステム関数を実装します。追加されたスキーマは、拡張パックスキーマと呼ばれます。

この拡張パックスキーマは変更しないでください。変更すると、ターゲット DB インスタンスに書き込まれる変換されたスキーマに予期しない結果が発生する可能性があります。スキーマがターゲット DB インスタンスに完全に移行され、AWS SCT が必要なくなった場合は、拡張パックスキーマを削除できます。

拡張パックスキーマの名前は、ソースデータベースに従って次のように記述されます。

  • Microsoft SQL Server: AWS_SQLSERVER_EXT

  • MySQL: AWS_MYSQL_EXT

  • Oracle: AWS_ORACLE_EXT

  • PostgreSQL: AWS_POSTGRESQL_EXT

詳細については、「AWS Lambda 拡張パックの AWS SCT 関数の使用」を参照してください。