Amazon Web Services ブログ
オンプレミスや Amazon EC2 上の Oracle Database を Amazon Redshift に移行
AWS Database Migration Service (AWS DMS) は、簡単かつ安全なAWSへのデータベース移行の手助けをします。AWS Database Migration Service は広く使われている商用データベースとオープンソースデータベースに対応しています。このサービスはOracleからOracleのような同一プラットフォームでの移行に対応していますし、Oracleから Amazon Aurora や、Microsoft SQL Server からMySQLのような異なるプラットフォーム間での移行にも対応しています。移行元のデータベースは移行中も完全に動作しつづけたままであり、データベースに依存するアプリケーションのダウンタイムを最小限に抑えます。
AWS Database Migration Service を使用したデータレプリケーションは、AWS Schema Conversion Tool (AWS SCT) と緊密に統合されており、異なるプラットフォーム間でのデータベース移行プロジェクトを簡略化します。異なるプラットフォーム間での移行には AWS SCT を使用できますし、同一プラットフォームであれば移行元エンジンの純正スキーマ出力ツールが使えます。
この投稿では、Oracle Database のデータウェアハウスから Amazon Redshift へのデータ移行にフォーカスします。
以前の AWS SCT では、Oracle Database のビューやファンクションなどのカスタムコードを Amazon Redshift と互換性のあるフォーマットに変換できませんでした。ビューとファンクションを変換するには、最初に Oracle Database スキーマをPostgreSQLに変換し、それから Amazon Redshift と互換性のあるビューとファンクションを抽出するスクリプトを実行する必要がありました。
お客様のフィードバックに基づいたアップデートの後、AWS SCT と AWS DMS を使用して Oracle Database のビューとファンクションを Amazon Redshift に移行できるようになりました。
次の図は移行手順を示しています。
準備
この移行を開始するには次の手順を実行します。
- AWS SCT をダウンロード。
- AWS SCT グローバル設定 からデータベースドライバーをダウンロードし、そのパスを設定。
- 米国西部(オレゴン)リージョンで使用できる Amazon EC2 キーペアを用意。持っていない場合は新しい Amazon EC2 キーペアを作成。
スタックの作成
この投稿では、AWS CloudFormation スタックを起動するために、以下の Launch Stack を使います。起動プロセス中に前述のアーキテクチャも作成されます。結果は AWS DMS コンソールで確認できます。移行が終わると、CloudFormationスタックは破棄できます。
このリンクは米国西部(オレゴン)リージョン (us-west-2) でスタックを開始します。
一部のリソースを使用されている間は料金が発生します。
スタックを起動して名前を付けるには、次のようにします。
- AWSアカウントにまだログインしていない場合はログイン。
- Launch Stack を選んで、あらかじめ用意されたCloudFormationテンプレートでCloudFormationコンソールを起動。「次へ」を選択。
- スタック名には入力済みのorclrsmigrationを使用するかカスタム名を入力。KeyNameを選択し、Redshiftクラスター用のMasterUserPasswordを入力し、「次へ」を選択。
- 確認ページにて、スタックの起動結果としてCloudFormationが AWS Identity and Access Management (IAM) ロールを作成することを確認。「作成」を選択。
- スタック作成の進行状況を確認するには更新ボタンを押し、起動イベントを表示するスタックを選択。
- スタックが正常に起動すると、状況はCREATE_IN_PROGRESSからCREATE_COMPLETEに変わります。次のセクションで使用する値を表示するには「出力」を選択。
このCloudFormationテンプレートによって作成されたインフラは、次のセクションで使用されます。以下のテーブルでリストされている値が表示されています。
Schema Conversion Tool での設定
Schema Conversion Tool での設定のために、以下を実行します。
- AWS Schema Conversion Tool を開始。
- Fileから New Project を選択。New Project ダイアログが表示される。
次のプロジェクト情報を追加。Project Name プロジェクト名を入力。コンピュータにローカル保存される Location ローカルプロジェクトファイルの保存先を入力 Data Warehouse (OLAP) Source DB Engine Oracle DW Target DB Engine Amazon Redshift - AWS Schema Conversion Tool プロジェクトを作成するためOKを選択。
- Oracle Database に接続するため、Connect to Oracle DW を選択。
Connect to Oracle DW ダイアログが表示される。移行元の Oracle Database 接続情報を入力。
以下の値をフォームに入力。Server name <移行元EC2エンドポイントのDNS名> Server port 1521 Oracle SID XE User name dms_sample Password dms_sample Use SSL チェックしない - 移行元のデータベースに正しく接続できるかを確認するため、Test Connection を選択。
- 移行元データベースに接続するため、OKを選択。
- DMS_SAMPLEデータベースを選び、Nextを選択。
- Database Migration Assessment Report を読み、Nextを選択。
- Amazon Redshift に接続するため、Connect to Amazon Redshift を選択。
Connect to Amazon Redshift ダイアログが表示される。移行先のデータベース接続情報を入力。
以下の値をフォームに入力。Server name 移行先RedshiftエンドポイントのDNS名 Server port 5439 Database dev User name admin Password CloudFormationで選ばれたパスワード Use SSL チェックしない - 移行先のデータベースにただしく接続できるかを確認するため、Test Connection を選択。
- 移行先データベースに接続するため、OKを選択。
スキーマを変換
次にスキーマを変換します。
- Viewを選び、Main View を選択。
- 移行元のデータベースのスキーマを表示している左側のパネルから変換するdms_sampleスキーマオブジェクトを選択。オブジェクトのコンテキスト(右クリック)メニューを開き、Convert schema を選択。
- AWS Schema Conversion Tool でのスキーマ変換が完了すると、選択されたスキーマがビューやファンクションを含めて移行先の Amazon Redshift クラスター上で表示されます。この時点では、移行先の Amazon Redshift クラスターにスキーマは適用されていません。このウィンドウでスキーマを編集できます。編集したスキーマはプロジェクトの一部として保存されます。変換されたスキーマをデータベースに適用することを選択すると、編集されたスキーマが移行先DBインスタンスに書き込まれます。
- 移行先データベースのスキーマを表示する右側のパネルで、変換するdms_sampleスキーマオブジェクトを選択。オブジェクトのコンテキスト(右クリック)メニューを開き、Applyを選択。
この時点で、データが空の状態のデータベーススキーマが Amazon Redshift クラスター上にできあがります。
データベース移行のために AWS DMS を構成
次にDMSに移ります。
- AWSマネジメントコンソールでDMSを選び、「移行の作成」を選択。
- 「AWS Database Migration Service へようこそ」ページで「次へ」を選択。
- 「レプリケーションインスタンスの作成」ページが表示される。
このページで以下の値を入力し、「次へ」を選択。名前 8から16文字のASCII文字によるレプリケーションインスタンスの名前(/、”、@を除く) 説明 レプリケーションインスタンスの説明を入力 インスタンスクラス dms.t2.medium VPC 使いたい Amazon Virtual Private Cloud (Amazon VPC) を選択。移行元または移行先または両方があるVPCを使う Multi-AZ いいえ パブリックアクセス可能 チェック - 「アドバンスト」タブはデフォルトのままで、「次へ」を選択。
データベースエンドポイントの設定
- ソースエンドポイントに以下の値を設定。
エンドポイント識別子 エンドポイントを識別するために使いたい名前を入力 ソースエンジン oracle サーバー名 <移行元EC2エンドポイントのDNS名> ポート 1521 SSLモード none ユーザー名 dms_sample パスワード dms_sample - ターゲットエンドポイントに以下の値を設定。
エンドポイント識別子 エンドポイントを識別するために使いたい名前を入力 ソースエンジン redshift サーバー名 <RedshiftエンドポイントのDNS名> ポート 5439 SSLモード none ユーザー名 admin パスワード CloudFormationで選ばれたパスワード
レプリケーションインスタンスが正しく作成された後に「テストの実行」を選ぶことで、エンドポイントへの接続をテストできます。
タスクの作成
「タスクの作成」ページでタスクのオプションを設定します。
以下のテーブルはタスクの設定について説明しています。
タスク名 | タスク名を入力 |
ソースエンドポイント | 使用する移行元エンドポイントを選択 |
ターゲットエンドポイント | 使用する移行先エンドポイントを選択 |
レプリケーションインスタンス | 使用するレプリケーションインスタンスを選択 |
移行タイプ | Migrate existing data |
作成時にタスクを開始 | チェックする |
「ターゲットテーブル作成モード」は「何もしない」を選択。
「テーブルマッピング」ではdms_sampleを選び、Add selection rule を押して、「タスクの作成」を選択。
タスクの監視
タスクの作成で「作成時にタスクを開始」を選んだ場合、「タスクの作成」を選択するとすぐにデータ移行が開始されます。AWSマネジメントコンソールから実行中のタスクを選ぶことで、タスクの統計と監視の情報を表示できます。次のスクリーンショットはデータベース移行のテーブル統計を表しています。
まとめ
この投稿では Oracle Database の商用環境をビューやファンクションとともに Amazon Redshift に移行することがいかに簡単であるかをご紹介しました。
翻訳はソリューションアーキテクト柴田(シバタツ)が担当しました。原文は Migrating Oracle Database from On-Premises or Amazon EC2 Instances to Amazon Redshift です。