AWS Database Migration Service and
AWS Schema Conversion Tool
Hands-on Guide

目次

  1. はじめに: AWS CloudFormation スタックの作成
  2. Amazon EC2へのログイン
  3. Amazon RDS for Oracle へのログイン
  4. Amazon RDS for PostgreSQL へのログイン
  5. AWS Schema Conversion Tool (SCT) のインストール
  6. SCTで Project Wizard の実行
  7. SCTでスキーマ変換
  8. AWS Database Migration Service (DMS) のセットアップと実行
  9. DMSでの継続的レプリケーション
  10. おわりに: リソースの削除

本文

  1. はじめに: AWS CloudFormation スタックの作成

    1. この章では以下のようなリソースを AWS CloudFormation を使って自動作成します
      アーキテクチャ図
      • Amazon EC2 Windows: AWS Schema Conversion Tool やデータベースクライアントして使います
      • Amazon RDS for Oracle: ソースデータベースです。https://github.com/awslabs/aws-database-migration-samples のデータがロード済みです
      • Amazon RDS for PostgreSQL: ターゲットデータベースです。新規インスタンスとして作成した直後です
    2. 10.58.0.0/16のVPCをすでに使用している、または1つのAWSアカウントを本ハンズオン参加者複数人で共有している場合は、重複しないように58以外の0以上255以下の数字を1つ選びます。58から変更される場合は、以下の手順の58をその数字で読み替えてください
    3. AWSマネジメントコンソールにログインします
    4. 画面右上のリージョンに「東京」と表示されていない場合は、「アジアパシフィック(東京)」を選びます
    5. 画面左上の「サービス」からEC2を選びます
    6. 左パネルから「キーペア」を選びます
    7. 画面上部の「キーペアの作成」ボタンを押します
    8. キーペア名「DMSHandson58」として「作成」ボタンを押します。DMSHandson58.pemというファイルがダウンロードされます
    9. CloudFormationテンプレートを http://bit.ly/dms-handson-cfn からダウンロードします
    10. 画面左上の「サービス」からCloudFormationを選びます
    11. 「新しいスタックの作成」ボタンを押します
    12. 「テンプレートの選択」から「テンプレートを Amazon S3 にアップロード」を選び、1-9でダウンロードしたdms-handson-cfn.templateを選び、「次へ」ボタンを押します
    13. 「スタックの名前」に「DMSHandson58」と入力します
    14. KeyNameにDMSHandson58を選びます
    15. アベイラビリティゾーンに1bが存在するアカウントをご利用の方は、PrimaryAZとSecondaryAZに指定すべき値が異なる可能性があるので、近くのスタッフにお声がけください。1bが存在しないアカウントをご利用の方は、デフォルトのままで構いません。不明な方は近くのスタッフにお声がけください
    16. UniqueNumに1-2で選んだ数字を入力します
    17. オプションには何も指定せず「次へ」ボタンを押します
    18. 「作成」ボタンを押します
    19. 「スタックの名前」列がDMSHandson58の行を選択し、下部から「リソース」タブを選び、すべてのリソースがCREATE_COMPLETEになるのをお待ちください。15分ほど掛かります
      • 一部のリソースの作成に失敗すると、DMSHandson58の行の「状況」列がROLLBACK_COMPLETEになります。その場合は問題点を解消後、「アクション > スタックの削除」ボタンを押し、1-11からやり直します。問題が自力で解消できな場合は、近くのスタッフにお声がけください
  2. Amazon EC2 へのログイン

    EC2へのログイン

    1. AWSマネジメントコンソールにログインします
    2. 画面右上のリージョンに「東京」と表示されていない場合は、「アジアパシフィック(東京)」を選びます
    3. 画面左上の「サービス」からEC2を選びます
    4. 左パネルから「インスタンス」を選びます
    5. Name列がDMSHandson58の行を選択します。Name列が存在しない場合は、画面右上の歯車アイコンを選び、Nameタグキーをオンにしてください
    6. 画面上部の「接続」ボタンを押します
    7. 「リモートデスクトップファイルのダウンロード」ボタンを押します。ec2-xxx.rdp というファイルがダウンロードされます
    8. 「パスワードの取得」ボタンを押します
    9. キーペアのパスに1-8でダウンロードしたDMSHandson58.pemを選択します
    10. 「パスワードの複合」ボタンを押します
    11. 表示されたパスワードをメモし、「閉じる」ボタンを押します
      例)PtFhSs7efImdc%sk)PKemR.hN=DBUt%m
    12. ダウンロードした ec2-xxx.rdp を Microsoft Remote Desktop で開きます
    13. 1-11でメモしたパスワードを使ってログインします
  3. Amazon RDS for Oracle へのログイン

    RDS for Oracle へのログイン

    1. AWSマネジメントコンソールにログインします
    2. 画面左上の「サービス」からRDSを選びます
    3. 左パネルから「インスタンス」を選びます
    4. 「DBインスタンス」列がdmshandson58oracleの行を選びます
    5. エンドポイントをメモします。末尾に「:1521」が含まれる場合は消去してください
      例)dmshandson58oracle.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com
    6. EC2 Windows のデスクトップ上にあるDBeaverを開きます
      • SQL Developer / SQL*Plus もインストールされています
    7. Version update ダイアログが開いた場合はCloseボタンを押します
    8. Create new connection ダイアログからOracleを選びNextボタンを押します。ダイアログが開かない場合は、メニュー Database > New Connection を選びます
    9. Generalタブが開いていることを確認し、以下のように設定します。Nextボタンはまだ押さないでください
      • Host: 3-5でメモしたもの。「:1521」は含めない
        例)dmshandson58oracle.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com
      • Port: 1521のまま
      • Database: handson
      • User name: scott
      • Password: tigertiger
    10. Edit Driver Settings ボタンを押します
    11. Add File ボタンを押します
    12. C:\Program Files\Oracle\instantclient_18_3 にある以下の4つのファイルをShiftキー押しながら選択し、Openボタンを押します
      • ojdbc8.jar
      • orai18n.jar
      • orai18n-mapping.jar
      • xstreams.jar
    13. OKボタンを押して Edit Dirver 'Oracle' ダイアログを閉じます
    14. Test Connection... ボタンを押すと、Success ダイアログが表示されて Ceonnected (NNN ms) と表示されていることを確認し、Finish ボタンを押します
    15. 左パネルから Oracle - handson > Schemas > DMS_SAMPLE > Tables > MLB_DATA などが表示されることを確認してください
    16. Oracleをソースデータベースにする場合、サプリメンタルロギングを有効にする必要があります。DBeaverの Oracle - handson を右クリックし、SQL Editor を選びます
    17. RDS for Oracle では専用のプロシージャを利用してサプリメンタルロギングを有効にします。SQL Editor に以下を入力して Ctrl + Eneter または以下のオレンジの▶アイコンを押します。エラーダイアログが表示されず、以下のようにQueryと Finish time が表示されることを確認します
    18. call rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD');

      ▶ボタン

      Queryと Finish time

    19. プライマリキーロギングを有効にします

      call rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD', 'PRIMARY KEY');

    20. サプリメンタルロギングが有効になったことを以下のSQLで確認します。2列ともYESと表示されれば有効になっています

      select supplemental_log_data_min, supplemental_log_data_pk from v$database;

    21. MLB_DATA / NFL_DATA / NFL_STADIUM_DATA はプライマリキーがないため、以下のSQLでサプリメンタルロギングできるように個別に設定します。SQLは1行ずつ実行します

      alter table dms_sample.mlb_data add supplemental log data (ALL) columns;

      alter table dms_sample.nfl_data add supplemental log data (ALL) columns;

      alter table dms_sample.nfl_stadium_data add supplemental log data (ALL) columns;

      • call rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD', 'ALL') で、個別のテーブルに設定するのではなく、データベース全体に適用することも可能ですが、REDOログのサイズが大きくなる点に注意してください
    22. MLB_DATA / NFL_DATA / NFL_STADIUM_DATA の全列がサプリメンタルロギングされていることを以下のSQLで確認します。LOG_GROUP_TYPE列の値が ALL COLUMN LOGGING になっている3行が返ってくれば有効になっています。

      select table_name, log_group_type from dba_log_groups where table_name in ('MLB_DATA', 'NFL_DATA', 'NFL_STADIUM_DATA') and log_group_type like 'ALL%';

    23. また、Oracleをソースデータベースにする場合、アーカイブログモードを有効にする必要があります。RDS for Oracle ではバックアップ保持期間が1日以上の場合はアーカイブログモードになります。以下のSQLでアーカイブログモードが有効であることを確認します。ARCHIVELOGと表示されれば有効になっています。

      select log_mode from v$database;

  4. Amazon RDS for PostgreSQL にログイン

    RDS for PostgreSQL へのログイン

    1. AWSマネジメントコンソールにログインします
    2. 画面左上の「サービス」からRDSを選びます
    3. 左パネルから「インスタンス」を選びます
    4. 「DBインスタンス」列がdmshandson58postgresの行を選びます
    5. エンドポイントをメモします。末尾に「:5432」が含まれる場合は消去してください
      例)dmshandson58postgres. xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com
    6. DBeaverのメニュー Database > New Connection を選びます
      • psqlもインストールされています
    7. PostgreSQL を選び Next> ボタンを押します
    8. Generalタブが開いていることを確認し、以下のように設定します。Next ボタンはまだ押さないでください
      • Host: 4-5でメモしたもの。「:5432」は含めない
        例)dmshandson58postgres.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com
      • Port: 5432のまま
      • Database: handson
      • User name: scott
      • Password: tigertiger
    9. Test Connection... ボタンを押します
    10. Download driver files ダイアログが開くので、Download ボタンを押します
    11. Success ダイアログが表示されて Connected (NNN ms) と表示されていることを確認し、Finish ボタンを押します
    12. PostgreSQL - handson > handson > Schemas > information_schema > Tables > sql_features などが表示されることを確認してください。dms_samplesスキーマはまだありません
  5. AWS Schema Conversion Tool (SCT) のインストール

    AWS Schema Conversion Tool (SCT) のインストール

    1. EC2 Windows のDownloadsフォルダー内の bin\jdk-8u172-windows-x64.exe をダブルクリックし、すべてデフォルトでインストールします
    2. Downloadsフォルダー内の bin\aws-schema-conversion-tool-1.0.latest.zip を右クリックし「Extract All...」を選択し、展開します
    3. AWS Schema Conversion Tool-1.0.620.msi をダブルクリックし、インストールを開始します
    4. 設定の必要なくダイアログが自動的に閉じます
    5. スタートメニューから Amazon Web Services > AWS Schema Conversion Tool を開きます
    6. There is a new version ダイアログが出た場合は Not Now ボタンを押します
    7. AWS Customer Agreement に同意できる場合はAcceptボタンを押します
    8. Create a new database migration project ダイアログが開きます
  6. SCTで Project Wizard の実行

    SCTでの Project Wizard の実行

    1. Create a new database migration project ダイアログが開いていない場合は、上部アイコン File > New project wizard を選びます
    2. 左パネルが Step 1. Choose a source になっていることを確認し、Project name を「DMSHandson」に変更します
    3. 以下が入力または選択されていることを確認して、Nextボタンを押します
      • Location: C:\Users\Administrator\AWS Schema Conversion Tool\Projects
      • Transactional database (OLTP)
      • Source database engine: Oracle
      • I want to switch engine and optmized for the cloud
    4. Step 2. Connect to Source Database に以下のように入力します
      • Type: SID
      • Server name: 3-5でメモしたもの
        例)dmshandson58oracle.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com
      • Server port: 1521
      • Oracle SID: handson
      • User name: scott
      • Password: tigertiger
      • Use SSL: オフ
      • Store password: オフ
      • Oracle driver path: Browsボタンから C:\Program Files\Oracle\instantclient_18_3\ojdbc8.jar を選択
    5. 左下の Test Connection ボタンを押し、Connection successful と表示されたらOKボタンを押します
    6. Step 2 のNextボタンを押します
    7. Step 3. Choose a schema で分析に使用するスキーマを選びます。スキーマの一覧からDMS_SAMPLEを選び、Nextボタンを押します
    8. Step 4. Run the database migration assessment にてレポートが表示されるので読みます。MySQLとPostgreSQLの結果を比較します
    9. 右上の Save to PDF ボタンを押し、handson.pdfとしてDesktopに保存します
    10. Acrobat Reader でhandson.pdfが開かれるので、自動変換できない理由とともにレポートが保存されていることを確認します
    11. SCTに戻り、右上の Save to CSV ボタンを押し、Desktopに保存します
    12. ターゲットエンジンごとにCSVが作成されるので、LibreOfficeまたはサクラエディタで中身を確認します
    13. SCTに戻り、Nextボタンを押します
    14. Step 5. Select Target に以下のように入力します
      • Target Database Engine: Amazon RDS for PostgreSQL
      • Server name: 4-5でメモしたもの
        例)dmshandson58postgres.xxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com
      • Server port: 5432
      • Database: handson
      • User name: scott
      • Password: tigertiger
      • Use SSL: オフ
      • Store password: オフ
      • PostgreSQL driver Path: Browsボタンから C:\Users\Administrator\Downloads\bin\postgresql-42.2.5.jar を選択
    15. 左下の Test Connection ボタンを押し、Connection successful と表示されたらOKボタンを押します
    16. Finishボタンを押し、ウィザードを終了します
    17. SCTのメイン画面が開きます
    18. 左パネルにOracleのスキーマ、右パネルにPostgreSQLのスキーマが表示されいることを確認します。PostgreSQLのほうはpublicスキーマしかまだありません
    19. 上部アイコン View > Assessment Report View を選ぶと、先ほどの評価レポートが再度表示されます
    20. 上部タブ Action items を選びます
    21. 左パネルから Schemas > DMS_SAMPLE > Packages > TICKETMANAGEMENT を選びます。ツリーは▶を押すと開きます
    22. 上パネルに自動変換できない理由、下パネルにPL/SQLコードが表示されることを確認します
    23. 上部アイコン View > Main View を選び、元のビューに戻ります
  7. SCTでのスキーマ変換

    SCTでのスキーマ変換

      • DMS Handson プロジェクトが開いていない場合は、上部アイコン File > Open project... から、C:\Users\Administrator\AWS Schema Conversion Tool\Projects\DMSHandson\DMSHandson.sct を開きます
      • 上部アイコン Connect to Oracle が表示されている場合は、そのアイコンを押してパスワード「tigertiger」を入力します
      • 上部アイコン Connect to Amazon RDS for PostgreSQL が表示されている場合は、そのアイコンを押してパスワード「tigertiger」を入力します
    1. Schemas > DMS_SAMPLE > Tables > MLB_DATA を選びます。上パネルにOracleのSQLが表示されます
    2. 上アイコン Actions > Convert schema を選びます(Actionsの項目は右クリックからも選べます)
    3. Replace?というダイアログが表示されたらYesボタンを押します
    4. 右パネルに Schemas > dms_sample > Tables > mlb_data が追加され、下パネルにPostgreSQLのSQLが表示されます。データ型などが変換されていることを確認します
    5. 左パネルの Schemas > DMS_SAMPLE を選び、上アイコン Actions > Convert schema を選びます
    6. Replace?というダイアログが表示されたらYesボタンを押します
    7. 右パネルにスキーマ内のオブジェクトすべてが追加されたことを確認します
    8. 左パネルの Schemas > DMS_SAMPLE > Views > SPORTING_EVENT_TICKET_INFO を選びます。外部結合 (+) を含むSELECT文が問題なく変換できていることを確認します
    9. 左パネルの Schemas > DMS_SAMPLE > Procedures > LOADMLBPLAYERS を選びます。decodeを含むOarcleのPL/SQLが問題なくPostgreSQLのPL/pgSQLに変換できていることを確認します
    10. 左パネルの Schemas > DMS_SAMPLE > Packages > TICKETMANAGEMENT > Private functions > GET_OPEN_EVENTS を選びます。OracleのPL/SQLの自動変換できない個所が黄色くハイライトされ、PostgreSQLのPL/pgSQLにはコメントで変換できない理由が書かれていることを確認します
    11. 右パネルの Schemas > dms_sample を選び、上アイコン Actions > Apply to database を選び、表示された Are you sure? のダイアログで Yes を選びます。Apple to database を実行すると、ターゲットに実際に書き込まれます。
    12. DBeaverの PostgreSQL - handson > Schemas を右クリックして Refresh を選びます。dms_sampleが追加で表示されます
    13. PostgreSQL - handson > handson > Schemas > dms_sample > Tables を開いて、すべてのテーブルが作成されていることを確認します
    14. mlb_dataテーブルをダブルクリックし、Dataタブを選択し、データはまだ空であることを確認します
  8. AWS Database Migration Service (DMS) のセットアップ

    Database Migration Service (DMS) のセットアップ

    1. AWSマネジメントコンソールにログインします
    2. 画面左上の「サービス」から Database Migration Service を選びます
    3. 左パネルから「今すぐ始める」を選びます
    4. 「ステップ1: ようこそ」を読んだら、「次へ」ボタンを押します
    5. 「ステップ2: レプリケーションインスタンスの作成」で、以下のように入力します
      • 名前: dmshandson58
      • 説明: Instance for DMS hands-on
      • インスタンスクラス: dms.r4.large
        • FullLoadでは一定時間高負荷が掛かり、CDCでは長時間一定負荷が掛かります。たとえテスト環境であっても、T2インスタンスが使えるかどうかはテスト内容から十分に検討する必要があります。
      • レプリケーションエンジンのバージョン: 3.1.2
      • VPC: DMSHandson58と名前のついたVPC
      • マルチAZ: いいえ
      • パブリックアクセス可能: オフ
        • 本ハンズオンではソースDB / ターゲットDB共にDMSインスタンスと同一VPCにあるため、パブリックアクセスは不要です。VPC外にソースDBまたはターゲットDBがある場合はパブリックアクセスが必要になります
      • アドバンスト > アベイラビリティーゾーン: ap-northeast-1a
      • アドバンスト > VPCセキュリティグループ: default
    6. 「ステップ3: データベースエンドポイント」で、以下のように入力します。「次へ」ボタンはまだ押さないでください
      • ソースデータベースの接続の詳細
        • RDS DB インスタンスの選択: オン
        • エンドポイント識別子: dmshandson58oracle
        • ソースエンジン: oracle
        • サーバー名: 3-5でメモしたもの
          例)dmshandson58oracle.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com
        • ポート: 1521
        • SSLモード: none
        • ユーザー名: scott
        • パスワード: tigertiger
        • SID: handson
      • ターゲットデータベースの接続の詳細
        • RDS DB インスタンスの選択: オン
        • エンドポイント識別子: dmshandson58postgres
        • ターゲットエンジン: postgres
        • サーバー名: 4-5でメモしたもの
          例)dmshandson58postgres.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com
        • ポート: 5432
        • SSLモード: none
        • ユーザー名: scott
        • パスワード: tigertiger
        • データベース名: handson
    7. レプリケーションインスタンスが作成されると、ソースとターゲットのそれぞれの「テスト実行」ボタンが押せるようになります。ボタンがグレーで押せない場合は、上部の回転する矢印が終わるまでお待ちください。テストを実行して、「接続のテストに成功しました」とそれぞれ表示されたら「次へ」ボタンを押してください
    8. 「ステップ4: タスク」で、以下のように入力します。「タスクの作成」はまだ押しません
      • タスク名: oracle58-postgres58
      • タスクの説明: Oracle to PostgreSQL task for DMS hands-on
      • 移行タイプ: 既存のデータを移行して、継続的な変更をレプリケートする
      • 作業時にタスクを開始: オン
      • タスク設定
        • ターゲットテーブル作成モード: TRUNCATE
          • SCTで作成したテーブルにINSERTするため、DROPではなくTRUNCATEします
        • 全ロードの完了後にタスクを停止する: 停止しない
        • レプリケーションにLOB列を含める: 制限付きLOBモード
        • 最大LOBサイズ: 32
        • 検証の有効化: オン
        • ロギングの有効化: オン
      • 「テーブルマッピング」で以下のように入力し、「選択ルールの追加」を押します。「タスクの作成」はまだ押しません
        • スキーマ名: スキーマの入力
        • スキーマ名の例: DMS_SAMPLE
        • テーブル名の例: %
        • アクション: 含める
        • 移行されるスキーマがDMS_SAMPLEのみになります
      • 「変換ルールの追加」を押し、以下のような3つのルールを作成し、「タスクの作成」を押します。オブジェクト名のデフォルトが大文字のOracleをソースデータベースにした場合、DMSはターゲットデータベースにも大文字のオブジェクトを作成するため、小文字に変換するルールを作成します
        • 変換ルール (1)
          • ターゲット: スキーマ
          • スキーマ名: スキーマの入力
          • スキーマ名の例: %
          • アクション: 小文字にする
        • 変換ルール (2)
          • ターゲット: テーブル
          • スキーマ名: スキーマの入力
          • スキーマ名の例: %
          • テーブル名の例: %
          • アクション: 小文字にする
        • 変換ルール (3)
          • ターゲット: 列
          • スキーマ名: スキーマの入力
          • スキーマ名の例: %
          • テーブル名の例: %
          • 列名の例: %
          • アクション: 小文字にする

      テーブルマッピング

    9. タスク一覧が表示されます。oracle58-postgres58タスクのステータス列が「準備完了」になったら、oracle58-postgre58タスクを選択して「評価」ボタンを押します。<ステータス列が「テスト中」に変わります
    10. ステータス列が再び「準備完了」に変わったら、下部の「評価結果」タブに結果が表示されますので、内容を確認します。ステータス列が No issues found のため、問題はありません
    11. 上部の「開始/再開」ボタンを押します。ステータス列が「開始中」に変わり、下部の「テーブル統計」タブに進捗が表示されます
      • ステータスが「失敗」や「エラー」になった場合は、下部の「ログ」タブからCloudWatchに遷移し、ログを確認してください。問題を解決するには、特に W: (Warning) や E: (Error) の行がヒントになります
      • エラーの原因を修正したら、左パネルから「タスク」を選び、oracle58-postgres58を選んで「停止」ボタンを押します。ステータスが「準備中」になったら「開始/再開」ボタンを押し、「再起動」を選んで「タスクの開始」ボタンを押します
    12. 実行中でも、DBeaverで PostgreSQL - handson > Schemas > dms_sample > Table > mlb_data をダブルクリックし、Dataタブを選び、データが入っていることを確認できます
    13. すべてのテーブルの状態が「テーブルが完了しました」になり、ステータス列が「ロード完了、レプリケーション進行中」になっていることを確認します。ロードが完了するのに15分前後かかります
      • 今回のハンズオンでは全体の流れの把握を優先するため、ターゲット側に索引や制約が定義されたまま実行しています。これらを削除してから実行すると、より高速になります
    14. 「テーブル統計」タブの「検証状態」列を確認します。MLB_DATA / NFL_DATA / NFL_STADIUM_DATA は「プライマリキーがありません」、その他のテーブルは「検証済み」であることを確認します。最も行数の多いSPORTING_EVENT_TICKETテーブルの検証には時間が掛かるため、「保留中のレコード」かもしれません。「保留中のレコード」の場合、そのまま画面を表示していると「検証保留中」列の値が徐々に減っていくことが確認できます。SPORTING_EVENT_TICKETテーブルが「検証済み」にならなくても、次のステップに進むことができます。
  9. DMSでの継続的レプリケーション

    DMSでの継続的レプリケーション

    1. DBeaverの Oracle - handson を右クリックし、SQL Editor を開きます
    2. 以下のSQLを実行して、TICKET_PURCHASE_HISTテーブルの行数を数えます。0行が返ります

      select count(*) from dms_sample.ticket_purchase_hist;

    3. DBeaverの PostgreSQL - handson を右クリックし、SQL Editor を開きます
    4. 同様に以下のSQLを実行して、TICKET_PURCHASE_HISTテーブルの行数を数えます。0行が返ります

      select count(*) from dms_sample.ticket_purchase_hist;

    5. Oracleへの接続をもう1つ作ります。メニュー Database > New Connection を選びます
    6. リストの一番上に移動しているOracleを選び、Next > ボタンを押します
    7. Generalタブが開いていることを確認し、以下のように設定します。Next ボタンはまだ押さないでください
      • Host: 3-5でメモしたもの。「:1521」は含めない
        例)dmshandson58oracle.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com
      • Port: 1521のまま
      • Database: handson
      • User name: scott
      • Password: tigertiger
    8. Test Connection... ボタンを押すと、Success ダイアログが表示されて Connected (NNN ms) と表示されていることを確認し、Finish ボタンを押します
    9. Oracle - handson 2 > Schemas > DMS_SAMPLE > Tables > MLB_DATA などが表示されることを確認してください
    10. Oracle - handson 2 を右クリックして SQL Editor を選び、以下を実行すると、OracleのTICKET_PURCHASE_HISTテーブルに支払い履歴がINSERTされ続けます。このプロシージャはハンズオン時間内に完了しません。9-13まで完了したら、9-14の手順で中断します

      call dms_sample.ticketmanagement.generateticketactivity(1, 1000);

    11. Oracle - handson の SQL Editor で以下のSQLを実行して、TICKET_PURCHASE_HISTテーブルの行数を数えます。実行するたびに結果が増え、INSERTされ続けていることが確認できます

      select count(*) from dms_sample.ticket_purchase_hist;

    12. このINSERTは、DMSによって5秒間隔でPostgreSQLにレプリケーションされます。PostgreSQL の SQL Editor で以下のSQLを実行して、TICKET_PURCHASE_HISTテーブルの行数を数えます。5秒間隔で結果が増え、その結果はOracleのものよりわずかに少ないことが確認できます。つまり、OracleのTICKET_PURCHASE_HISTテーブルへのINSERTが、PostgreSQLのTICKET_PURCHASE_HISTテーブルに非同期反映されていることを意味します

      select count(*) from dms_sample.ticket_purchase_hist;

    13. マネージメントコンソールの「テーブル統計」タブを見ると、TICKET_PURCHASE_HISTテーブルの「挿入」列が増え、SPORTING_EVENT_TICKETテーブルの「更新」列が増えていくことが確認できます
    14. Oracle - handson 2 の SQL Editor に戻りCancelボタンを押します
    15. INSERTが止まり、Oracle - handson のTICKET_PURCHASE_HISTテーブルと、PostgreSQLのTICKET_PURCHASE_HISTテーブルが完全に同じ値になること以下のSQLで確認します

      select count(*) from dms_sample.ticket_purchase_hist;

    16. マネージメントコンソールの「テーブル統計」タブを見て、SPORTING_EVENT_TICKETテーブルとTICKET_PURCHASE_HISTテーブルの「検証状態」が「検証済み」になるまでしばらく待ちます。
  10. おわりに: リソースの削除

    この章を実行しないと料金が発生し続けます

    1. AWSマネジメントコンソールにログインします
    2. 画面左上の「サービス」から Database Migration Service を選びます
    3. 左パネルから「タスク」を選びます
    4. oracle58-postgres58を選び、「停止」ボタンを押します
    5. 「ステータス」列が「停止」に変わったら「削除」ボタンを押します
    6. タスクがなくなったら、左パネルから「エンドポイント」を選びます
    7. dmshandson58oracleとdmshandson58postgresを選び、「削除」ボタンを押します
    8. エンドポイントがなくなったら、左パネルから「レプリケーションインスタンス」を選びます
    9. dmshandson58を選び、「削除」ボタンを押します
    10. 以下の手順を実行すると、使用した EC2 Windows やRDSはスナップショットなしに削除されます。必要に応じて手動でスナップショットを取得します
    11. 画面左上の「サービス」からCloudFormationを選びます
    12. DMSHandson58を選び、「アクション > スタックの削除」ボタンを押します
    13. 下部の「リソース」タブを選び、すべてのリソースがDELETE_COMPLETEになると、スタック自体がCloudFormationから削除されます
      • サブネットの削除が進まない場合は、10-9のDMSインスタンスの削除が完了しているか確認してください
    14. 以下のリソースが削除されていることを念のため確認します。EC2では「インスタンスの状態」列が「Terminate」になっていれば削除済みです。
      • EC2 > DMSHandson58
      • RDS > dmshandson58oracle
      • RDS > dmshandson58postgres
      • VPC > DMSHandson58
    15. 10-10で EC2 Windows のスナップショットを取っていない場合は、キーペアを削除します
      1. 画面左上の「サービス」からEC2を選びます
      2. 左パネルから「キーペア」を選び、DMSHandson58を選び、「削除」ボタンを押します

以上で、ハンズオンは終了です。お疲れ様でした


© 2018, Amazon Web Services, Inc. or its Affiliates. All rigths reserved

Version 1.4