422
AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

  • Upload
    others

  • View
    13

  • Download
    0

Embed Size (px)

Citation preview

Page 1: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Serviceユーザーガイド

API バージョン API Version 2016-01-01

Page 2: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイド

AWS Database Migration Service: ユーザーガイドCopyright © 2019 Amazon Web Services, Inc. and/or its affiliates. All rights reserved.

Amazon's trademarks and trade dress may not be used in connection with any product or service that is not Amazon's,in any manner that is likely to cause confusion among customers, or in any manner that disparages or discreditsAmazon. All other trademarks not owned by Amazon are the property of their respective owners, who may or may notbe affiliated with, connected to, or sponsored by Amazon.

Page 3: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイド

Table of ContentsAWS Database Migration Service とは .................................................................................................. 1

AWS DMS が実行する移行タスク ................................................................................................. 1基本レベルでの AWS DMS の仕組み ............................................................................................ 2

AWS DMS の詳細 .............................................................................................................................. 4AWS DMS の概要 ...................................................................................................................... 4コンポーネント .......................................................................................................................... 5ソース ..................................................................................................................................... 10ターゲット ............................................................................................................................... 12他の AWS サービスで使用する ................................................................................................... 13

AWS CloudFormation のサポート ........................................................................................ 13ARN の構築 ..................................................................................................................... 14

セットアップ .................................................................................................................................... 16AWS にサインアップする .......................................................................................................... 16IAM ユーザーを作成する ............................................................................................................ 16AWS Database Migration Service での移行計画 ............................................................................ 18

開始方法 .......................................................................................................................................... 19データベースの移行開始 ............................................................................................................ 19ステップ 1: [Welcome] .............................................................................................................. 19ステップ 2: レプリケーションのインスタンスを作成する ................................................................ 20ステップ 3: ソースとターゲットのエンドポイントを指定する .......................................................... 24ステップ 4: タスクを作成する .................................................................................................... 27タスクをモニタリングする ......................................................................................................... 31

セキュリティ .................................................................................................................................... 33必要な IAM アクセス許可 ........................................................................................................... 33CLI および API の IAM ロール .................................................................................................... 36FGAC(Fine-Grained Access Control) ........................................................................................ 40

リソース名を使用したアクセスの制御 .................................................................................. 40タグを使用したアクセスの制御 ........................................................................................... 42

暗号化キーを設定する ............................................................................................................... 47ネットワークセキュリティ ......................................................................................................... 48SSL の使用 .............................................................................................................................. 49

AWS Database Migration Service で SSL を使用する場合の制限 .............................................. 50証明書の管理 .................................................................................................................... 51MySQL 互換、PostgreSQL、または SQL Server のエンドポイントでの SSL の有効化 ................ 51Oracle エンドポイントでの SSL のサポート ......................................................................... 53

データベースのパスワードの変更 ................................................................................................ 57制限 ................................................................................................................................................ 58

AWS Database Migration Service の制限 ...................................................................................... 58レプリケーションインスタンス ........................................................................................................... 59

レプリケーションインスタンスの詳細 .......................................................................................... 60パブリックおよびプライベートレプリケーションインスタンス ........................................................ 62AWS DMS メンテナンス ............................................................................................................ 62

AWS DMS メンテナンスウィンドウ .................................................................................... 62レプリケーションエンジンのバージョン ....................................................................................... 65

レプリケーションインスタンスバージョンの廃止 ................................................................... 65レプリケーションインスタンスのエンジンバージョンのアップグレード .................................... 66

レプリケーションインスタンスのためのネットワークのセットアップ ............................................... 68データベース移行のネットワーク設定 .................................................................................. 68レプリケーションサブネットグループの作成 ......................................................................... 73

暗号化キーを設定する ............................................................................................................... 75レプリケーションインスタンスの作成 .......................................................................................... 75レプリケーションインスタンスの変更 ......................................................................................... 79レプリケーションインスタンスを再起動する ................................................................................ 82レプリケーションインスタンスの削除 ......................................................................................... 83

API バージョン API Version 2016-01-01iii

Page 4: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイド

サポートされている DDL ステートメント ..................................................................................... 85エンドポイント ................................................................................................................................. 86

データ移行のソース .................................................................................................................. 86ソースとして Oracle を使用する ......................................................................................... 88SQL Server をソースとして使用する ................................................................................. 105Azure SQL データベースのソースとしての使用 ................................................................... 115PostgreSQL のソースとしての使用 .................................................................................... 116ソースとしての MySQL の使用 ......................................................................................... 130SAP ASE のソースとしての使用 ....................................................................................... 138ソースとしての MongoDB の使用 ...................................................................................... 141Amazon S3 のソースとしての使用 .................................................................................... 146IBM Db2 LUW をソースとして使用する ............................................................................. 152

データ移行のターゲット ........................................................................................................... 155Oracle のターゲットとしての使用 ..................................................................................... 157ターゲットとしての SQL Server の使用 ............................................................................. 162ターゲットとしての PostgreSQL の使用 ............................................................................. 166ターゲットとしての MySQL の使用 ................................................................................... 169ターゲットとしての Amazon Redshift の使用 ...................................................................... 174ターゲットとしての SAP ASE の使用 ................................................................................ 185ターゲットとしての Amazon S3 の使用 ............................................................................. 187ターゲットとしての Amazon DynamoDB の使用 ................................................................. 208ターゲットとしての Amazon Kinesis Data Streams の使用 ................................................... 222ターゲットとしての Amazon Elasticsearch Service の使用 .................................................... 229ターゲットとしての Amazon DocumentDB の使用 ............................................................... 232

ソースおよびターゲットエンドポイントの作成 ............................................................................ 246タスク ........................................................................................................................................... 250

タスク評価レポートの作成 ........................................................................................................ 251タスクの作成 .......................................................................................................................... 254

タスク設定 ..................................................................................................................... 260LOB サポートの設定 ........................................................................................................ 280複数のタスクの作成 ......................................................................................................... 280

継続的なレプリケーション用のタスク ........................................................................................ 281CDC 開始ポイントから開始するレプリケーション ............................................................... 282

タスクの変更 .......................................................................................................................... 284タスク実行中のテーブルの再ロード ........................................................................................... 284

AWS マネジメントコンソール ........................................................................................... 284テーブルマッピング ................................................................................................................. 286

コンソールからのテーブルマッピングによりテーブル選択および変換を指定する ..................... 286JSON を使用するテーブルマッピングによりテーブル選択および変換を指定する ..................... 291テーブル設定のルールとオペレーション ............................................................................. 304ソースフィルタの使用 ...................................................................................................... 321

タスクのモニタリング ...................................................................................................................... 325タスクのステータス ................................................................................................................. 325タスク実行中のテーブルの状態 ................................................................................................. 326Amazon CloudWatch を使用したレプリケーションモニタリングタスク ........................................... 327データ移行サービスメトリクス ................................................................................................. 329

レプリケーションインスタンスのメトリクス ....................................................................... 330レプリケーションタスクのメトリクス ................................................................................ 331

AWS DMS ログを管理する ....................................................................................................... 332AWS CloudTrail を使用した AWS DMS API コールのログ作成 ....................................................... 333

CloudTrail 内の AWS DMS 情報 ........................................................................................ 334AWS DMS ログファイルエントリの概要 ............................................................................. 334

タスクの検証 .................................................................................................................................. 337レプリケーションタスクの統計 ................................................................................................. 338タスク実行中のテーブル再検証 ................................................................................................. 340

AWS マネジメントコンソール ........................................................................................... 340トラブルシューティング ........................................................................................................... 340

API バージョン API Version 2016-01-01iv

Page 5: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイド

制約事項 ................................................................................................................................ 341リソースのタグ付け ......................................................................................................................... 342

API ....................................................................................................................................... 343イベントと通知の使用 ...................................................................................................................... 345

AWS DMS イベントのカテゴリおよびイベントメッセージ ............................................................ 346AWS DMS イベント通知へサブスクライブする ........................................................................... 348

AWS マネジメントコンソール ........................................................................................... 348AWS DMS API ............................................................................................................... 349

Snowball Edge を使用した大規模データストアの移行 ........................................................................... 350プロセスの概要 ....................................................................................................................... 351前提条件 ................................................................................................................................ 352移行チェックリスト ................................................................................................................. 352ステップバイステップの手順 ..................................................................................................... 354

ステップ 1: Snowball Edge ジョブを作成する ..................................................................... 354ステップ 2: AWS Schema Conversion Tool (AWS SCT) をダウンロードしてインストールする .... 354ステップ 3: Snowball Edge デバイスをロック解除する ......................................................... 354ステップ 4: ODBC ドライバーで DMS エージェントホストを設定する .................................... 356ステップ 5: DMS エージェントをインストールする .............................................................. 358ステップ 6: 新しい AWS SCT プロジェクトを作成する ........................................................ 360ステップ 7: Snowball Edge を使用するために AWS SCT を設定する ...................................... 361ステップ 8: AWS SCT に DMS エージェントを登録する ....................................................... 363ステップ 9: ローカルおよび DMS タスクを作成する ............................................................. 364ステップ 10: SCT でタスクを実行してモニタリングします。 ................................................ 368

制約事項 ................................................................................................................................ 370トラブルシューティング ................................................................................................................... 371

移行タスクの実行の遅れ ........................................................................................................... 371タスクのステータスバーが動かない ........................................................................................... 372外部キーとセカンダリインデックスが見つからない ...................................................................... 372Amazon RDS 接続問題 ............................................................................................................ 372

エラーメッセージ: スレッドの接続文字列が正しくありません。正しくないスレッド値「0」 ..... 372ネットワーキングの問題 ........................................................................................................... 373全ロード後、CDC が停止する ................................................................................................... 373タスクを再開時のプライマリキー制約違反エラー ......................................................................... 373スキーマの初回ロードが失敗する .............................................................................................. 373不明なエラーが発生してタスクが失敗する .................................................................................. 374タスクを再開するとテーブルが最初からロードされる ................................................................... 374タスクあたりのテーブル数 ........................................................................................................ 374Oracle 固有の問題のトラブルシューティング .............................................................................. 374

ビューからデータを取得する ............................................................................................. 374Oracle 12c から LOB を移行する ...................................................................................... 375Oracle LogMiner と Binary Reader の切り替え .................................................................... 375エラー: Oracle CDC は停止しました。122301 Oracle CDC の最大再試行カウンタを超えました。 .............................................................................................................................. 375Oracle ソースエンドポイントにサプリメンタルロギングを自動的に追加する ........................... 375LOB の変更がキャプチャされない ..................................................................................... 376エラー: ORA-12899: 列 <column-name> の値が大きすぎる ................................................... 376NUMBER のデータ型が誤って解釈される ........................................................................... 376

MySQL 固有の問題のトラブルシューティング ............................................................................. 376バイナリログ作成が無効化されるため、Amazon RDS DB インスタンスのエンドポイントのCDC タスクが失敗する .................................................................................................... 377ターゲット MySQL のインスタンスへの接続は、タスクの実行中に接続が切断されます ............. 377MySQL 互換エンドポイントへの自動コミットを追加する ...................................................... 378MySQL 互換ターゲットエンドポイントで外部キーを無効化する ............................................. 378文字が疑問符に置き換えられる ......................................................................................... 378[Bad event] ログのエントリ .............................................................................................. 379MySQL 5.5 の変更データキャプチャ .................................................................................. 379Amazon RDS DB インスタンスのバイナリログ保持を延長する .............................................. 379

API バージョン API Version 2016-01-01v

Page 6: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイド

ログメッセージ: ソースデータベースからの一部の変更は、ターゲットデータベースに適用されても効果がありません。 ................................................................................................... 379エラー: 識別子が長すぎます .............................................................................................. 379エラー: サポートされていない文字セットによりフィールドデータ変換が失敗しました .............. 380Error: Codepage 1252 to UTF8 [120112] A field data conversion failed .................................... 380

PostgreSQL 固有の問題のトラブルシューティング ...................................................................... 380切り捨てられる JSON データ型 ........................................................................................ 381ユーザー定義のデータ型の列が正しく移行されない .............................................................. 381エラー: 作成用のスキーマが選択されていません .................................................................. 381CDC を使用時、テーブルへの削除や更新がレプリケートされない .......................................... 382TRUNCATE ステートメントが反映されない ........................................................................ 382PostgreSQL の DDL キャプチャを防止する ......................................................................... 382DDL キャプチャ用のデータベースオブジェクトを作成するスキーマの選択 .............................. 382PostgreSQL に移行した後 Oracle テーブルが存在しない ....................................................... 382ソースとしてビューを使用したタスクで行がコピーされない .................................................. 382

Microsoft SQL Server 固有の問題のトラブルシューティング .......................................................... 383AWS DMS ユーザーアカウントの CDC 使用を特別に許可する ............................................... 383SQL Server データベースの変更キャプチャエラー ............................................................... 383IDENTITY 列が存在しない ................................................................................................ 383エラー: SQL Server は公開をサポートしていません ............................................................. 383ターゲットに変更が表示されない ...................................................................................... 384

Amazon Redshift 固有の問題のトラブルシューティング ................................................................ 384AWS DMS レプリケーションのインスタンスとは異なるリージョンの Amazon Redshift クラスターにロードする ............................................................................................................ 384エラー: リレーション「awsdms_apply_exceptions」がすでに存在します ................................. 384名前が「awsdms_changes」で始まるテーブルのエラー ........................................................ 384dms.awsdms_changes000000000XXXX のような名前のクラスターのテーブルを参照する .......... 385Amazon Redshift での作業に必要なアクセス許可 ................................................................. 385

Amazon Aurora MySQL 固有の問題のトラブルシューティング ....................................................... 385エラー: CHARACTER SET UTF8 フィールドが「,」で切り取られています。行が「\n」で切り取られています ............................................................................................................... 385

ベストプラクティス ......................................................................................................................... 387パフォーマンスの向上 .............................................................................................................. 387レプリケーションインスタンスのサイズ設定 ............................................................................... 389ソースデータベースのロードを削減する ..................................................................................... 390タスクログを使用する .............................................................................................................. 390スキーマ変換 .......................................................................................................................... 390ラージバイナリオブジェクト (LOB) の移行 ................................................................................ 391

制限付き LOB モードの使用 ............................................................................................ 391継続的なレプリケーション ........................................................................................................ 392Oracle ターゲットのユーザーおよびスキーマの変更 .................................................................... 392Oracle ターゲットでテーブルとインデックスのテーブルスペースを変更する ................................... 392大規模なテーブルを移行する場合のパフォーマンスの向上 ............................................................ 393

リファレンス .................................................................................................................................. 394AWS DMS データ型 ................................................................................................................ 394

リリースノート ............................................................................................................................... 396AWS DMS 3.3.0 リリースノート ............................................................................................... 396AWS DMS 3.1.4 リリースノート ............................................................................................... 397AWS DMS 3.1.3 リリースノート ............................................................................................... 398AWS DMS 3.1.2 リリースノート ............................................................................................... 400AWS DMS 3.1.1 リリースノート ............................................................................................... 401AWS DMS 2.4.5 リリースノート ............................................................................................... 403AWS DMS 2.4.4 リリースノート ............................................................................................... 404AWS DMS 2.4.3 リリースノート ............................................................................................... 405AWS DMS 2.4.2 リリースノート ............................................................................................... 405AWS DMS 2.4.1 リリースノート ............................................................................................... 407AWS DMS 2.4.0 リリースノート ............................................................................................... 408

API バージョン API Version 2016-01-01vi

Page 7: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイド

AWS DMS 2.3.0 リリースノート ............................................................................................... 409ドキュメント履歴 ............................................................................................................................ 412

以前の更新 ............................................................................................................................. 412AWS の用語集 ................................................................................................................................ 415

API バージョン API Version 2016-01-01vii

Page 8: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドAWS DMS が実行する移行タスク

AWS Database Migration Service とは

AWS Database Migration Service (AWS DMS) は、リレーショナルデータベース、データウェアハウス、NoSQL データベース、他の種類のデータストアを移行しやすくするクラウドサービスです。AWSDMS を使用して、オンプレミスのインスタンス間 (AWS クラウドセットアップを使用)、またはクラウドセットアップとオンプレミスセットアップの組み合わせの間で、AWS クラウドにデータを移行できます。

AWS DMS を使用すると、1 回限りの移行を実行でき、継続的な変更をレプリケートしてソースとターゲットの同期を維持することができます。データベースエンジンを変更する場合、AWS SchemaConversion Tool (AWS SCT) を使用してデータベーススキーマを新しいプラットフォームに変換できます。次に、AWS DMS を使用してデータを移行します。AWS DMS は AWS クラウドの一部であるため、AWS のサービスが提供するコスト効率性、市場投入の迅速化、セキュリティ、柔軟性を手に入れることができます。

AWS DMS をサポートする AWS リージョンの詳細については、「AWS DMS レプリケーションインスタンスを使用する (p. 59)」を参照してください。データベース移行のコストについては、AWS DatabaseMigration Service の料金表ページを参照してください。

AWS DMS が実行する移行タスクAWS DMS は、移行プロジェクトに関係する難しいタスクや単調なタスクの多くを引き受けます。

• 従来のソリューションでは、容量分析の実行、ハードウェアおよびソフトウェアの調達、システムのインストールと管理、インストールのテストとデバッグが必要です。AWS DMS は、移行に必要なすべてのハードウェアおよびソフトウェアのデプロイ、管理、モニタリングを自動的に管理します。AWSDMS 設定プロセスを開始してから数分以内に稼働状態にすることができます。

• AWS DMS では、実際のワークロードに合わせて必要に応じて移行リソースをスケールアップ (またはスケールダウン) できます。たとえば、ストレージを追加する必要があると判断した場合、割り当てられたストレージを簡単に増やして、移行を再開 (通常は数分以内に) することができます。一方、設定したリソース容量に使用していないものがあることがわかった場合、実際のワークロードに合わせてダウンサイジングを簡単に行うことができます。

• AWS DMS は従量制モデルを採用しています。前払いの購入コストや継続的なメンテナンス費用が必要な従来のライセンスモデルとは異なり、使用した AWS DMS リソースに対してのみお支払いいただきます。

• AWS DMS は、ハードウェアとソフトウェア、ソフトウェアのパッチ適用、エラーレポートなど、移行サーバーをサポートするすべてのインフラストラクチャを自動的に管理します。

• AWS DMS は、自動フェイルオーバーを提供します。プライマリレプリケーションサーバーが何らかの理由で停止した場合、バックアップレプリケーションサーバーがサービスをほとんどまたはまったく中断させることなく引き継ぐことができます。

• AWS DMS では、現在実行しているデータベースエンジンよりおそらくコスト効果の高い最新のデータベースエンジンに切り替えることができます。たとえば、AWS DMS では、Amazon RDS または Amazon Aurora により提供されるマネージド型データベースサービスを活用できます。または、Amazon Redshift で提供するマネージド型データウェアハウスサービス、Amazon DynamoDB のような NoSQL プラットフォームや Amazon Simple Storage Service (Amazon S3) のような低コストのストレージプラットフォームへの移動に便利です。逆に、古いインフラストラクチャから移行するが、同じデータベースエンジンを引き続き使用する場合、AWS DMS によりそのプロセスもサポートされます。

API バージョン API Version 2016-01-011

Page 9: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイド基本レベルでの AWS DMS の仕組み

• AWS DMS は、Oracle、Microsoft SQL Server、MySQL、MariaDB、PostgreSQL、Db2LUW、SAP、MongoDB、Amazon Aurora など、現在データソースとして広く使用されているほぼすべての DBMS エンジンをサポートします。

• AWS DMS は、Oracle、Microsoft SQL Server、PostgreSQL、MySQL、Amazon Redshift、SAPASE、Amazon S3、Amazon DynamoDB など、使用可能なターゲットエンジンを広範にサポートしています。

• サポートされている任意のデータソースから、サポートされている任意のデータターゲットに移行できます。AWS DMS は、サポートされているエンジン間での完全に異種のデータ移行をサポートしています。

• AWS DMS により、データ移行は安全に保たれます。保存データは AWS Key Management Service(AWS KMS) 暗号化によって暗号化されます。移行時は、Secure Socket Layer (SSL) を使用して、ソースからターゲットに移動する転送中のデータを暗号化できます。

基本レベルでの AWS DMS の仕組み突き詰めると、AWS DMS はレプリケーションソフトウェアを実行する AWS クラウド内のサーバーです。お客様は、ソースとターゲットの接続を作成し、抽出元とロード先を AWS DMS に指示します。その後、このサーバーで実行するタスクをスケジュールし、データを移動します。AWS DMS は、テーブルと関連付けられたプライマリキーがターゲットに存在しない場合はそれらを作成します。必要に応じて、ターゲットテーブルを手動で事前に作成することができます。または、AWS SCT を使用して、ターゲットテーブル、インデックス、ビュー、トリガーなどの一部またはすべてを作成できます。

以下の図は、AWS DMS プロセスを示したものです。

AWS DMS プロセスを実行するには (開始と終了)

1. 移行プロジェクトを開始するには、ソースとターゲットのデータストアを識別します。これらのデータストアは、前述のどのデータエンジンにも配置できます。

2. ソースとターゲットの両方で、データベースへの接続情報を指定する AWS DMS 内のエンドポイントを設定します。エンドポイントは、適切な ODBC ドライバを使用してソースおよびターゲットと通信します。

3. レプリケーションインスタンスをプロビジョンします。このインスタンスは、AWS DMS がレプリケーションソフトウェアを使用して自動的に設定するサーバーです。

4. レプリケーションタスクを作成します。このタスクは、移行する実際のデータテーブルと適用するデータ変換ルールを指定します。AWS DMS は、レプリケーションタスクの実行を管理し、移行プロセスにおけるステータスを示します。

詳細については、以下をご覧ください。

API バージョン API Version 2016-01-012

Page 10: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイド基本レベルでの AWS DMS の仕組み

• AWS の他のサービスをすでに利用している方が初めて AWS DMS を利用する場合は、まず「AWSDatabase Migration Service の詳細 (p. 4)」を参照してください。このセクションでは、AWS DMSの主要なコンポーネントと移行のセットアップと実行の全体的なプロセスについて詳しく説明しています。

• データベースエンジンを切り替える場合、AWS Schema Conversion Tool を使用すると、テーブル、インデックス、ほとんどのアプリケーションコードなどの既存のデータベーススキーマをターゲットプラットフォームに変換できます。

• 移行戦略の設計が必要な可能性のある関連する AWS のサービスの詳細については、「AWS クラウド製品」を参照してください。

• アマゾン ウェブ サービスでは、数多くのデータベースサービスを提供しています。ご利用の環境に最適なサービスについてのガイダンスは、「AWS でのデータベースの実行」を参照してください。

• すべての AWS 製品の概要については、「クラウドコンピューティングとは」を参照してください。

API バージョン API Version 2016-01-013

Page 11: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドAWS DMS の概要

AWS Database Migration Service の詳細

AWS Database Migration Service (AWS DMS) は、ソースデータストアからターゲットデータストアへのデータの移行に使用できるウェブサービスです。この 2 つのデータストアはエンドポイントと呼ばれます。移行は、同じデータベースエンジンを使用するソースエンドポイントとターゲットエンドポイント (Oracle データベースと Oracle データベースなど) の間で行うことができます。移行は、異なるデータベースエンジンを使用するソースエンドポイントとターゲットエンドポイント (Oracle データベースとPostgreSQL データベースなど) の間で行うこともできます。AWS DMS を使用する唯一の要件は、エンドポイントの 1 つが AWS のサービス上にあることです。AWS DMS を使用して、オンプレミスのデータベースから別のオンプレミスのデータベースに移行することはできません。

データベース移行のコストについては、「AWS Database Migration Service の料金表ページ」を参照してください。

次のトピックを使用して AWS DMS についての理解を深めます。

トピック• AWS DMS の概要 (p. 4)• AWS Database Migration Service のコンポーネント (p. 5)• AWS Database Migration Service のソース (p. 10)• AWS Database Migration Service のターゲット (p. 12)• 他の AWS サービスで AWS DMS を使用する (p. 13)

AWS DMS の概要データベース移行を実行するには、AWS DMS はソースデータストアに接続し、ソースデータを読み取り、ターゲットデータストアが使用できるようにデータをフォーマットします。次に、ターゲットデータストアにデータをロードします。この処理のほとんどはメモリ内で行われますが、大きいトランザクションではディスクへのバッファリングが必要になることがあります。キャッシュされたトランザクションとログファイルもディスクに書き込まれます。

大まかに述べると、AWS DMS を使用するときは、次の操作を行います。

• レプリケーションサーバーを作成します。• データストアに関する接続情報を持つソースエンドポイントとターゲットエンドポイントを作成しま

す。• ソースデータストアとターゲットデータストアの間でデータを移行するには、1 つ以上の移行タスクを

作成します。

タスクは、3 つの主なフェーズで構成できます。

• 既存のデータの全ロード• キャッシュされた変更の適用

API バージョン API Version 2016-01-014

Page 12: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドコンポーネント

• 継続的なレプリケーション

ソースの既存のデータがターゲットに移動される全ロード移行時、AWS DMS はソースデータストア上のテーブルからターゲットデータストア上のテーブルにデータをロードします。全ロードの進行中、ロードするテーブルに加えられた変更はすべてレプリケーションサーバーにキャッシュされます。これらがキャッシュされた変更点です。AWS DMS は、特定のテーブルの全ロードが開始されるまで、そのテーブルの変更をキャプチャしない点に注意することが重要です。つまり、変更キャプチャが開始されるポイントは、個々のテーブルごとに異なります。

特定のテーブルの全ロードが完了すると、AWS DMS はすぐにそのテーブルのキャッシュされた変更を適用し始めます。すべてのテーブルがロードされると、AWS DMS は継続的なレプリケーションフェーズのトランザクションとして変更を収集し始めます。AWS DMS がキャッシュされた変更をすべて適用すると、テーブルはトランザクション面で一貫したものになります。この時点で、AWS DMS は継続的なレプリケーションフェーズに移り、変更がトランザクションとして適用されます。

継続的なレプリケーションフェーズの開始時、トランザクションのバックログにより、ソースデータベースとターゲットデータベースの間に通常いくらかの遅延が発生します。このトランザクションバックログが終わると、移行は最終的に安定した状態になります。この時点で、アプリケーションをシャットダウンして、残りのトランザクションをターゲットに適用できるようにし、ターゲットデータベースをポイントするようになったアプリケーションを起動できます。

AWS DMS は、移行の実行に必要なターゲットスキーマオブジェクトを作成します。ただし、AWS DMSは最小限のアプローチを採用するため、データの効率的な移行に必要なオブジェクトのみ作成します。つまり、AWS DMS は、テーブル、プライマリキー、場合によっては一意のインデックスを作成しますが、効率的にソースからデータを移行するために必要ではない他のオブジェクトは作成されません。たとえば、セカンダリインデックス、非プライマリキーの制約、データデフォルトは作成されません。

ほとんどの場合、移行を実行するとき、ソーススキーマの大部分またはすべても移行します。同機種間移行 (同じエンジンタイプの 2 つのデータベース間) を実行する場合、エンジンのネイティブツールを使用してスキーマ自体 (データなし) をエクスポートおよびインポートすることによりスキーマを移行します。

移行が異機種間 (異なるエンジンタイプを使用する 2 つのデータベース間) の場合、AWS SchemaConversion Tool (AWS SCT) を使用して完全なターゲットスキーマを自動的に生成できます。このツールを使用した場合、「全ロード」フェーズと「キャッシュされた変更の適用」フェーズの間は、外部キーの制約など、テーブル間の依存関係をすべて無効にする必要があります。パフォーマンスが問題になる場合は、移行プロセス中にセカンダリインデックスを削除または無効にすると役立ちます。AWS SCT の詳細については、AWS SCT ドキュメントの「AWS Schema Conversion Tool」を参照してください。

AWS Database Migration Service のコンポーネントこのセクションでは、AWS DMS の内部コンポーネントと、データ移行におけるそのコンポーネントの動作について説明します。AWS DMS の基礎となるコンポーネントを理解することで、効率的にデータを移行し、問題のトラブルシューティング時および調査時に優れた洞察を得ることができます。

AWS DMS の移行は、レプリケーションインスタンス、ソースエンドポイントとターゲットエンドポイント、およびレプリケーションタスクの 3 つのコンポーネントで構成されます。AWS DMS 移行を作成するには、必要なレプリケーションインスタンス、エンドポイント、タスクを AWS リージョンに作成します。

レプリケーションインスタンス

大まかに説明すると、AWS DMS レプリケーションインスタンスは、1 つ以上のレプリケーションタスクをホストするマネージド Amazon Elastic Compute Cloud (Amazon EC2) インスタンスです。

関連付けられたいくつかのレプリケーションタスクを実行するレプリケーションインスタンスの例を以下の図に示します。

API バージョン API Version 2016-01-015

Page 13: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドコンポーネント

移行の特性とレプリケーションサーバーの容量に応じて、1 つのレプリケーションインスタンスを使用して、1 つ以上のレプリケーションタスクをホストできます。AWS DMS では、ユースケースに最適な設定を選択できるように、さまざまなレプリケーションインスタンスが用意されています。レプリケーションインスタンスのさまざまなクラスの詳細については、「移行に適した AWS DMS レプリケーションインスタンスを選択する (p. 60)」を参照してください。

AWS DMS では、Amazon EC2 インスタンス上にレプリケーションインスタンスが作成されます。サービスのテストや小規模な移行の場合、いくつかの小さいインスタンスクラスで十分です。移行に多数のテーブルが関与する場合や、複数の同時レプリケーションタスクを実行する予定の場合、大きいインスタンスを 1 つ使用することを検討してください。AWS DMS はかなりのメモリと CPU を消費する可能性があるため、このアプローチが推奨されます。

API バージョン API Version 2016-01-016

Page 14: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドコンポーネント

選択した Amazon EC2 インスタンスクラスに応じて、レプリケーションインスタンスには 50 GB または 100 GB のデータストレージが付属しています。ほとんどのお客様にとって、通常このストレージ容量は十分な量です。ただし、移行で大規模なトランザクションや大量のデータ変更が発生する場合は、基本ストレージの割り当てを増やします。変更データキャプチャ (CDC) によって、データがディスクに書き込まれる可能性があります。これは、ターゲットから変更が書き込まれる速度によって異なります。

AWS DMS は、マルチ AZ 配置を使用して高可用性およびフェイルオーバーサポートを提供します。マルチ AZ 配置では、AWS DMS によって異なるアベイラビリティーゾーンにレプリケーションインスタンスのスタンバイレプリカが自動的にプロビジョンされて維持されます。プライマリレプリケーションインスタンスは、同期的にスタンバイレプリカにレプリケートされます。プライマリレプリケーションインスタンスに障害が発生するか、応答しない場合、スタンバイ状態で中断時間をできる限り抑えて、実行中のタスクを再開します。プライマリはその状態を常にスタンバイにレプリケーションしているため、マルチ AZ 配置ではパフォーマンス上のオーバーヘッドが発生します。

AWS DMS レプリケーションインスタンスの詳細については、「AWS DMS レプリケーションインスタンスを使用する (p. 59)」を参照してください。

エンドポイント

AWS DMS は、エンドポイントを使用してソースまたはターゲットのデータストアにアクセスします。特定の接続情報はデータストアによって異なりますが、一般的にエンドポイントを作成するときは次の情報を指定します。• エンドポイントタイプ — ソースまたはターゲット。• エンジンタイプ — データベースエンジンのタイプ (例: Oracle、PostgreSQL、または Amazon

S3)。• サーバー名 — AWS DMS が到達可能なサーバー名または IP アドレス。• ポート — データベースサーバー接続に使用されるポート番号。• 暗号化 — SSL モード (接続を暗号化するために使用する場合)。• 認証情報 — 必要なアクセス権限を持つアカウントのユーザー名とパスワード。

AWS DMS コンソールを使用してエンドポイントを作成する場合は、コンソールでエンドポイント接続をテストする必要があります。DMS タスクでエンドポイントを使用する前に、テストが成功している必要があります。接続情報と同様に、特定のテスト基準はエンジンの種類によって異なります。一般的に、AWS DMS では、指定されたサーバー名とポートにデータベースが存在すること、提供された認証情報を使用して、移行を実行するために必要なアクセス許可を持つデータベースに接続できることを検証します。接続テストが成功した場合、AWS DMS では、テーブル定義やプライマリ/一意のキー定義を含むスキーマ情報をダウンロードして格納します。この情報は、タスク設定時に後に使用することができます。

複数のレプリケーションタスクで単一のエンドポイントを使用することができます。たとえば、別々に移行する同じソースデータベースにホストされている 2 つの論理的に異なるアプリケーションがあるとします。アプリケーションテーブルのセットごとに 1 つずつ、2 つのレプリケーションタスクを作成しますが、両方のタスクで同じ AWS DMS エンドポイントを使用できます。

エンドポイントの動作をカスタマイズするには、追加接続属性を使用します。これらの属性は、ログの詳細、ファイルサイズ、およびその他のパラメータなど、さまざまな動作を制御できます。データストアのエンジンタイプにはそれぞれ、使用可能な追加接続属性があります。データストアごとの追加接続属性は、データストアのソースセクションまたはターゲットセクションにあります。サポートされているソースとターゲットデータストアのリストについては、「AWS Database MigrationService のソース (p. 10)」と「AWS Database Migration Service のターゲット (p. 12)」を参照してください。

AWS DMS エンドポイントの詳細な情報については、「AWS DMS エンドポイントの使用 (p. 86)」を参照してください。

API バージョン API Version 2016-01-017

Page 15: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドコンポーネント

レプリケーションタスク

AWS DMS レプリケーションタスクを使用して、一連のデータをソースエンドポイントからターゲットエンドポイントに移動します。レプリケーションタスクの作成は、移行を開始する前に最後に実行する必要があります。

レプリケーションタスクの作成時に以下のタスク設定を指定します。• レプリケーションインスタンス – タスクをホストして実行するインスタンス• ソースエンドポイント• ターゲットエンドポイント• 移行タイプオプションは次にリストされるとおりです。移行タイプのオプションの詳細な説明につ

いては、「タスクの作成 (p. 254)」を参照してください。• 全ロード (既存データの移行) – 既存のデータをコピーできる長さの停止が許容される場合は、こ

のオプションが適しています。このオプションでは、ソースデータベースからターゲットデータベースにデータがそのまま移行され、必要に応じてテーブルが作成されます。

• 全ロード + CDC (既存のデータを移行して、継続的な変更をレプリケート) – このオプションでは、ソースで変更をキャプチャしながら、全データロードが実行されます。フルロードが完了すると、キャプチャされた変更がターゲットに適用されます。最終的に、変更の適用は安定した状態に到達します。この時点で、アプリケーションをシャットダウンし、残りの変更がターゲットに移動するようにした後、ターゲットをポイントするアプリケーションを再起動できます。

• CDC のみ (データ変更のみレプリケート) – 状況によっては、AWS DMS 以外の方法を使用して既存のデータをコピーした方が効率的なことがあります。たとえば、同機種間移行では、一括データのロードにネイティブエクスポート/インポートツールを使用した方が効率的なことがあります。この状況では、AWS DMS を使用し、一括ロードを開始したときから変更をレプリケートして、ソースデータベースとターゲットデータベースの同期を保つことができます。

• ターゲットテーブル準備モードオプションは以下にリストされるとおりです。ターゲットテーブルモードの詳細な説明については、「タスクの作成 (p. 254)」を参照してください。• 何もしない – AWS DMS ではターゲットテーブルがターゲットで事前に作成されていることを前

提とします。• ターゲット上のテーブルを削除 – AWS DMS はターゲットテーブルを削除して再作成します。• 切り捨て – ターゲットでテーブルを作成済みである場合、AWS DMS は移行の開始前にそれらを

切り捨てます。テーブルが存在しない場合、このオプションを選択すると、AWS DMS は不足しているテーブルを作成します。

• LOB モードオプションは以下にリストされるとおりです。LOB モードの詳細な説明については、「AWS DMS タスクのソースデータベースの LOB サポートの設定 (p. 280)」を参照してください。• LOB 列を含めない – LOB 列は移行対象から除外されます。• 完全 LOB モード – サイズに関係なく LOB 全体を移行します。AWS DMS は、最大 LOB サイ

ズパラメータで制御されるチャンクの単位で LOB を移行します。このモードは制限付き LOBモードを使用するよりも低速です。

• 制限付き LOB モード – LOB を最大 LOB サイズパラメータで指定された値まで切り詰めます。このモードは完全 LOB モードを使用するよりも高速です。

• テーブルマッピング – 移行するテーブルと移行方法を示します。詳細については、「テーブルマッピングを使用して、タスクの設定を指定する (p. 286)」を参照してください。

• データ変換は以下にリストされるとおりです。データ変換の詳細については、「 JSON を使用するテーブルマッピングによりテーブル選択および変換を指定する (p. 291)」を参照してください。• スキーマ、テーブル、および列の名前を変更します。• テーブルスペース名の変更 (Oracle ターゲットエンドポイント用)。• ターゲットのプライマリキーと一意のインデックスを定義します。

• データ検証• Amazon CloudWatch ログ記録

API バージョン API Version 2016-01-018

Page 16: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドコンポーネント

タスクを使用してソースエンドポイントからターゲットエンドポイントにデータを移行します。タスク処理はレプリケーションインスタンスで実行されます。ログ記録要件、制御テーブルデータ、エラー処理など、移行するテーブルとスキーマ、および特別な処理を指定します。

概念的には、AWS DMS レプリケーションタスクは、次の図に示すように 2 つの異なる機能を実行します。

全ロードプロセスは、簡単に理解できます。データは、ソースから一括抽出で抽出され、ターゲットに直接ロードされます。AWS DMS コンソールの [詳細設定] で、抽出して並列にロードするテーブルの数を指定できます。

AWS DMS タスクの詳細については、「AWS DMS タスクの使用 (p. 250)」を参照してください。

API バージョン API Version 2016-01-019

Page 17: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドソース

継続的なレプリケーションまたは変更データキャプチャ (CDC)

AWS DMS タスクを使用して、ターゲットへのデータの移行中にソースデータストアへの継続的な変更をキャプチャすることもできます。ソースエンドポイントから継続的な変更をレプリケートするときに AWS DMS が使用する変更キャプチャプロセスは、データベースエンジンのネイティブ API を使用することでデータベースログへの変更を収集します。

CDC プロセスで、レプリケーションタスクは、メモリ内のバッファを使用して転送中のデータを保持することによって、ソースからターゲットへの変更をストリーミングするように設計されています。何らかの理由でメモリ内バッファが枯渇すると、レプリケーションタスクによって、ディスク上のキャッシュの変更は保留中に変更されます。この状況は、たとえば、AWS DMS がソースからの変更をターゲットに適用できるよりも速く取得している場合に発生します。この場合、タスクのターゲットレイテンシーが、タスクのソースレイテンシーを超えていることがわかります。

これを確認するには、AWS DMS コンソールでタスクに移動し、[Task Monitoring (タスク監視)] タブを開きます。CDCLatencyTarget グラフと CDCLatencySource グラフは、ページの下部に表示されます。ターゲットのレイテンシーを示すタスクがある場合は、アプリケーションの速度を上げるために必要なターゲットエンドポイントのチューニングがある可能性があります。

上記で説明したように、レプリケーションタスクでは、タスクログ用のストレージも使用されます。通常、レプリケーションインスタンスで事前設定されているディスク容量では、十分に変更をログ記録および反映することができます。追加のディスク容量が必要な場合 (例: 詳細なデバッグを使用して移行の問題を調査する場合)、レプリケーションインスタンスを変更してより多くの容量を割り当てることができます。

スキーマおよびコード移行

AWS DMS は、スキーマまたはコード変換を実行しません。ソースとターゲットが同じデータベースエンジンの場合、Oracle SQL Developer、MySQL Workbench、または pgAdmin III などのツールを使用して、スキーマを起動できます。異なるデータベースエンジンに既存のスキーマを変換する場合、AWS SCT を使用できます。このツールは、ターゲットスキーマを作成でき、スキーマ全体 (テーブル、インデックス、ビューなど) を生成および作成することもできます。AWS SCT を使用して PL/SQL または TSQL を PgSQL や他の形式に変換することもできます。AWS SCT の詳細については、「AWS Schema Conversion Tool」を参照してください。

可能な限り、AWS DMS はターゲットスキーマを自動的に作成するように試みます。場合によっては、AWS DMS はスキーマを作成することができません。たとえば、セキュリティ上の理由から AWSDMS はターゲット Oracle スキーマを作成しません。MySQL データベースターゲットの場合、追加の接続属性を使用にすることにより、AWS DMS がすべてのオブジェクトと指定されたデータベースおよびスキーマに移行したり、ソース上でスキーマを検出したときに各データベースおよびスキーマを自動的に作成したりするようにできます。

AWS Database Migration Service のソースAWS Database Migration Service を使用したデータ移行のソースエンドポイントとして、以下のデータストアを使用できます。

オンプレミスおよび EC2 インスタンスデータベース

• Enterprise、Standard、Standard One、および Standard Two エディションの Oracle バージョン 10.2 以降 (バージョン 10.x)、11g、12.2 および 18c まで

Note

ソースとして Oracle バージョン 18c のサポートは、AWS DMS バージョン 3.3.0 以降で利用できます。

• Enterprise、Standard、Workgroup、および Developer エディションの Microsoft SQL Server バージョン 2005、2008、2008R2、2012、2014、2016、2017。Web および Express エディションはサポートされていません。

API バージョン API Version 2016-01-0110

Page 18: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドソース

• MySQL バージョン 5.5、5.6、5.7.• MariaDB (MySQL 互換データソースとしてサポート) バージョン 10.0.24 から 10.0.28、10.1、10.2。

Note

ソースとしての MariaDB のサポートは、MySQL がサポートされているすべての AWS DMSバージョンで利用できます。

• PostgreSQL バージョン 9.4 以降 (バージョン 9.x 用)、10.x、11.x。

Note

PostgreSQL 11.x バージョンは AWS DMS バージョン 3.3.0 以降でのみソースとしてサポートされています。PostgreSQL バージョン 9.4 以降 (バージョン 9.x 用) および 10.x を任意のDMS バージョンのソースとして使用できます。

• MongoDB バージョン 2.6.x およ 3.x 以降.• SAP Adaptive Server Enterprise (ASE) バージョン 12.5、15、15.5、15.7、16 以降.• IBM DB 2 for Linux、UNIX、および Windows (Db2 LUW) バージョン:

• バージョン 9.7、すべての Fix Pack がサポートされています。• バージョン 10.1、すべての Fix Pack がサポートされています。• Version 10.5、Fix Pack 5 を除くすべての Fix Pack がサポートされています。

Microsoft Azure

• Azure SQL データベース。

Amazon RDS インスタンスデータベース、および Amazon Simple Storage Service (Amazon S3)

• Enterprise、Standard、Standard One、および Standard Two エディションの Oracle バージョン 10.2 以降 (バージョン 10.x)、11g (バージョン 11.2.0.3.v1 以降)、12.2 および 18c まで。

Note

ソースとして Oracle バージョン 18c のサポートは、AWS DMS バージョン 3.3.0 以降で利用できます。

• Enterprise、Standard、Workgroup、および Developer エディションの Microsoft SQL Server バージョン 2008R2、2012、2014、2016、2017。Web および Express エディションはサポートされていません。

• MySQL バージョン 5.5、5.6、5.7.• MariaDB (MySQL 互換データソースとしてサポート) バージョン 10.0.24 から 10.0.28、10.1、10.2。

Note

ソースとしての MariaDB のサポートは、MySQL がサポートされているすべての AWS DMSバージョンで利用できます。

• PostgreSQL バージョン 9.4 以降 (バージョン 9.x 用)、10.x、11.x。変更データキャプチャ (CDC)は、バージョン 9.4.9 以降と 9.5.4 以降、10.x、および 11.x でのみサポートされます。CDCに必要なrds.logical_replication パラメータは、これらのバージョン以降でのみサポートされています。

Note

PostgreSQL 11.x バージョンは AWS DMS バージョン 3.3.0 以降でのみソースとしてサポートされています。PostgreSQL バージョン 9.4 以降 (バージョン 9.x 用) および 10.x を任意のDMS バージョンのソースとして使用できます。

• Amazon Aurora (MySQL 互換データソースとしてサポートされています).• Amazon S3。

API バージョン API Version 2016-01-0111

Page 19: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲット

AWS Database Migration Service のターゲットAWS Database Migration Service を使用したデータ移行のターゲットエンドポイントとして、以下のデータストアを使用できます。

オンプレミスおよび Amazon EC2 インスタンスデータベース

• Enterprise、Standard、Standard One、および Standard Two エディションの Oracle バージョン10g、11g、12c、18c。

Note

ターゲットとして Oracle バージョン 18c のサポートは、AWS DMS バージョン 3.3.0 以降で利用できます。

• Enterprise、Standard、Workgroup、および Developer エディションの Microsoft SQL Server バージョン 2005、2008、2008R2、2012、2014、2016、2017。Web および Express エディションはサポートされていません。

• MySQL、バージョン 5.5、5.6、5.7。• MariaDB (MySQL 互換データターゲットとしてサポート) バージョン 10.0.24 から

10.0.28、10.1、10.2、10.3。

Note

ターゲットとしての MariaDB のサポートは、MySQL がサポートされているすべての AWSDMS バージョンで利用できます。

• PostgreSQL バージョン 9.4 以降 (バージョン 9.x 用)、10.x、11.x。

Note

PostgreSQL バージョン 11.x は AWS DMS バージョン 3.3.0 以降でのみターゲットとしてサポートされています。PostgreSQL バージョン 9.4 以降 (バージョン 9.x 用) および 10.x を任意の DMS バージョンのターゲットとして使用できます。

• SAP Adaptive Server Enterprise (ASE) バージョン 15、15.5、15.7、16 以降。

Amazon RDS インスタンスのデータベース、Amazon Redshift、Amazon DynamoDB、AmazonS3、Amazon Elasticsearch Service、Amazon Kinesis Data Streams、および AmazonDocumentDB

• Oracle バージョン 11g (バージョン 11.2.0.3.v1 以降) および Enterprise、Standard、StandardOne、Standard Two エディション向け 12c、18c。

Note

ターゲットとして Oracle バージョン 18c のサポートは、AWS DMS バージョン 3.3.0 以降で利用できます。

• Enterprise、Standard、Workgroup、および Developer エディションの Microsoft SQL Server バージョン 2008R2、2012、2014、2016、2017。Web および Express エディションはサポートされていません。

• MySQL、バージョン 5.5、5.6、5.7。• MariaDB (MySQL 互換データターゲットとしてサポート) バージョン 10.0.24 から

10.0.28、10.1、10.2、10.3。

Note

ターゲットとしての MariaDB のサポートは、MySQL がサポートされているすべての AWSDMS バージョンで利用できます。

API バージョン API Version 2016-01-0112

Page 20: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイド他の AWS サービスで使用する

• PostgreSQL バージョン 9.4 以降 (バージョン 9.x 用)、10.x、11.x。

Note

PostgreSQL バージョン 11.x は AWS DMS バージョン 3.3.0 以降でのみターゲットとしてサポートされています。PostgreSQL バージョン 9.4 以降 (バージョン 9.x 用) および 10.x を任意の DMS バージョンのターゲットとして使用できます。

• MySQL と互換性がある Amazon Aurora。• PostgreSQL との互換性がある Amazon Aurora。• Amazon Redshift。• Amazon S3。• Amazon DynamoDB。• Amazon Elasticsearch Service。• Amazon Kinesis Data Streams。• Amazon DocumentDB (MongoDB 互換)。

他の AWS サービスで AWS DMS を使用する他のいくつかの AWS のサービスで AWS DMS を使用することができます。

• Amazon EC2 インスタンスまたは Amazon RDS DB インスタンスをデータ移行のターゲットとして使用できます。

• AWS Schema Conversion Tool (AWS SCT) を使用して、ソーススキーマと SQL コードを同等のターゲットスキーマと SQL コードに変換できます。

• Amazon S3 をデータのストレージサイトとして使用することも、大量のデータを移行する際の中間ステップとして使用することもできます。

• AWS CloudFormation を使用して、インフラストラクチャの管理または導入用の AWS リソースを設定できます。たとえば、レプリケーションインスタンス、タスク、証明書、エンドポイントなどの AWSDMS リソースをプロビジョニングできます。必要なすべての AWS リソースを説明するテンプレートを作成すれば、AWS CloudFormation がお客様に代わってこれらのリソースのプロビジョンや設定を処理します。

AWS DMS による AWS CloudFormation のサポートAWS CloudFormation を使用して AWS Database Migration Service リソースをプロビジョンできます。AWS CloudFormation は、インフラストラクチャの管理またはデプロイ用に AWS のリソースのモデル化とセットアップを支援するサービスです。たとえば、レプリケーションインスタンス、タスク、証明書、エンドポイントなどの AWS DMS リソースをプロビジョニングできます。必要なすべての AWS リソースを説明するテンプレートを作成すれば、AWS CloudFormation がお客様に代わってこれらのリソースのプロビジョンや設定を処理します。

開発者またはシステム管理者は、これらのリソースのコレクションを作成および管理し、繰り返し行われる移行タスクや、組織へのリソースのデプロイに使用できます。AWS CloudFormation の詳細については、『AWS CloudFormation ユーザーガイド』の「AWS CloudFormation 概念」を参照してください。

AWS DMS は、AWS CloudFormation を使用した次の AWS DMS リソースの作成をサポートします。

• AWS::DMS::Certificate• AWS::DMS::Endpoint• AWS::DMS::EventSubscription

API バージョン API Version 2016-01-0113

Page 21: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドARN の構築

• AWS::DMS::ReplicationInstance• AWS::DMS::ReplicationSubnetGroup• AWS::DMS::ReplicationTask

AWS DMS の Amazon リソースネーム (ARN) の構築AWS CLI または AWS Database Migration Service API を使用してデータベース移行を自動化する場合、Amazon リソースネーム (ARN) の使用方法について知っておく必要があります。Amazon WebServices で作成されたリソースは、一意の識別子である ARN によって特定されます。AWS CLI またはAWS DMS API を使用してデータベース移行をセットアップする場合は、操作するリソースの ARN を指定する必要があります。

AWS DMS リソースの ARN には以下の構文を使用します。

arn:aws:dms:<region>:<account number>:<resourcetype>:<resourcename>

この構文の説明は次のとおりです。

• <region> は、us-west-2 などの AWS DMS リソースが作成された AWS リージョンの ID です。

以下の表に、ARN を作成するときに使用する必要のある AWS リージョンの名前とその値を示します。

サービス対象 名前

アジアパシフィック (東京) リージョン ap-northeast-1

アジアパシフィック (ソウル) リージョン ap-northeast-2

アジアパシフィック (ムンバイ) リージョン ap-south-1

アジアパシフィック (シンガポール) リージョン ap-southeast-1

アジアパシフィック (シドニー) リージョン ap-southeast-2

カナダ (中部) リージョン ca-central-1

欧州 (フランクフルト) リージョン eu-central-1

欧州 (アイルランド) リージョン eu-west-1

欧州 (ロンドン) リージョン eu-west-2

南米 (サンパウロ) リージョン sa-east-1

米国東部 (バージニア北部) リージョン us-east-1

米国東部 (オハイオ) リージョン us-east-2

米国西部 (北カリフォルニア) リージョン us-west-1

米国西部 (オレゴン) リージョン us-west-2

• <account number> はダッシュ記号が省略されたアカウント番号です。アカウント番号を見つけるには、http://aws.amazon.com で自分の AWS アカウントにログインし、[My Account/Console (アカウント/コンソール)]、[My Account (アカウント)] の順に選択します。

• <resourcetype> は、AWS DMS リソースのタイプです。

次の表は、特定の AWS DMS リソースの ARN を構築するときに使用する必要があるリソースタイプを示しています。

API バージョン API Version 2016-01-0114

Page 22: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドARN の構築

AWS DMS リソースタイプ

ARN 形式

レプリケーションインスタンス

arn:aws:dms:<region>: <account>:rep: <resourcename>

エンドポイント arn:aws:dms:<region>:<account>:endpoint: <resourcename>

レプリケーションタスク

arn:aws:dms:<region>:<account>:task:<resourcename>

サブネットグループ arn:aws:dms:<region>:<account>:subgrp:<resourcename>

• <resourcename> は、AWS DMS リソースに割り当てられたリソース名です。これは生成された任意の文字列です。

以下の表に示しているのは、AWS DMS リソースの ARN の例です。AWS アカウントは 123456789012、作成リージョンは 米国東部(バージニア北部)、リソース名は次のようになっているとします。

リソースタイプ サンプル ARN

レプリケーションインスタンス

arn:aws:dms:us-east-1:123456789012:rep:QLXQZ64MH7CXF4QCQMGRVYVXAI

エンドポイント arn:aws:dms:us-east-1:123456789012:endpoint:D3HMZ2IGUCGFF3NTAXUXGF6S5A

レプリケーションタスク

arn:aws:dms:us-east-1:123456789012:task:2PVREMWNPGYJCVU2IBPTOYTIV4

サブネットグループ arn:aws:dms:us-east-1:123456789012:subgrp:test-tag-grp

API バージョン API Version 2016-01-0115

Page 23: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドAWS にサインアップする

AWS Database Migration Service のセットアップ

AWS Database Migration Service (AWS DMS) を初めて使用する場合は、事前に以下のタスクをすべて実行してください。

1. AWS にサインアップする (p. 16)2. IAM ユーザーを作成する (p. 16)3. AWS Database Migration Service での移行計画 (p. 18)

AWS にサインアップするアマゾン ウェブ サービス(AWS)にサインアップすると、AWS アカウントが AWS 内のすべてのサービス(AWS DMS など)に自動的にサインアップされます。料金が発生するのは、実際に使用したサービスの分のみです。

AWS DMS は、使用したリソース分のみお支払いいただくだけで利用可能です。作成した AWS DMS レプリケーションインスタンスはライブとなります (サンドボックスで実行されるわけではありません)。インスタンスを終了するまで、AWS DMS の標準使用料が発生します。AWS DMS の使用料の詳細については、AWS DMS 製品ページを参照してください。AWS の新規のお客様である場合は、AWS DMS の使用を無料で開始できます。詳細については、「AWS 無料利用枠」を参照してください。

AWS アカウントを閉じた場合、アカウントに関連付けられたすべての AWS DMS リソースおよび設定は2 日後に削除されます。これらのリソースには、すべてのレプリケーションインスタンス、ソースおよびターゲットのエンドポイント設定、レプリケーションタスク、および SSL 証明書が含まれます。2 日後にAWS DMS を再度使用する場合は、必要なリソースを再作成します。

既に AWS アカウントをお持ちの場合は次のタスクに進んでください。

AWS アカウントをお持ちでない場合は、次に説明する手順に従ってアカウントを作成してください。

AWS にサインアップするには

1. https://aws.amazon.com/ を開き、[AWS アカウントの作成] を選択します。2. オンラインの手順に従います。

次のタスクで AWS アカウント番号が必要となるので、メモしておいてください。

IAM ユーザーを作成するAWS のサービス(AWS DMS など)の場合は、サービスにアクセスする際に認証情報を提供する必要があります。このため、サービスのリソースにアクセスする権限があるかどうかがサービスによって判定されます。コンソールを使用するにはパスワードが必要です。AWS アカウントのアクセスキーを作成して、コマンドラインインターフェイスまたは API にアクセスすることができます。ただし、AWS アカウントの認証情報を使って AWS にアクセスすることはお勧めしません。代わりに AWS Identity and Access

API バージョン API Version 2016-01-0116

Page 24: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドIAM ユーザーを作成する

Management(IAM)を使用することをお勧めします。IAM ユーザーを作成して、管理権限を使ってこのユーザーを IAM グループに追加するか、管理権限を付与します。これで、特殊な URL と IAM ユーザーの認証情報を使って、AWS にアクセスできます。

AWS にサインアップしても、ご自分の IAM ユーザーをまだ作成していない場合は、IAM コンソールを使用して作成できます。

自分用の管理者ユーザーを作成し、そのユーザーを管理者グループに追加するには (コンソール)

1. AWS アカウント E メールアドレスとパスワードを使用して https://console.aws.amazon.com/iam/ でAWS アカウントのルートユーザー として IAM コンソールにサインインします。

Note

以下のAdministratorIAMユーザーの使用に関するベストプラクティスに従い、ルートユーザー認証情報を安全な場所に保管しておくことを強くお勧めします。ルートユーザーとしてサインインして、少数のアカウントおよびサービス管理タスクのみを実行します。

2. ナビゲーションペインで [Users]、[Add user] の順に選択します。3. [ユーザー名] に「Administrator」と入力します。4. [AWS マネジメントコンソール access (アクセス)] の横にあるチェックボックスをオンにします。

[Custom password (カスタムパスワード)] を選択し、その後テキストボックスに新しいパスワードを入力します。

5. (オプション) AWS では、デフォルトで、新しいユーザーに対して初回のサインイン時に新しいパスワードを作成することが必要です。必要に応じて [User must create a new password at next sign-in(ユーザーは次回のサインイン時に新しいパスワードを作成する必要がある)] のチェックボックスをオフにして、新しいユーザーがサインインしてからパスワードをリセットできるようにできます。

6. [Next: Permissions (次へ: アクセス許可)] を選択します。7. [Set permissions (アクセス許可の設定)] で、[Add user to group (ユーザーをグループに追加)] を選択し

ます。8. [Create group] を選択します。9. [グループの作成] ダイアログボックスで、[グループ名] に「Administrators」と入力します。10. [Filter policies (フィルタポリシー)] を選択し、その後 [AWS managed -job function (AWS 管理ジョブ

の機能] を選択してテーブルのコンテンツをフィルタリングします。11. ポリシーリストで、[AdministratorAccess] のチェックボックスをオンにします。次に、[Create group]

を選択します。

Note

AdministratorAccess アクセス許可を使用して、AWS Billing and Cost Management コンソールを使用する前に、IAM ユーザーおよびロールの請求へのアクセスをアクティブ化する必要があります。これを行うには、請求コンソールへのアクセスの委任に関するチュートリアルのステップ 1 の手順に従ってください。

12. グループのリストに戻り、新しいグループのチェックボックスをオンにします。必要に応じて[Refresh] を選択し、リスト内のグループを表示します。

13. [次へ: タグ] を選択します。14. (オプション) タグをキー - 値のペアとしてアタッチして、メタデータをユーザーに追加します。IAM

でのタグの使用の詳細については、『IAM ユーザーガイド』の「IAM エンティティのタグ付け」を参照してください。

15. [Next: Review] を選択して、新しいユーザーに追加するグループメンバーシップのリストを表示します。続行する準備ができたら、[Create user] を選択します。

この同じプロセスを繰り返して新しいグループとユーザーを作成し、AWS アカウントのリソースへのアクセス権をユーザーに付与できます。ポリシーを使用して特定の AWS リソースに対するユーザーのアクセス許可を制限する方法については、「アクセス管理」と「ポリシーの例」を参照してください。

API バージョン API Version 2016-01-0117

Page 25: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドAWS Database Migration Service での移行計画

新規の IAM ユーザーとしてサインインするには、AWS コンソールからサインアウトし、次の URL を使用します。このとき、your_aws_account_id はハイフンを除いた AWS アカウント番号です(たとえば AWS アカウント番号が 1234-5678-9012 であれば、AWS アカウント ID は 123456789012 となります)。

https://your_aws_account_id.signin.aws.amazon.com/console/

作成した IAM ユーザー名とパスワードを入力します。サインインすると、ナビゲーションバーに「your_user_name @ your_aws_account_id」が表示されます。

サインページの URL に AWS アカウント ID を含めない場合は、アカウントのエイリアスを作成します。IAM ダッシュボードで [カスタマイズ] を選択し、エイリアス (会社名など) を入力します。アカウントエイリアスを作成した後、サインインするには、次の URL を使用します。

https://your_account_alias.signin.aws.amazon.com/console/

アカウントの IAM ユーザーのサインインリンクを確認するには、IAM コンソールを開き、ダッシュボードの [AWS Account Alias] の下を確認します。

AWS Database Migration Service での移行計画AWS Database Migration Service を使用してデータベース移行を計画するときは、以下の点を考慮してください。

• ソースとターゲットのデータベースを AWS DMS レプリケーションインスタンスに接続するネットワークを設定する必要があります。これは、同じ VPC 内にある 2 つの AWS リソースをより複雑な設定にレプリケーションインスタンスとして接続する (オンプレミスデータベースを VPN 経由で Amazon RDSDB インスタンスに接続するなど) のと同じくらい簡単です。詳細については、「データベース移行のネットワーク設定 (p. 68)」を参照してください。

• ソースとターゲットのエンドポイント – ソースデータベース内のどの情報とテーブルをターゲットデータベースに移行する必要があるかを知っている必要があります。AWS DMS では、テーブルとプライマリキーの作成を含む、基本的なスキーマの移行がサポートされています。ただし、AWS DMS では、ターゲットデータベースのセカンダリインデックス、外部キー、ユーザーアカウントなどは自動的に作成されません。ソースおよびターゲットデータベースエンジンによっては、サプリメンタルロギングをセットアップしたり、ソースまたはターゲットデータベースの他の設定を変更したり必要がある点に注意してください。詳細については、「データ移行のソース (p. 86)」と「データ移行のターゲット (p. 155)」を参照してください。

• スキーマ/コードの移行 – AWS DMS では、スキーマまたはコードの変換が実行されません。Oracle SQLDeveloper、MySQL Workbench、または pgAdmin III などのツールを使用してスキーマを変換できます。異なるデータベースエンジンに既存のスキーマを変換する場合、AWS スキーマ変換ツールを使用できます。このツールは、ターゲットスキーマを作成でき、スキーマ全体 (テーブル、インデックス、ビューなど) を生成および作成することもできます。このツールを使用して PL/SQL または TSQL をPgSQL や他の形式に変換することもできます。AWS スキーマ変換ツールの詳細については、「AWS スキーマ変換ツール」を参照してください。

• サポートされていないデータ型 – ソースの一部のデータ型は、ターゲットデータベースのデータ型と同等のデータ型に変換する必要があります。サポートされているデータ型の詳細については、データストアのソースまたはターゲットセクションを参照してください。

API バージョン API Version 2016-01-0118

Page 26: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドデータベースの移行開始

AWS Database Migration Service の使用開始

AWS Database Migration Service (AWS DMS) は、AWS にデータベースを簡単かつ安全に移行します。Oracle、MySQL、PostgreSQL などの最も広く使用されている、市販のオープンソースデータベース間でデータを移行できます。このサービスでは、Oracle から Oracle など、同機種間の移行をサポートしているほか、Oracle から PostgreSQL、MySQL から Oracle など、異なるデータベースプラットフォーム間の異機種の移行もサポートしています。

AWS Database Migration Service を使用したデータベース移行のコストについては、「AWS DatabaseMigration Service の料金表ページ」を参照してください。

トピック• AWS Database Migration Service によるデータベースの移行開始 (p. 19)• ステップ 1: [Welcome] (p. 19)• ステップ 2: レプリケーションのインスタンスを作成する (p. 20)• ステップ 3: ソースとターゲットのエンドポイントを指定する (p. 24)• ステップ 4: タスクを作成する (p. 27)• タスクをモニタリングする (p. 31)

AWS Database Migration Service によるデータベースの移行開始

データベース移行はいくつかの方法で開始することができます。AWS DMS コンソールウィザードを選択してこのプロセスの各手順を実行するか、ナビゲーションペインで該当するタスクを選択して各手順を実行することができます。また、AWS CLI を使用することもできます。AWS DMS で CLI を使用する方法については、「AWS CLI for AWS DMS」を参照してください。

ウィザードを使用するには、AWS DMS コンソールのナビゲーションペインで [Getting started (開始方法)]を選択します。ウィザードを使用して、最初のデータ移行を作成できます。ウィザードプロセスの後で、移行のすべてのプロセスを実行するレプリケーションのインスタンスを割り当て、ソースとターゲットデータベースを指定してから、どのテーブルとレプリケーションプロセスを使用するかを定義したタスクまたは一連のタスクを作成します。AWS DMS は、レプリケーションのインスタンスを作成し、移行中のデータでタスクを実行します。

または、ナビゲーションペインから項目を選択して、AWS DMS を使用したデータベース移行の各コンポーネントを作成することもできます。データベース移行では、以下の操作を行う必要があります。

• 「AWS Database Migration Service のセットアップ (p. 16)」で概説しているタスクを完了する• 移行のすべてのプロセスを実行するレプリケーションインスタンスを割り当てる• ソースとターゲットのデータベースエンドポイントを指定する• 使用するテーブルとレプリケーションプロセスを定義するタスクまたはタスクセットを作成する

ステップ 1: [Welcome]AWS DMS コンソールウィザードを使用してデータベース移行を開始した場合は、AWS DMS を使用したデータベース移行のプロセスを説明する [Welcome (ようこそ)] ページが表示されます。

API バージョン API Version 2016-01-0119

Page 27: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドステップ 2: レプリケーションのインスタンスを作成する

コンソールの [Welcome] ページからデータベースの移行を開始するには

• [Next (次へ)] を選択します。

ステップ 2: レプリケーションのインスタンスを作成する

データベースの移行の最初のタスクは、割り当てるタスクを実行するのに十分なストレージと処理能力を持つレプリケーションのインスタンスを作成し、ソースデータベースからターゲットデータベースにデータを移行することです。このインスタンスの必要なサイズは、移行する必要のあるデータの量、および、インスタンスが実行するタスクにより異なります。レプリケーションインスタンスの詳細については、「AWS DMS レプリケーションインスタンスを使用する (p. 59)」を参照してください。

以下の手順では、AWS DMS コンソールウィザードを選択したことを前提とします。このステップは、AWS DMS コンソールのナビゲーションペインで [Replication instances (レプリケーションインスタンス)]、[Create replication instance (レプリケーションインスタンスの作成)] を順に選択して実行することもできます。

AWS コンソールを使用してレプリケーションインスタンスを作成するには

1. ナビゲーションペインで [レプリケーションインスタンス] をクリックします。2. [Create Replication Instance] を選択します。3. [Create replication instance] ページで、レプリケーションのインスタンス情報を指定します。次の表

で設定について説明します。

API バージョン API Version 2016-01-0120

Page 28: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドステップ 2: レプリケーションのインスタンスを作成する

使用するオプション 操作

名前 8 ~ 16 の印刷可能な ASCII 文字 (/、"、@ を除く) を含むレプリケーションインスタンス名を入力します。名前は、選択したリージョンのアカウントで一意でなければなりません。わかりやすい名前にするには、リージョンや実行中のタスクなどの情報を名前に含めます (例: west2-mysql2mysql-instance1)。

説明 レプリケーションインスタンスの簡単な説明を入力します。

インスタンスクラス 移行に必要な設定を使用してインスタンスのクラスを選択します。正常に移行を完了するために、インスタンスには十分なストレージ、ネットワーク、処理能力が必要であることに注意してください。移行に最適なインスタンスのクラスを決定する方法に関する詳細については、「AWS DMS レプリケーションインスタンスを使用する (p. 59)」を参照してください。

レプリケーションエンジンのバージョン

デフォルトでは、レプリケーションインスタンスは最新バージョンの AWS DMS レプリケーションエンジンソフトウェアを実行します。このデフォルトをそのまま使用することをお勧めします。ただし、必要に応じて、以前のエンジンバージョンを選択できます。

API バージョン API Version 2016-01-0121

Page 29: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドステップ 2: レプリケーションのインスタンスを作成する

使用するオプション 操作

VPC 使用する Amazon Virtual Private Cloud (Amazon VPC)を選択します。ソースまたはターゲットデータベースがVPC にある場合、その VPC を選択します。ソースまたはターゲットデータベースが別の VPC にある場合、それらが共にパブリックサブネットにあり、パブリックにアクセス可能であることを確認してから、レプリケーションインスタンスが配置される VPC を選択します。レプリケーションインスタンスが、ソース VPC のデータにアクセスできるようにする必要があります。ソースもターゲットデータベースも VPC にない場合は、レプリケーションインスタンスを配置する VPC を選択します。

マルチ AZ オプションのパラメータを使用して、フェイルオーバーのサポート用に別のアベイラビリティーゾーンにレプリケーションインスタンスのスタンバイレプリカを作成します。変更データキャプチャ (CDC) または、進行中のレプリケーションを使用する場合は、このオプションを有効にする必要があります。

パブリックアクセス可能 レプリケーションインスタンスをインターネットからアクセス可能にする場合は、このオプションを選択します。

4. 必要がある場合は、[Advanced] タブを選択して、次に示す通り、ネットワークおよび暗号化設定の値を設定します。次の表で設定について説明します。

API バージョン API Version 2016-01-0122

Page 30: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドステップ 2: レプリケーションのインスタンスを作成する

使用するオプション 操作

Allocated storage (GB) ストレージは主に、ログファイルと、キャッシュされたトランザクションで消費されます。キャッシュされたトランザクションでは、ストレージは、キャッシュされたトランザクションをディスクに書き込む必要がある場合にのみ使用されます。そのため、AWS DMS では大量のストレージは使用されませんが、次のような場合は例外です。

• 膨大なトランザクションをロードする、サイズの大きなテーブル。サイズの大きなテーブルをロードするには時間がかかります。そのため、サイズの大きなテーブルをロードする間、キャッシュされたトランザクションが書き込まれる可能性が高くなります。

• キャッシュされたトランザクションをロードする前に停止するよう設定されているタスク。この場合、すべてのテーブルのロードが完了するまで、すべてのトランザクションがキャッシュされます。この設定では、キャッシュされたトランザクションにより、かなりの量のストレージが消費されることがあります。

• Amazon Redshift にロードされるテーブルを使用する設定になっているタスク。ただし、Amazon Aurora がターゲットのときは、この設定は問題にはなりません。

ほとんどの場合、ストレージのデフォルトの割り当てで十分です。ただし、ストレージ関連のメトリクスに注意を払い、デフォルトの割り当てよりも消費量が多い場合はストレージを拡張することをおすすめします。

レプリケーションサブネットグループ レプリケーションインスタンスを作成する選択した VPCでレプリケーションサブネットグループを選択します。ソースデータベースが VPC にある場合は、レプリケーションインスタンスの場所として、ソースデータベースを含むサブネットグループを選択します。レプリケーションサブネットグループの詳細については、「レプリケーションサブネットグループの作成 (p. 73)」を参照してください。

アベイラビリティーゾーン ソースデータベースが配置されているアベイラビリティーゾーンを選択します。

VPC セキュリティグループ レプリケーションのインスタンスが VPC 内で作成されます。ソースデータベースが VPC にある場合は、データベースが存在する DB インスタンスへのアクセス権を提供する VPC セキュリティグループを選択します。

KMS マスターキー 使用する暗号化キーを選択して、レプリケーションのストレージと接続情報を暗号化します。(デフォルト) aws/dms を選択する場合、アカウントおよびリージョンに関連付けられたデフォルトの AWS Key Management Service(AWS KMS) キーが使用されます。説明とアカウント番号が、キーの ARN とともに表示されます。暗号化キーの使用の詳細については、「暗号化キーの設定と KMS のアクセス許可の指定 (p. 47)」を参照してください。

API バージョン API Version 2016-01-0123

Page 31: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドステップ 3: ソースとターゲットのエンドポイントを指定する

5. [Maintenance] 設定を指定します。次の表で設定について説明します。メンテナンス設定の詳細については、「AWS DMS メンテナンスウィンドウ (p. 62)」を参照してください。

使用するオプション 操作

Auto minor version upgrade 選択すると、メンテナンスの時間帯に、レプリケーションインスタンスに自動的にマイナーエンジンアップグレードが適用されます。

Maintenance window 週 1 回のシステムメンテナンスを実行できる時間帯 (世界標準時 (UTC)) を選択します。

デフォルト: 1 週間のうちのランダムな日に起こる、リージョンあたり 8 時間の範囲からランダムに選択された 30分の時間窓。

6. [Create replication instance] を選択します。

ステップ 3: ソースとターゲットのエンドポイントを指定する

レプリケーションのインスタンスが作成される間、ソースおよびターゲットデータストアを指定できます。ソースおよびターゲットデータストアには、Amazon Elastic Compute Cloud (Amazon EC2) インスタンス、Amazon Relational Database Service (Amazon RDS) DB インスタンス、またはオンプレミスデータベースを使用できます。

以下の手順では、AWS DMS コンソールウィザードを選択したことを前提とします。このステップは、 コンソールのナビゲーションペインで [Endpoints (エンドポイント)AWS DMS]、[Create endpoint (エンドポイントの作成)] の順に選択することでも実行できます。コンソールウィザードを使用するときは、ソースエンドポイントとターゲットエンドポイントの両方を同じページで作成します。コンソールウィザードを使用しないときは、各エンドポイントを個別に作成します。

AWS コンソールを使用して、ソースまたはターゲットデータベースエンドポイントを指定するには

1. [ソースおよびターゲットデータベースエンドポイントの接続] ページで、ソースまたはターゲットデータベースの接続情報を指定します。次の表で設定について説明します。

API バージョン API Version 2016-01-0124

Page 32: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドステップ 3: ソースとターゲットのエンドポイントを指定する

使用するオプション 操作

エンドポイント識別子 エンドポイントを識別するのに使用する名前を入力します。名前に、oracle-source または PostgreSQL-target などのエンドポイントの種類を含めることができます。名前はすべてのレプリケーションインスタンスに対して一意である必要があります。

API バージョン API Version 2016-01-0125

Page 33: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドステップ 3: ソースとターゲットのエンドポイントを指定する

使用するオプション 操作

ソースエンジンとターゲットエンジン エンドポイントであるデータベースエンジンのタイプを選択します。

サーバー名 サーバー名を入力します。オンプレミスデータベースの場合、IP アドレスまたはパブリックホスト名にすることができます。Amazon RDS DB インスタンスの場合、DB インスタンスのエンドポイント (DNS 名) とすることができます。たとえば、mysqlsrvinst.abcd12345678.us-west-2.rds.amazonaws.com とします。

ポート データベースが使用するポートを入力します。

SSL モード このエンドポイントの接続暗号化を有効にする場合は、SSL モードを選択します。選択したモードにより、証明書、およびサーバー証明書情報の提供を求められることがあります。

ユーザー名 データ移行を許可するために必要な権限を持つユーザー名を入力します。必要な権限の詳細については、このユーザーガイドの「ソースまたはターゲットデータベースエンジンに対するセキュリティセクション」を参照してください。

パスワード 必要な権限のあるアカウントのパスワードを入力します。パスワード内に特殊文字 ("+" や "&" など) を使用する場合は、パスワード全体を中かっこ "{}" で囲みます。

2. 必要がある場合は、次に示す通り、[Advanced] タブを選択して、接続文字列および暗号化キーの値を設定します。[テストの実行] を選択して、エンドポイントの接続をテストできます。

API バージョン API Version 2016-01-0126

Page 34: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドステップ 4: タスクを作成する

使用するオプション 操作

追加の接続属性 追加の接続パラメータをここに入力します。追加の接続属性の詳細については、データストアのドキュメントセクションを参照してください。

KMS マスターキー 使用する暗号化キーを選択して、レプリケーションのストレージと接続情報を暗号化します。(デフォルト) aws/dmsを選択する場合、アカウントおよびリージョンに関連付けられたデフォルトの AWS Key Management Service (AWSKMS) キーが使用されます。暗号化キーの使用の詳細については、「暗号化キーの設定と KMS のアクセス許可の指定 (p. 47)」を参照してください。

ステップ 4: タスクを作成するタスクを作成して、移行するテーブルを指定し、ターゲットスキーマを使用してデータをマッピングし、ターゲットデータベースに新しいテーブルを作成します。タスク作成の一環として、移行のタイプ (既存

API バージョン API Version 2016-01-0127

Page 35: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドステップ 4: タスクを作成する

のデータの移行、既存のデータの移行と継続的な変更のレプリケート、または、データ変更のみのレプリケート) を選択できます。

AWS DMS を使用して、ソースデータベースとターゲットデータベース間のデータの正確なマッピングを指定できます。マッピングを指定する前に、ソースデータベースとターゲットデータベースのデータ型マッピングのドキュメントセクションを必ず確認してください。

[Create task] ページでタスク情報の指定が完了するとすぐに、タスクを開始することができます。または、タスク情報の指定が完了したら、[Dashboard] ページからタスクを開始することもできます。

以下の手順では、AWS DMS コンソールウィザードを選択し、コンソールウィザードを使用してレプリケーションインスタンスの情報とエンドポイントを指定したことを前提とします。このステップは、AWSDMS コンソールのナビゲーションペインで [Tasks (タスク)]、[Create task (タスクの作成)] を順に選択して実行することもできます。

移行タスクを作成するには

1. [Create Task] ページで、タスクオプションを指定します。次の表で設定について説明します。

使用するオプション 操作

タスク名 タスクの名前を入力します。

タスクの説明 タスクの説明を入力します。

ソースエンドポイント 使用するソースエンドポイントを表示します。

ターゲットエンドポイント 使用するターゲットエンドポイントを表示します。

API バージョン API Version 2016-01-0128

Page 36: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドステップ 4: タスクを作成する

使用するオプション 操作

レプリケーションインスタンス 使用するレプリケーションインスタンスを表示します。

移行タイプ 使用する移行方法を選択します。既存のデータのみをターゲットデータベースへ移行するか、移行したデータに加えて継続的な変更もターゲットデータベースに送信するかを選択できます。

作成時にタスクを開始 このオプションが選択されていると、タスクは作成直後に始まります。

2. 次に示すように、[Task Settings] タブを選択して、ターゲットテーブルの値、LOB サポートを指定して、ログ作成を有効にします。表示されるタスク設定は、選択した移行タイプの値によって異なります。たとえば、[既存のデータの移行] を選択すると、次のオプションが表示されます。

使用するオプション 操作

ターゲットテーブル作成モード 何もしない - ターゲットテーブルのデータとメタデータは変更されません。

ターゲット上のテーブルを削除 - テーブルは削除され、代わりに新しいテーブルが作成されます。

切り捨て - テーブルは、テーブルのメタデータに影響を与えないで切り捨てられます。

レプリケーションに LOB 列を含める LOB 列を含めない - LOB 列は移行対象から除外されます。

完全 LOB モード - サイズに関係なく LOB 全体を移行します。LOB は、LOB チャンクサイズによって制御されるチャンクの単位で移行されます。この方法は制限付き LOBモードを使用するよりも低速です。

制限付き LOB モード - LOB を「最大 LOB サイズ」まで切り詰めます。この方法は完全 LOB モードを使用するよりも高速です。

API バージョン API Version 2016-01-0129

Page 37: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドステップ 4: タスクを作成する

使用するオプション 操作

最大 LOB サイズ (KB) 制限付き LOB モードでは、最大 LOB サイズの設定を超える LOB 列は指定した最大 LOB サイズまで切り捨てられます。

ログ作成の有効化 Amazon CloudWatch でログ作成を有効にします。

[既存のデータの移行とレプリケート] を [移行タイプ] で選択した場合、次のオプションが表示されます。

使用するオプション 操作

ターゲットテーブル作成モード 何もしない - ターゲットテーブルのデータとメタデータは変更されません。

ターゲット上のテーブルを削除 - テーブルは削除され、代わりに新しいテーブルが作成されます。

切り捨て - テーブルは、テーブルのメタデータに影響を与えないで切り捨てられます。

API バージョン API Version 2016-01-0130

Page 38: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドタスクをモニタリングする

使用するオプション 操作

全ロードの完了後にタスクを停止する 停止しない - タスクを停止しないで、キャッシュされた変更をすぐに適用したら、そのまま続行します。

キャッシュされた変更を適用する前に停止する - キャッシュされた変更を適用する前に、タスクを停止します。これにより、変更の適用を高速化できるセカンダリインデックスを追加できます。

キャッシュされた変更を適用した後に停止する - キャッシュされた変更を適用した後に、タスクを停止します。トランザクショナルな適用を使用する場合、これにより、外部キーやトリガーなどを追加できます。

レプリケーションに LOB 列を含める LOB 列を含めない - LOB 列は移行対象から除外されます。

完全 LOB モード - サイズに関係なく LOB 全体を移行します。LOB は、LOB チャンクサイズによって制御されるチャンクの単位で移行されます。この方法は制限付き LOBモードを使用するよりも低速です。

制限付き LOB モード - LOB を「最大 LOB サイズ」まで切り詰めます。この方法は完全 LOB モードを使用するよりも高速です。

最大 LOB サイズ (KB) 制限付き LOB モードでは、最大 LOB サイズの設定を超える LOB 列は指定した最大 LOB サイズまで切り捨てられます。

ログ作成の有効化 Amazon CloudWatch でログ作成を有効にします。

3. 次に示す通り、[テーブルマッピング] タブを選択して、スキーママッピングの値およびマッピング方法を設定します。[カスタム] を選択した場合、ターゲットスキーマとテーブル値を指定できます。テーブルマッピングの詳細については、「テーブルマッピングを使用して、タスクの設定を指定する (p. 286)」を参照してください。

4. タスクの設定を完了したら、[タスクの作成] を選択します。

タスクをモニタリングする作成時に、[作成時にタスクを開始] を選択した場合、タスクは、[タスクの作成] を選択するとすぐにデータの移行を開始します。AWS マネジメントコンソールから実行中のタスクを選択することにより、タスク

API バージョン API Version 2016-01-0131

Page 39: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドタスクをモニタリングする

の統計とモニタリング情報を表示できます。次のスクリーンショットはデータベースの移行のテーブルの統計を表示します。モニタリングの詳細については、「AWS DMS タスクのモニタリング (p. 325)」を参照してください。

API バージョン API Version 2016-01-0132

Page 40: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイド必要な IAM アクセス許可

AWS Database Migration Service のセキュリティ

AWS Database Migration Service (AWS DMS) は、複数のプロセスを使用して移行中にデータを保護します。このサービスは、AWS アカウントに固有の AWS Key Management Service (AWS KMS) キーを使用して、レプリケーションインスタンスにより使用されるストレージとエンドポイント接続情報を暗号化します。Secure Sockets Layer (SSL) がサポートされています。AWS Identity and Access Management(IAM) ユーザーとしてサインインしている場合、AWS Database Migration Service を使用するには適切なアクセス許可も必要になります。

レプリケーションインスタンスで使用する Amazon Virtual Private Cloud (Amazon VPC) サービスをベースとする VPC は、すべてのポートですべてのトラフィックが VPC を退出 (送信) するのを許可するルールを持つセキュリティグループに関連付ける必要があります。このアプローチでは、ソースおよびターゲットデータベースエンドポイントで適切な受信が有効になっている限り、レプリケーションインスタンスからそれらのエンドポイントへの通信が許可されます。

データベース移行ログを表示する場合、使用している IAM ロールの適切な Amazon CloudWatch ログアクセス許可が必要になります。

トピック• AWS DMS を使用するのに必要な IAM アクセス許可 (p. 33)• AWS CLI と AWS DMS API で使用する IAM ロールを作成する (p. 36)• リソース名とタグを使用したファイングレインアクセスコントロール (p. 40)• 暗号化キーの設定と KMS のアクセス許可の指定 (p. 47)• AWS Database Migration Service のネットワークセキュリティ (p. 48)• AWS Database Migration Service で SSL を使用する (p. 49)• データベースのパスワードの変更 (p. 57)

AWS DMS を使用するのに必要な IAM アクセス許可

AWS DMS を使用するには、特定の IAM アクセス許可と IAM ロールを使用します。IAM ユーザーとしてサインインして AWS DMS を使用する場合、アカウント管理者は、このセクションで示すポリシーを AWS DMS の実行に使用する IAM ユーザー、グループ、またはロールにアタッチする必要があります。IAM アクセス許可の詳細については、『IAM ユーザーガイド』を参照してください。

以下のアクセス許可セットでは、AWS DMS にアクセスし、AWS KMS、IAM、Amazon Elastic ComputeCloud (Amazon EC2)、および Amazon CloudWatch などの Amazon の他のサービスで必要とされる特定のアクションを実行するためのアクセス権限が付与されます。CloudWatch は、AWS DMS 移行をリアルタイムでモニタリングし、移行の進行状況を示すメトリクスを収集および追跡します。CloudWatch ログを使用すると、タスクの問題をデバッグできます。

Note

タグ付けを使用して、AWS DMS リソースへのアクセスをさらに制限できます。タグ付けを使用して AWS DMS リソースへのアクセスを制限する方法については、「リソース名とタグを使用したファイングレインアクセスコントロール (p. 40)」を参照してください。

API バージョン API Version 2016-01-0133

Page 41: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイド必要な IAM アクセス許可

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "dms:*", "Resource": "*" }, { "Effect": "Allow", "Action": [ "kms:ListAliases", "kms:DescribeKey" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:GetRole", "iam:PassRole", "iam:CreateRole", "iam:AttachRolePolicy" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:DescribeVpcs", "ec2:DescribeInternetGateways", "ec2:DescribeAvailabilityZones", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups", "ec2:ModifyNetworkInterfaceAttribute", "ec2:CreateNetworkInterface", "ec2:DeleteNetworkInterface" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "cloudwatch:Get*", "cloudwatch:List*" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "logs:DescribeLogGroups", "logs:DescribeLogStreams", "logs:FilterLogEvents", "logs:GetLogEvents" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "redshift:Describe*", "redshift:ModifyClusterIamRoles" ], "Resource": "*" }

API バージョン API Version 2016-01-0134

Page 42: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイド必要な IAM アクセス許可

]}

これらの権限の内訳は、それぞれの権限が必要な理由を理解するうえで役立ちます。

次のセクションは、ユーザーが AWS DMS API オペレーションを呼び出すことを許可するために必要です。

{ "Effect": "Allow", "Action": "dms:*", "Resource": "*"}

次のセクションは、利用可能な AWS KMS キーとエイリアスをユーザーがリストし、コンソールに表示することを許可するために必要です。KMS キーの Amazon リソースネーム (ARN) がわかり、AWSCommand Line Interface (AWS CLI) のみを使用している場合、このエントリは必要ではありません。

{ "Effect": "Allow", "Action": [ "kms:ListAliases", "kms:DescribeKey" ], "Resource": "*" }

次のセクションは、エンドポイントとともにロール ARN を渡す必要がある特定のエンドポイントタイプに必要です。さらに、必要な AWS DMS ロールが事前に作成されていない場合、AWS DMS コンソールはそのロールを作成することができます。すべてのロールが事前に設定されている場合、必要なものはiam:GetRole および iam:PassRole のみです。ロールの詳細については、「AWS CLI と AWS DMSAPI で使用する IAM ロールを作成する (p. 36)」を参照してください。

{ "Effect": "Allow", "Action": [ "iam:GetRole", "iam:PassRole", "iam:CreateRole", "iam:AttachRolePolicy" ], "Resource": "*" }

次のセクションは、AWS DMS には Amazon EC2 インスタンスを作成し、作成されるレプリケーションインスタンス用のネットワークを設定する必要があるため、必須となります。これらのリソースはお客様のアカウント内に存在するため、お客様に代わってこれらのアクションを実行できる必要があります。

{ "Effect": "Allow", "Action": [ "ec2:DescribeVpcs", "ec2:DescribeInternetGateways", "ec2:DescribeAvailabilityZones", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups", "ec2:ModifyNetworkInterfaceAttribute", "ec2:CreateNetworkInterface",

API バージョン API Version 2016-01-0135

Page 43: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドCLI および API の IAM ロール

"ec2:DeleteNetworkInterface" ], "Resource": "*" }

次のセクションは、ユーザーがレプリケーションインスタンスのメトリクスを表示することを許可するために必要です。

{ "Effect": "Allow", "Action": [ "cloudwatch:Get*", "cloudwatch:List*" ], "Resource": "*" }

このセクションは、ユーザーがレプリケーションログを表示することを許可するために必要です。

{ "Effect": "Allow", "Action": [ "logs:DescribeLogGroups", "logs:DescribeLogStreams", "logs:FilterLogEvents", "logs:GetLogEvents" ], "Resource": "*" }

次のセクションは、Amazon Redshift をターゲットとして使用する場合に必要です。これにより、AWSDMS は、Amazon Redshift クラスターが AWS DMS に対して適切に設定されていることを検証できます。

{ "Effect": "Allow", "Action": [ "redshift:Describe*", "redshift:ModifyClusterIamRoles" ], "Resource": "*" }

AWS DMS コンソールは、AWS DMS コンソールを使用する際に AWS アカウントに自動的にアタッチされる複数のロールを作成します。AWS Command Line Interface (AWS CLI) または AWS DMS API を移行に使用する場合、これらのロールをアカウントに追加する必要があります。これらのロールの追加の詳細については、「AWS CLI と AWS DMS API で使用する IAM ロールを作成する (p. 36)」を参照してください。

AWS CLI と AWS DMS API で使用する IAM ロールを作成する

AWS CLI または AWS DMS API をデータベース移行に使用する場合、AWS DMS の機能を使用する前に 3つの IAM ロールを AWS アカウントに追加する必要があります。これらのロールのうち 2 つは dms-vpc-role と dms-cloudwatch-logs-role です。Amazon Redshift をターゲットデータベースとして使用している場合、IAM ロール dms-access-for-endpoint も AWS アカウントに追加する必要があります。

API バージョン API Version 2016-01-0136

Page 44: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドCLI および API の IAM ロール

管理ポリシーの更新は自動です。IAM ロールでカスタムポリシーを使用する場合、このドキュメントで管理ポリシーの更新事項がないか定期的に確認してください。管理ポリシーの詳細は、get-policy コマンドと get-policy-version コマンドを組み合わせて使用して表示できます。

たとえば、次の get-policy コマンドはロールの情報を取得します。

aws iam get-policy --policy-arn arn:aws:iam::aws:policy/service-role/AmazonDMSVPCManagementRole

コマンドから返される情報は、次のとおりです。

{ "Policy": { "PolicyName": "AmazonDMSVPCManagementRole", "Description": "Provides access to manage VPC settings for AWS managed customer configurations", "CreateDate": "2015-11-18T16:33:19Z", "AttachmentCount": 1, "IsAttachable": true, "PolicyId": "ANPAJHKIGMBQI4AEFFSYO", "DefaultVersionId": "v3", "Path": "/service-role/", "Arn": "arn:aws:iam::aws:policy/service-role/AmazonDMSVPCManagementRole", "UpdateDate": "2016-05-23T16:29:57Z" }}

次の get-policy-version コマンドは、ポリシー情報を取得します。

aws iam get-policy-version --policy-arn arn:aws:iam::aws:policy/service-role/AmazonDMSVPCManagementRole --version-id v3

コマンドから返される情報は、次のとおりです。

{ "PolicyVersion": { "CreateDate": "2016-05-23T16:29:57Z", "VersionId": "v3", "Document": { "Version": "2012-10-17", "Statement": [ { "Action": [ "ec2:CreateNetworkInterface", "ec2:DescribeAvailabilityZones", "ec2:DescribeInternetGateways", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "ec2:DeleteNetworkInterface", "ec2:ModifyNetworkInterfaceAttribute" ], "Resource": "*", "Effect": "Allow"

API バージョン API Version 2016-01-0137

Page 45: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドCLI および API の IAM ロール

} ] }, "IsDefaultVersion": true }}

AmazonDMSCloudWatchLogsRole および AmazonDMSRedshiftS3Role 管理ポリシーの情報を取得する場合も同じコマンドを使用できます。

Note

データベースの移行に AWS DMS コンソールを使用する場合、これらのロールは AWS アカウントに自動的に追加されます。

次の手順では、dms-vpc-role、dms-cloudwatch-logs-role、および dms-access-for-endpoint の各 IAM ロールを作成します。

AWS CLI または AWS DMS API で使用する dms-vpc-role IAM ロールを作成するには

1. 次の IAM ポリシーを含む JSON ファイルを作成します。JSON ファイルにdmsAssumeRolePolicyDocument.json という名前を付けます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "dms.amazonaws.com" }, "Action": "sts:AssumeRole" } ]}

次のコマンドを使用して AWS CLI でロールを作成します。

aws iam create-role --role-name dms-vpc-role --assume-role-policy-document file://dmsAssumeRolePolicyDocument.json

2. 次のコマンドを使用して AmazonDMSVPCManagementRole ポリシーを dms-vpc-role にアタッチします。

aws iam attach-role-policy --role-name dms-vpc-role --policy-arn arn:aws:iam::aws:policy/service-role/AmazonDMSVPCManagementRole

AWS CLI または AWS DMS API で使用する dms-cloudwatch-logs-role IAM ロールを作成するには

1. 次の IAM ポリシーを含む JSON ファイルを作成します。JSON ファイルにdmsAssumeRolePolicyDocument2.json という名前を付けます。

API バージョン API Version 2016-01-0138

Page 46: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドCLI および API の IAM ロール

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "dms.amazonaws.com" }, "Action": "sts:AssumeRole" } ]}

次のコマンドを使用して AWS CLI でロールを作成します。

aws iam create-role --role-name dms-cloudwatch-logs-role --assume-role-policy-document file://dmsAssumeRolePolicyDocument2.json

2. 次のコマンドを使用して AmazonDMSCloudWatchLogsRole ポリシーを dms-cloudwatch-logs-role にアタッチします。

aws iam attach-role-policy --role-name dms-cloudwatch-logs-role --policy-arn arn:aws:iam::aws:policy/service-role/AmazonDMSCloudWatchLogsRole

Amazon Redshift をターゲットデータベースとして使用する場合、IAM ロール dms-access-for-endpoint を作成して Amazon Simple Storage Service (Amazon S3) へのアクセスを可能にする必要があります。

Amazon Redshift をターゲットデータベースとして使用するための dms-access-for-endpoint IAM ロールを作成するには

1. 次の IAM ポリシーを含む JSON ファイルを作成します。JSON ファイルにdmsAssumeRolePolicyDocument3.json という名前を付けます。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "1", "Effect": "Allow", "Principal": { "Service": "dms.amazonaws.com" }, "Action": "sts:AssumeRole" }, { "Sid": "2", "Effect": "Allow", "Principal": { "Service": "redshift.amazonaws.com" }, "Action": "sts:AssumeRole"

API バージョン API Version 2016-01-0139

Page 47: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドFGAC(Fine-Grained Access Control)

} ]}

2. 次のコマンドを使用して AWS CLI でロールを作成します。

aws iam create-role --role-name dms-access-for-endpoint --assume-role-policy-document file://dmsAssumeRolePolicyDocument3.json

3. 次のコマンドを使用して AmazonDMSRedshiftS3Role ポリシーを dms-access-for-endpointロールにアタッチします。

aws iam attach-role-policy --role-name dms-access-for-endpoint \ --policy-arn arn:aws:iam::aws:policy/service-role/AmazonDMSRedshiftS3Role

AWS CLI または AWS DMS API を使用するための IAM ポリシーが設定されている必要があります。

リソース名とタグを使用したファイングレインアクセスコントロール

ARN ベースのリソース名とリソースタグを使用して、AWS DMS リソースへのアクセスを管理できます。これを行うには、許可されたアクションを定義するか、条件ステートメントを IAM ポリシーに含めます。

リソース名を使用したアクセスの制御IAM ユーザーアカウントを作成し、AWS DMS リソースの Amazon リソースネーム (ARN) に基づいてポリシーを割り当てることができます。

次のポリシーでは、ARN arn:aws:dms:us-east-1:152683116:rep:DOH67ZTOXGLIXMIHKITV を使用して、AWS DMS レプリケーションインスタンスへのアクセスを拒否します。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "dms:*" ], "Effect": "Deny", "Resource": "arn:aws:dms:us-east-1:152683116:rep:DOH67ZTOXGLIXMIHKITV" } ]}

たとえば、次のコマンドは、ポリシーが有効になっていると失敗します。

$ aws dms delete-replication-instance

API バージョン API Version 2016-01-0140

Page 48: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドリソース名を使用したアクセスの制御

--replication-instance-arn "arn:aws:dms:us-east-1:152683116:rep:DOH67ZTOXGLIXMIHKITV"

A client error (AccessDeniedException) occurred when calling the DeleteReplicationInstance operation: User: arn:aws:iam::152683116:user/dmstestusr is not authorized to perform: dms:DeleteReplicationInstance on resource: arn:aws:dms:us-east-1:152683116:rep:DOH67ZTOXGLIXMIHKITV

$ aws dms modify-replication-instance --replication-instance-arn "arn:aws:dms:us-east-1:152683116:rep:DOH67ZTOXGLIXMIHKITV"

A client error (AccessDeniedException) occurred when calling the ModifyReplicationInstance operation: User: arn:aws:iam::152683116:user/dmstestusr is not authorized to perform: dms:ModifyReplicationInstance on resource: arn:aws:dms:us-east-1:152683116:rep:DOH67ZTOXGLIXMIHKITV

AWS DMS エンドポイントとレプリケーションタスクへのアクセスを制限する IAM ポリシーを指定することもできます。

以下のポリシーでは、エンドポイントの ARN を使用して AWS DMS エンドポイントへのアクセスを制限します。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "dms:*" ], "Effect": "Deny", "Resource": "arn:aws:dms:us-east-1:152683116:endpoint:D6E37YBXTNHOA6XRQSZCUGX" } ]}

たとえば、次のコマンドは、エンドポイントの ARN を使用するポリシーが有効になっていると失敗します。

$ aws dms delete-endpoint --endpoint-arn "arn:aws:dms:us-east-1:152683116:endpoint:D6E37YBXTNHOA6XRQSZCUGX"

A client error (AccessDeniedException) occurred when calling the DeleteEndpoint operation: User: arn:aws:iam::152683116:user/dmstestusr is not authorized to perform: dms:DeleteEndpoint on resource: arn:aws:dms:us-east-1:152683116:endpoint:D6E37YBXTNHOA6XRQSZCUGX

$ aws dms modify-endpoint --endpoint-arn "arn:aws:dms:us-east-1:152683116:endpoint:D6E37YBXTNHOA6XRQSZCUGX"

A client error (AccessDeniedException) occurred when calling the ModifyEndpoint operation: User: arn:aws:iam::152683116:user/dmstestusr is not authorized to perform: dms:ModifyEndpoint on resource: arn:aws:dms:us-east-1:152683116:endpoint:D6E37YBXTNHOA6XRQSZCUGX

以下のポリシーでは、タスクの ARN を使用して AWS DMS タスクへのアクセスを制限します。

{

API バージョン API Version 2016-01-0141

Page 49: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドタグを使用したアクセスの制御

"Version": "2012-10-17", "Statement": [ { "Action": [ "dms:*" ], "Effect": "Deny", "Resource": "arn:aws:dms:us-east-1:152683116:task:UO3YR4N47DXH3ATT4YMWOIT" } ]}

たとえば、次のコマンドは、タスクの ARN を使用するポリシーが有効になっていると失敗します。

$ aws dms delete-replication-task --replication-task-arn "arn:aws:dms:us-east-1:152683116:task:UO3YR4N47DXH3ATT4YMWOIT"

A client error (AccessDeniedException) occurred when calling the DeleteReplicationTask operation: User: arn:aws:iam::152683116:user/dmstestusr is not authorized to perform: dms:DeleteReplicationTask on resource: arn:aws:dms:us-east-1:152683116:task:UO3YR4N47DXH3ATT4YMWOIT

タグを使用したアクセスの制御AWS DMS は、お客様が定義するポリシーで利用できる一般的なキーと値ペアのセットを定義します。それ以外のタグ付けの要件はありません。AWS DMS リソースのタグ付けの詳細については、「AWSDatabase Migration Service でのリソースへのタグ付け (p. 342)」を参照してください。

以下のリストは、AWS DMS で使用できる標準タグを示しています。

• aws:CurrentTime – リクエストの日時を表し、一時的な条件に基づいてアクセス制限を許可します。• aws:EpochTime – このタグは上記の aws:CurrentTime タグと似ていますが、現在の時刻が Unix エポッ

クからの経過秒数で表されることが異なります。• aws:MultiFactorAuthPresent – これはリクエストが多要素認証を介して署名されたかどうかを示すブール

タグです。• aws:MultiFactorAuthAge – 多要素認証トークンの期間 (秒) へのアクセスを提供します。• aws:principaltype - 現在のリクエストに対するプリンシパルのタイプ (ユーザー、アカウント、フェデ

レーティッドユーザーなど) へのアクセスを提供します。• aws:SourceIp - リクエストを発行するユーザーのソース IP アドレスを表します。• aws:UserAgent – リソースをリクエストしているクライアントアプリケーションに関する情報を提供し

ます。• aws:userid – リクエストを発行しているユーザーの ID へのアクセスを提供します。• aws:username – リクエストを発行しているユーザーの名前へのアクセスを提供します。• dms:InstanceClass – レプリケーションインスタンスホストのコンピューティングサイズへのアクセスを

提供します。• dms:StorageSize - ストレージボリュームサイズ (GB) へのアクセスを提供します。

独自のタグを定義することもできます。カスタマー定義のタグは、AWS のタグ付けサービスに保持されるシンプルなキー値ペアです。このタグを AWS DMS リソース (レプリケーションインスタンス、エンドポイント、タスクを含む) に追加できます。これらのタグはポリシーの IAM「条件」ステートメントを使用してマッチングされ、特定の条件付きタグを使用して参照されます。タグキーにはプレフィックスとして「dms」、リソースタイプ、および「tag」が付きます。以下にタグ形式を示します。

API バージョン API Version 2016-01-0142

Page 50: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドタグを使用したアクセスの制御

dms:{resource type}-tag/{tag key}={tag value}

たとえば、タグ「stage=production」を含むレプリケーションインスタンスに対してのみ API コールの成功を許可するポリシーを定義するとします。次の条件ステートメントは、指定されたタグを持つリソースに一致します。

"Condition":{ "streq": { "dms:rep-tag/stage":"production" }}

次のタグを、このポリシー条件に一致するレプリケーションインスタンスに追加します。

stage production

AWS DMS リソースに既に割り当てられているタグに加えて、特定のリソースに適用できるタグキーと値を制限するポリシーを記述することもできます。この場合、タグのプレフィックスは「req」です。

たとえば、次のポリシーステートメントは、ユーザーが特定のリソースに割り当てることができるタグを、許可される値の特定のリストに制限します。

"Condition":{ "streq": { "dms:req-tag/stage": [ "production", "development", "testing" ] }}

以下のポリシー例では、リソースタグに基づいて AWS DMS リソースへのアクセスを制限します。

次のポリシーでは、タグの値が「Desktop」、タグキーが「Env」のレプリケーションインスタンスへのアクセスを制限します。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "dms:*" ], "Effect": "Deny", "Resource": "*", "Condition": { "StringEquals": { "dms:rep-tag/Env": [ "Desktop" ] } } } ]}

API バージョン API Version 2016-01-0143

Page 51: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドタグを使用したアクセスの制御

次のコマンドは、タグの値が「Desktop」で、タグキーが「Env」の場合にアクセスを制限する IAM ポリシーに基づいて、成功または失敗します。

$ aws dms list-tags-for-resource --resource-name arn:aws:dms:us-east-1:152683116:rep:46DHOU7JOJYOJXWDOZNFEN --endpoint-url http://localhost:8000 { "TagList": [ { "Value": "Desktop", "Key": "Env" } ]}

$ aws dms delete-replication-instance --replication-instance-arn "arn:aws:dms:us-east-1:152683116:rep:46DHOU7JOJYOJXWDOZNFEN"A client error (AccessDeniedException) occurred when calling the DeleteReplicationInstance operation: User: arn:aws:iam::152683116:user/dmstestusr is not authorized to perform: dms:DeleteReplicationInstance on resource: arn:aws:dms:us-east-1:152683116:rep:46DHOU7JOJYOJXWDOZNFEN

$ aws dms modify-replication-instance --replication-instance-arn "arn:aws:dms:us-east-1:152683116:rep:46DHOU7JOJYOJXWDOZNFEN"

A client error (AccessDeniedException) occurred when calling the ModifyReplicationInstance operation: User: arn:aws:iam::152683116:user/dmstestusr is not authorized to perform: dms:ModifyReplicationInstance on resource: arn:aws:dms:us-east-1:152683116:rep:46DHOU7JOJYOJXWDOZNFEN

$ aws dms add-tags-to-resource --resource-name arn:aws:dms:us-east-1:152683116:rep:46DHOU7JOJYOJXWDOZNFEN --tags Key=CostCenter,Value=1234

A client error (AccessDeniedException) occurred when calling the AddTagsToResource operation: User: arn:aws:iam::152683116:user/dmstestusr is not authorized to perform: dms:AddTagsToResource on resource: arn:aws:dms:us-east-1:152683116:rep:46DHOU7JOJYOJXWDOZNFEN

$ aws dms remove-tags-from-resource --resource-name arn:aws:dms:us-east-1:152683116:rep:46DHOU7JOJYOJXWDOZNFEN --tag-keys Env

A client error (AccessDeniedException) occurred when calling the RemoveTagsFromResource operation: User: arn:aws:iam::152683116:user/dmstestusr is not authorized to perform: dms:RemoveTagsFromResource on resource: arn:aws:dms:us-east-1:152683116:rep:46DHOU7JOJYOJXWDOZNFEN

次のポリシーでは、タグの値が「Desktop」、タグキーが「Env」の AWS DMSエンドポイントへのアクセスを制限します。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "dms:*" ], "Effect": "Deny", "Resource": "*", "Condition": {

API バージョン API Version 2016-01-0144

Page 52: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドタグを使用したアクセスの制御

"StringEquals": { "dms:endpoint-tag/Env": [ "Desktop" ] } } } ]}

次のコマンドは、タグの値が「Desktop」で、タグキーが「Env」の場合にアクセスを制限する IAM ポリシーに基づいて、成功または失敗します。

$ aws dms list-tags-for-resource --resource-name arn:aws:dms:us-east-1:152683116:endpoint:J2YCZPNGOLFY52344IZWA6I{ "TagList": [ { "Value": "Desktop", "Key": "Env" } ]}

$ aws dms delete-endpoint --endpoint-arn "arn:aws:dms:us-east-1:152683116:endpoint:J2YCZPNGOLFY52344IZWA6I"

A client error (AccessDeniedException) occurred when calling the DeleteEndpoint operation: User: arn:aws:iam::152683116:user/dmstestusr is not authorized to perform: dms:DeleteEndpoint on resource: arn:aws:dms:us-east-1:152683116:endpoint:J2YCZPNGOLFY52344IZWA6I

$ aws dms modify-endpoint --endpoint-arn "arn:aws:dms:us-east-1:152683116:endpoint:J2YCZPNGOLFY52344IZWA6I"

A client error (AccessDeniedException) occurred when calling the ModifyEndpoint operation: User: arn:aws:iam::152683116:user/dmstestusr is not authorized to perform: dms:ModifyEndpoint on resource: arn:aws:dms:us-east-1:152683116:endpoint:J2YCZPNGOLFY52344IZWA6I

$ aws dms add-tags-to-resource --resource-name arn:aws:dms:us-east-1:152683116:endpoint:J2YCZPNGOLFY52344IZWA6I --tags Key=CostCenter,Value=1234

A client error (AccessDeniedException) occurred when calling the AddTagsToResource operation: User: arn:aws:iam::152683116:user/dmstestusr is not authorized to perform: dms:AddTagsToResource on resource: arn:aws:dms:us-east-1:152683116:endpoint:J2YCZPNGOLFY52344IZWA6I

$ aws dms remove-tags-from-resource --resource-name arn:aws:dms:us-east-1:152683116:endpoint:J2YCZPNGOLFY52344IZWA6I --tag-keys Env

A client error (AccessDeniedException) occurred when calling the RemoveTagsFromResource operation: User: arn:aws:iam::152683116:user/dmstestusr is not authorized to perform: dms:RemoveTagsFromResource on resource: arn:aws:dms:us-east-1:152683116:endpoint:J2YCZPNGOLFY52344IZWA6I

次のポリシーでは、タグの値が「Desktop」、タグキーが「Env」のレプリケーションタスクへのアクセスを制限します。

API バージョン API Version 2016-01-0145

Page 53: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドタグを使用したアクセスの制御

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "dms:*" ], "Effect": "Deny", "Resource": "*", "Condition": { "StringEquals": { "dms:task-tag/Env": [ "Desktop" ] } } } ]}

次のコマンドは、タグの値が「Desktop」で、タグキーが「Env」の場合にアクセスを制限する IAM ポリシーに基づいて、成功または失敗します。

$ aws dms list-tags-for-resource --resource-name arn:aws:dms:us-east-1:152683116:task:RB7N24J2XBUPS3RFABZTG3{ "TagList": [ { "Value": "Desktop", "Key": "Env" } ]}

$ aws dms delete-replication-task --replication-task-arn "arn:aws:dms:us-east-1:152683116:task:RB7N24J2XBUPS3RFABZTG3"

A client error (AccessDeniedException) occurred when calling the DeleteReplicationTask operation: User: arn:aws:iam::152683116:user/dmstestusr is not authorized to perform: dms:DeleteReplicationTask on resource: arn:aws:dms:us-east-1:152683116:task:RB7N24J2XBUPS3RFABZTG3

$ aws dms add-tags-to-resource --resource-name arn:aws:dms:us-east-1:152683116:task:RB7N24J2XBUPS3RFABZTG3 --tags Key=CostCenter,Value=1234

A client error (AccessDeniedException) occurred when calling the AddTagsToResource operation: User: arn:aws:iam::152683116:user/dmstestusr is not authorized to perform: dms:AddTagsToResource on resource: arn:aws:dms:us-east-1:152683116:task:RB7N24J2XBUPS3RFABZTG3

$ aws dms remove-tags-from-resource --resource-name arn:aws:dms:us-east-1:152683116:task:RB7N24J2XBUPS3RFABZTG3 --tag-keys Env

A client error (AccessDeniedException) occurred when calling the RemoveTagsFromResource operation: User: arn:aws:iam::152683116:user/dmstestusr is not authorized to perform: dms:RemoveTagsFromResource on resource: arn:aws:dms:us-east-1:152683116:task:RB7N24J2XBUPS3RFABZTG3

API バージョン API Version 2016-01-0146

Page 54: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイド暗号化キーを設定する

暗号化キーの設定と KMS のアクセス許可の指定AWS DMS では、レプリケーションインスタンスによって使用されるストレージと、エンドポイントの接続情報を暗号化します。レプリケーションインスタンスで使用されるストレージを暗号化するため、AWSDMS では AWS アカウントに固有の AWS Key Management Service (AWS KMS) キーを使用します。このキーは、AWS KMS で表示し、管理できます。アカウント (aws/dms) でデフォルトの KMS キーを使用できます。あるいは、カスタム KMS キーを作成できます。既存の KMS キーがある場合、暗号化にそのキーを使用することもできます。

レプリケーションインスタンスの初回起動時に [レプリケーションインスタンスの作成] ページの [アドバンスド] セクションで、カスタム KMS マスターキーを選択していない場合は、デフォルトの KMS キー(aws/dms) が作成されます。デフォルトの KMS キーを使用する場合、移行用の IAM ユーザーアカウントにはアクセス許可として kms:ListAliases と kms:DescribeKey のみを付与する必要があります。デフォルトの KMS キーの使用に関する詳細については、「AWS DMS を使用するのに必要な IAM アクセス許可 (p. 33)」を参照してください。

カスタム KMS キーを使用するには、次のオプションの 1 つを使用して、カスタム KMS キーにアクセス許可を割り当てます。

• 移行に使用する IAM ユーザーアカウントを、KMS カスタムキーのキー管理者あるいはキーユーザーとして追加します。これにより、必要な KMS のアクセス許可が、IAM ユーザーアカウントに付与されることを確実にします。このアクションは、AWS DMS を使用するために IAM ユーザーアカウントに付与する IAM のアクセス許可に追加されます。キーユーザーへのアクセス権限の付与の詳細については、『AWS Key Management Service Developer Guide』の「キーユーザーに CMK の使用を許可する」を参照してください。

• カスタム KMS キーに対するキー管理者あるいはキーユーザーとして IAM ユーザーアカウントを追加したくない場合、AWS DMS を使用するために IAM ユーザーアカウントに付与する必要がある IAM のアクセス許可に、次のアクセス許可を追加で付与してください。

{ "Effect": "Allow", "Action": [ "kms:ListAliases", "kms:DescribeKey", "kms:CreateGrant", "kms:Encrypt", "kms:ReEncrypt*" ], "Resource": "*" },

AWS DMS は KMS キーエイリアスで動作しません。ただし、KMS キーの情報を指定するときに、KMSキーの Amazon リソースネーム (ARN) を使用できます。独自の KMS キーを作成して KMS キーへのアクセスをユーザーに許可する方法の詳細については、『KMS 開発者ガイド』を参照してください。

KMS キー識別子を指定しない場合、AWS DMS はデフォルトの暗号化キーを使用します。KMS によって、AWS アカウント用に AWS DMS のデフォルトの暗号化キーが作成されます。AWS アカウントには、AWS のリージョンごとにデフォルトの暗号化キーがあります。

AWS DMS リソースの暗号化に使用される KMS キーを管理するには、KMS を使用します。KMSは、AWS マネジメントコンソール コンソールのホームページで [Identity & Access Management] を選択し、ナビゲーションペインで [暗号化キー] を選択することで表示できます。KMS は、安全で可用性の高いハードウェアとソフトウェアを組み合わせて、クラウド向けに拡張されたキー管理システムを提供します。KMS を使用して、暗号化キーを作成し、それらのキーの使用方法を制御するポリシーを定義できま

API バージョン API Version 2016-01-0147

Page 55: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドネットワークセキュリティ

す。KMS では AWS CloudTrail がサポートされているため、キーの使用を監査して、キーが適切に使用されていることを確認できます。KMS キーは、AWS DMS とサポートされている AWS のサービス (AmazonRDS、Amazon S3、Amazon Redshift、Amazon EBS など) と組み合わせて使用できます。

また、次の AWS DMS エンドポイントでターゲットデータを暗号化するためだけにカスタム KMS キーを作成することができます。

• Amazon Redshift – 詳細については、「Amazon Redshift ターゲットデータを暗号化する AWS KMSキーの作成と使用 (p. 177)」を参照してください。

• Amazon S3 – 詳細については、「Amazon S3 ターゲットオブジェクトを暗号化する AWS KMS キーの作成 (p. 195)」を参照してください。

KMS キーを使用して AWS DMS リソースを作成した後に、リソースの暗号化キーを変更することはできません。AWS DMS リソースを作成する場合は、必ず暗号化キー要件を調べてください。

AWS Database Migration Service のネットワークセキュリティ

AWS Database Migration Service を使用するときに作成するネットワークのセキュリティ要件は、ネットワークの構成方法によって異なります。AWS DMS のネットワークセキュリティの一般的なルールは次のとおりです。

• レプリケーションインスタンスは、ソースとターゲットのエンドポイントにアクセスできる必要があります。レプリケーションインスタンスのセキュリティグループには、データベースポートでデータベースエンドポイントへの送信をインスタンスに許可するネットワーク ACL またはルールが必要です。

• データベースエンドポイントには、レプリケーションインスタンスからの受信アクセスを許可するネットワーク ACL およびセキュリティグループルールを含める必要があります。これは、構成に応じて、レプリケーションインスタンスのセキュリティグループ、プライベート IP アドレス、パブリック IP アドレス、または NAT ゲートウェイのパブリックアドレスを使用して実現できます。

• ネットワークで VPN トンネルが使用されている場合、NAT ゲートウェイとして機能する Amazon EC2インスタンスは、レプリケーションインスタンスにそのゲートウェイを通じたトラフィックの送信を許可するセキュリティグループを使用する必要があります。

デフォルトでは、AWS DMS レプリケーションインスタンスにより使用される VPC セキュリティグループに、すべてのポートで 0.0.0.0/0 への送信を許可するルールがあります。このセキュリティグループを変更するか、独自のセキュリティグループを使用する場合、少なくとも、対応するデータベースポートでソースおよびターゲットエンドポイントへの送信が許可される必要があります。

データベース移行に使用できるネットワーク構成には、それぞれ固有のセキュリティ上の考慮事項があります。

• すべてのデータベース移行コンポーネントが 1 つの VPC にある設定 (p. 68) — エンドポイントで使用されるセキュリティグループは、データベースポートでレプリケーションインスタンスからの進入を許可する必要があります。レプリケーションインスタンスによって使用されるセキュリティグループでエンドポイントへの受信が許可されることを確認してください。または、エンドポイントにより使用されるセキュリティグループに、レプリケーションインスタンスのプライベート IP アドレスにアクセスを許可するセキュリティルールを作成できます。

• 2 つの VPC がある設定 (p. 69) — レプリケーションインスタンスで使用されるセキュリティグループには、VPC の範囲とデータベースの DB ポートに関するルールが必要です。

• AWS Direct Connect または VPN を使用した VPC へのネットワークの設定 (p. 69) — VPC からオンプレミス VPN へのトンネルに向かうトラフィックを許可する VPN トンネル。この設定では、特定の IP

API バージョン API Version 2016-01-0148

Page 56: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドSSL の使用

アドレスまたは範囲に向かうトラフィックを、VPC からオンプレミス VPN へのトラフィックをブリッジできるホストに送信するルーティングルールが VPC に含まれています。この場合、レプリケーションインスタンスのプライベート IP アドレスまたはセキュリティグループから NAT インスタンスへのトラフィックを許可する必要がある独自のセキュリティグループ設定が NAT ホストに含まれています。

• インターネットを使用した VPC へのネットワークの設定 (p. 70) — VPC セキュリティグループには、VPC に向かわないトラフィックをインターネットゲートウェイに送信するルーティングルールが含まれている必要があります。この設定では、エンドポイントへの接続がレプリケーションインスタンス上のパブリック IP アドレスから行われているように見えます。

• ClassicLink を使用して VPC 内に存在しない Amazon RDS DB インスタンスを VPC 内の DB インスタンスに設定 (p. 70) — ソースまたはターゲットの Amazon RDS DB インスタンスが VPC 内になく、レプリケーションインスタンスが存在する VPC とセキュリティグループを共有していない場合、プロキシサーバーを設定し、ClassicLink を使用してソースおよびターゲットのデータベースに接続できます。

• ソースエンドポイントがレプリケーションインスタンスで使用されている VPC の外にあり、NAT のゲートウェイを使用している — 単一の Elastic network interface にバインドされた単一の Elastic IP アドレスを使用してネットワークアドレス変換 (NAT) ゲートウェイを設定します。次に、この Elasticnetwork interface は NAT 識別子 (nat-#####) を受け取ります。インターネットゲートウェイではなくその NAT ゲートウェイへのデフォルトルートが VPC に含まれている場合、レプリケーションインスタンスはインターネットゲートウェイのパブリック IP アドレスを使用してデータベースエンドポイントに接続しているように見えます。この場合、VPC 外のデータベースエンドポイントへの進入は、レプリケーションインスタンスのパブリック IP アドレスではなく NAT アドレスからの進入を許可する必要があります。

AWS Database Migration Service で SSL を使用する

Secure Sockets Layer (SSL) を使用することで、ソースおよびターゲットエンドポイントへの接続を暗号化できます。これを行うには、AWS DMS マネジメントコンソールまたは AWS DMS API を使用してエンドポイントに証明書を割り当てます。AWS DMS コンソールを使用して証明書を管理することもできます。

すべてのデータベースが同じ方法で SSL を使用するわけではありません。MySQL と互換性があるAmazon Aurora は、SSL のエンドポイントとして、サーバー名、クラスター内のプライマリインスタンスのエンドポイントを使用します。Amazon Redshift エンドポイントではすでに SSL 接続が使用されているため、AWS DMS によりセットアップされた SSL 接続は必要ありません。Oracle エンドポイントには追加の手順が必要です。詳細については、「Oracle エンドポイントでの SSL のサポート (p. 53)」を参照してください。

トピック• AWS Database Migration Service で SSL を使用する場合の制限 (p. 50)• 証明書の管理 (p. 51)• MySQL 互換、PostgreSQL、または SQL Server のエンドポイントでの SSL の有効化 (p. 51)• Oracle エンドポイントでの SSL のサポート (p. 53)

エンドポイントに証明書を割り当てるには、ルート証明書を指定するか、エンドポイントにデプロイされるサーバー SSL 証明書の署名に使用された、ルートに導く (証明書バンドルとして) 中間 CA 証明書チェーンを指定します。証明書は、PEM 形式の X509 ファイルとしてのみ受け入れられます。証明書をインポートすると、エンドポイントにその証明書を指定するために使用できる Amazon リソースネーム(ARN) を受け取ります。Amazon RDS を使用する場合は、Amazon RDS によってホストされている rds-combined-ca-bundle.pem ファイルで提供されているルート CA と証明書バンドルをダウンロードできます。このファイルのダウンロードの詳細については、Amazon RDS ユーザーガイドの「SSL/TLS を使用した DB インスタンスへの接続の暗号化」を参照してください。

API バージョン API Version 2016-01-0149

Page 57: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドAWS Database Migration Service

で SSL を使用する場合の制限

SSL 証明書認証に使用する SSL モードは、複数の中から選択できます。

• none – 接続は暗号化されていません。このオプションは安全ではありませんが、必要なオーバーヘッドが小さくなります。

• require – 接続は SSL (TLS) を使用して暗号化されますが、CA 検証は行われません。このオプションは安全性が高まりますが、必要なオーバーヘッドが増えます。

• verify-ca – 接続は暗号化されています。このオプションは安全性が高まりますが、必要なオーバーヘッドが増えます。このオプションでは、サーバー証明書が認証されます。

• verify-full – 接続は暗号化されています。このオプションは安全性が高まりますが、必要なオーバーヘッドが増えます。このオプションでは、サーバー証明書が認証され、サーバーのホスト名が証明書のホスト名属性と一致することが確認されます。

すべての SSL モードがすべてのデータベースエンドポイントで機能するわけではありません。次の表は、各データベースエンジンでサポートされている SSL モードを示しています。

DB エンジン none require verify-ca verify-full

MySQL/MariaDB/Amazon Aurora MySQL

デフォルト値 サポート外 サポート対象 サポート対象

Microsoft SQL Server デフォルト値 サポート対象 サポート外 サポート対象

PostgreSQL デフォルト値 サポート対象 サポート対象 サポート対象

Amazon Redshift デフォルト値 SSL が有効でない

SSL が有効でない

SSL が有効でない

Oracle デフォルト値 サポート外 サポート対象 サポート外

SAP ASE デフォルト値 SSL が有効でない

SSL が有効でない

サポート対象

MongoDB デフォルト値 サポート対象 サポート外 サポート対象

Db2 LUW デフォルト値 サポート外 サポート対象 サポート外

AWS Database Migration Service で SSL を使用する場合の制限• Amazon Redshift ターゲットエンドポイントへの SSL 接続はサポートされていません。AWS DMS は

Amazon S3 バケットを使用してデータを Redshift データベースに転送します。この転送は、AmazonRedshift によってデフォルトで暗号化されます。

• SSL が有効な Oracle エンドポイントで CDC タスクを実行すると、SQL タイムアウトが発生することがあります。この問題がある場合、CDC カウンターは想定どおりの数字にならないため、タスク設定のChangeProcessingTuning セクションの MinimumTransactionSize パラメーターを 100 からより小さい値に変更します。MinimumTransactionSize パラメーターの詳細については、「変更処理のチューニング設定 (p. 269)」を参照してください。

• 証明書は .PEM および .SSO (Oracle ウォレット) 形式でのみインポートできます。• サーバー SSL 証明書が中間 CA によって署名されている場合、中間 CA からルート CA に向かう証明書

チェーン全体が単一の .PEM ファイルとしてインポートされることを確認してください。• サーバーで自己署名証明書を使用している場合、SSL モードとして [require] を選択します。require

SSL モードは、サーバーの SSL 証明書を暗黙的に信頼し、証明書が CA により署名されたことの検証を試みません。

API バージョン API Version 2016-01-0150

Page 58: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイド証明書の管理

証明書の管理DMS コンソールを使用すると、SSL 証明書を表示および管理できます。DMS コンソールを使用して証明書をインポートすることもできます。

MySQL 互換、PostgreSQL、または SQL Server のエンドポイントでの SSL の有効化新しく作成したエンドポイントまたは既存のエンドポイントに SSL 接続を追加できます。

SSL を使用する AWS DMS エンドポイントを作成するには

1. AWS マネジメントコンソールにサインインし、[AWS Database Migration Service] を選択します。Note

AWS Identity and Access Management (IAM) ユーザーとしてサインインしている場合、AWSDMS にアクセスするには適切なアクセス許可が必要です。データベース移行に必要なアクセス許可の詳細については、「AWS DMS を使用するのに必要な IAM アクセス許可 (p. 33)」を参照してください。

2. ナビゲーションペインで [Certificates] を選択します。3. [Import Certificate] を選択します。4. エンドポイントへの接続の暗号化に使用する証明書をアップロードします。

Note

エンドポイントを作成または変更するときに、[Create database endpoint (データベースエンドポイントの作成)] ページで [Add new CA certificate (新しい CA 証明書の追加)] を選択することにより、AWS DMS コンソールを使用して証明書をアップロードすることもできます。

5. 「ステップ 3: ソースとターゲットのエンドポイントを指定する (p. 24)」での説明に従って、エンドポイントを作成します。

SSL を使用するように既存の AWS DMS エンドポイントを変更するには:

1. AWS マネジメントコンソールにサインインし、[AWS Database Migration Service] を選択します。

API バージョン API Version 2016-01-0151

Page 59: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドMySQL 互換、PostgreSQL、または SQL

Server のエンドポイントでの SSL の有効化

Note

AWS Identity and Access Management (IAM) ユーザーとしてサインインしている場合、AWSDMS にアクセスするには適切なアクセス許可が必要です。データベース移行に必要なアクセス許可の詳細については、「AWS DMS を使用するのに必要な IAM アクセス許可 (p. 33)」を参照してください。

2. ナビゲーションペインで [Certificates] を選択します。3. [Import Certificate] を選択します。4. エンドポイントへの接続の暗号化に使用する証明書をアップロードします。

Note

エンドポイントを作成または変更するときに、[Create database endpoint (データベースエンドポイントの作成)] ページで [Add new CA certificate (新しい CA 証明書の追加)] を選択することにより、AWS DMS コンソールを使用して証明書をアップロードすることもできます。

5. ナビゲーションペインで、[Endpoints] を選択し、変更するエンドポイントを選択して [Modify] を選択します。

6. [SSL mode] を選択します。

[verify-ca] モードまたは [verify-full] モードを選択した場合、次に示すように使用する [CA 証明書] を指定する必要があります。

7. [Modify] を選択します。8. エンドポイントが変更されている場合、エンドポイントを選択して [Test connection] を選択し、SSL

接続が機能しているかどうかを調べます。API バージョン API Version 2016-01-01

52

Page 60: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドOracle エンドポイントでの SSL のサポート

ソースおよびターゲットエンドポイントを作成したら、これらのエンドポイントを使用するタスクを作成します。タスクの作成の詳細については、「ステップ 4: タスクを作成する (p. 27)」を参照してください。

Oracle エンドポイントでの SSL のサポートAWS DMS の Oracle エンドポイントでは、none と verify-ca の SSL モードがサポートされています。Oracle エンドポイントで SSL を使用するには、.pem 証明書ファイルの代わりにエンドポイント用のOracle ウォレットをアップロードする必要があります。

トピック• Oracle SSL への既存の証明書の使用 (p. 53)• Oracle SSL への自己署名証明書の使用 (p. 54)

Oracle SSL への既存の証明書の使用既存の Oracle クライアントインストールを使用して CA 証明書ファイルから Oracle ウォレットファイルを作成するには、以下の手順を実行します。

AWS DMS で Oracle SSL に既存の Oracle クライアントインストールを使用するには

1. 以下のコマンドを実行して、ORACLE_HOME システム変数を dbhome_1 ディレクトリの場所に設定します。

prompt>export ORACLE_HOME=/home/user/app/user/product/12.1.0/dbhome_1

2. LD_LIBRARY_PATH システム変数に $ORACLE_HOME/lib を追加します。

prompt>export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib

3. $ORACLE_HOME/ssl_wallet に Oracle Wallet 用のディレクトリを作成します。

prompt>mkdir $ORACLE_HOME/ssl_wallet

4. CA 証明書ファイル .pem を ssl_wallet ディレクトリに配置します。Amazon RDS を使用する場合は、Amazon RDS によってホストされる rds-ca-2015-root.pem ルート CA 証明書ファイルをダウンロードできます。このファイルのダウンロードの詳細については、Amazon RDS ユーザーガイドの「SSL/TLS を使用した DB インスタンスへの接続の暗号化」を参照してください。

5. 以下のコマンドを実行して Oracle Wallet を作成します。

prompt>orapki wallet create -wallet $ORACLE_HOME/ssl_wallet -auto_login_only

prompt>orapki wallet add -wallet $ORACLE_HOME/ssl_wallet -trusted_cert –cert $ORACLE_HOME/ssl_wallet/ca-cert.pem -auto_login_only

API バージョン API Version 2016-01-0153

Page 61: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドOracle エンドポイントでの SSL のサポート

ここまでの手順を完了したら、ImportCertificate API で certificate-wallet パラメーターを指定してウォレットファイルをインポートできます。Oracle エンドポイントの作成または変更時に SSL モードとしてverify-ca を選択すると、インポートされたウォレット証明書を使用できます。

Note

Oracle ウォレットはバイナリファイルです。AWS DMS ではこれらのファイルがそのまま使用されます。

Oracle SSL への自己署名証明書の使用Oracle SSL に自己署名証明書を使用するには、以下の手順を実行します。

AWS DMS で Oracle SSL に自己署名証明書を使用するには

1. 自己署名証明書で使用するディレクトリを作成します。

mkdir <SELF_SIGNED_CERT_DIRECTORY>

2. 前の手順で作成したディレクトリに移動します。

cd <SELF_SIGNED_CERT_DIRECTORY>

3. ルートキーを作成します。

openssl genrsa -out self-rootCA.key 2048

4. 前の手順で作成したルートキーを使用して、ルート証明書に自己署名します。

openssl req -x509 -new -nodes -key self-rootCA.key -sha256 -days 1024 -out self-rootCA.pem

5. Oracle データベース用の Oracle ウォレットディレクトリを作成します。

mkdir $ORACLE_HOME/self_signed_ssl_wallet

6. 新しい Oracle ウォレットを作成します。

orapki wallet create -wallet $ORACLE_HOME/self_signed_ssl_wallet -pwd <password> -auto_login_local

7. Oracle ウォレットにルート証明書を追加します。

orapki wallet add -wallet $ORACLE_HOME/self_signed_ssl_wallet -trusted_cert -cert self-rootCA.pem -pwd <password>

8. Oracle ウォレットの内容のリストを表示します。リストにはルート証明書が含まれます。

orapki wallet display -wallet $ORACLE_HOME/self_signed_ssl_wallet

9. ORAPKI ユーティリティを使用して証明書署名リクエスト (CSR) を生成します。

orapki wallet add -wallet $ORACLE_HOME/self_signed_ssl_wallet -dn "CN=dms" -keysize 2048 -sign_alg sha256 -pwd <password>

10. 次のコマンドを実行します。API バージョン API Version 2016-01-01

54

Page 62: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドOracle エンドポイントでの SSL のサポート

openssl pkcs12 -in ewallet.p12 -nodes -out nonoracle_wallet.pem

11. 共通名として「dms」を指定します。

openssl req -new -key nonoracle_wallet.pem -out certrequest.csr

12. 証明書の署名を取得します。

openssl req -noout -text -in self-signed-oracle.csr | grep -i signature

13. ステップ 12 が sha256WithRSAEncryption の場合は、以下のコードを実行します。

openssl x509 -req -in self-signed-oracle.csr -CA self-rootCA.pem -CAkey self-rootCA.key -CAcreateserial -out self-signed-oracle.crt -days 365 -sha256

14. ステップ 12 が md5WithRSAEncryption の場合は、以下のコードを実行します。

openssl x509 -req -in certrequest.csr -CA self-rootCA.pem -CAkey self-rootCA.key -CAcreateserial -out certrequest.crt -days 365 -sha256

15. 証明書をウォレットに追加します。

orapki wallet add -wallet $ORACLE_HOME/self_signed_ssl_wallet -user_cert -cert certrequest.crt -pwd <password>

16. sqlnet.ora ファイル ($ORACLE_HOME/network/admin/sqlnet.ora) を設定します。

WALLET_LOCATION = (SOURCE = (METHOD = FILE) (METHOD_DATA = (DIRECTORY = <ORACLE_HOME>/self_signed_ssl_wallet) ) )

SQLNET.AUTHENTICATION_SERVICES = (NONE)SSL_VERSION = 1.0SSL_CLIENT_AUTHENTICATION = FALSESSL_CIPHER_SUITES = (SSL_RSA_WITH_AES_256_CBC_SHA)

17. Oracle リスナーを停止します。

lsnrctl stop

18. listener.ora ファイル ($ORACLE_HOME/network/admin/listener.ora) に SSL のエントリを追加します。

SSL_CLIENT_AUTHENTICATION = FALSEWALLET_LOCATION = (SOURCE = (METHOD = FILE) (METHOD_DATA = (DIRECTORY = <ORACLE_HOME>/self_signed_ssl_wallet) ) )

API バージョン API Version 2016-01-0155

Page 63: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドOracle エンドポイントでの SSL のサポート

SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = <SID>) (ORACLE_HOME = <ORACLE_HOME>) (SID_NAME = <SID>) ) )

LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCPS)(HOST = localhost.localdomain)(PORT = 1522)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) )

19. tnsnames.ora ファイル ($ORACLE_HOME/network/admin/tnsnames.ora) を設定します。

<SID>=(DESCRIPTION= (ADDRESS_LIST = (ADDRESS=(PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = <SID>) ))

<SID>_ssl=(DESCRIPTION= (ADDRESS_LIST = (ADDRESS=(PROTOCOL = TCPS)(HOST = localhost.localdomain)(PORT = 1522)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = <SID>) ))

20. Oracle リスナーを再起動します。

lsnrctl start

21. Oracle リスナーの状態を表示します。

lsnrctl status

22. sqlplus と SSL tnsnames エントリを使用して、localhost からデータベースへの SSL 接続をテストします。

sqlplus -L <ORACLE_USER>@<SID>_ssl

23. SSL を使用して正常に接続したことを確認します。

SELECT SYS_CONTEXT('USERENV', 'network_protocol') FROM DUAL;

SYS_CONTEXT('USERENV','NETWORK_PROTOCOL')--------------------------------------------------------------------------------tcps

API バージョン API Version 2016-01-0156

Page 64: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドデータベースのパスワードの変更

24. 現在のディレクトリを自己署名証明書のあるディレクトリに変更します。

cd <SELF_SIGNED_CERT_DIRECTORY>

25. AWS DMS で使用される新しいクライアント Oracle ウォレットを作成します。

orapki wallet create -wallet ./ -auto_login_only

26. Oracle ウォレットに自己署名証明書を追加します。

orapki wallet add -wallet ./ -trusted_cert -cert rootCA.pem -auto_login_only

27. AWS DMS で使用される Oracle ウォレットの内容のリストを表示します。リストには自己署名証明書が含まれます。

orapki wallet display -wallet ./

28. 作成した Oracle ウォレットを AWS DMS にアップロードします。

データベースのパスワードの変更ほとんどの状況では、ソースまたはターゲットエンドポイント用のデータベースのパスワードを変更するのは簡単です。移行またはレプリケーションタスクで現在使用しているエンドポイント用のデータベースのパスワードを変更する必要がある場合、そのプロセスは少し複雑になります。以下の手順は、その方法を示しています。

移行またはレプリケーションタスクでエンドポイント用のデータベースのパスワードを変更するには

1. AWS マネジメントコンソールにサインインし、[AWS DMS] を選択します。AWS Identity and AccessManagement (IAM) ユーザーとしてサインインしている場合、AWS DMS にアクセスするには適切なアクセス許可が必要です。必要なアクセス権限の詳細については、「AWS DMS を使用するのに必要な IAM アクセス許可 (p. 33)」を参照してください。

2. ナビゲーションペインで、[Tasks] を選択します。3. データベースのパスワードを変更するエンドポイントを使用するタスクを選択してから、[Stop] を選

択します。4. タスクが停止されている間、データベースの操作に使用するネイティブツールを使用して、エンドポ

イント用のデータベースのパスワードを変更できます。5. DMS マネジメントコンソールに戻り、ナビゲーションペインから [Endpoints] を選択します。6. パスワードを変更したデータベースのエンドポイントを選択してから、[Modify] を選択します。7. [Password] ボックスに新しいパスワードを入力し、[Modify] を選択します。8. ナビゲーションペインから [Tasks] を選択します。9. 先ほど停止したタスクを選択してから、[Start/Resume] を選択します。10. タスクを続行する方法に応じて、[Start] または [Resume] のいずれかを選択してから、[Start task] を

選択します。

API バージョン API Version 2016-01-0157

Page 65: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドAWS Database Migration Service の制限

AWS Database Migration Service の制限

以下で、AWS Database Migration Service (AWS DMS) でのリソース制限と命名に関する制約について説明します。

AWS DMS が移行できるデータベースの最大サイズは、ソース環境、ソースデータベースのデータのディストリビューション、ソースシステムの使用頻度によって異なります。ご利用のシステムが AWS DMSの候補となるかどうかを調べる最善の方法は、テストすることです。設定を実行するため徐々に開始します。次にいくらか複雑なオブジェクトを追加し、最後にテストとしてフルロードをお試しください。

AWS Database Migration Service の制限各 AWS アカウントでは、リージョンごとに、作成できる AWS DMS リソースの数に対して制限があります。リソースの制限に達すると、リソースを作成するための追加の呼び出しは、例外が発生して失敗します。

ストレージの 6 TB の制限は DMS レプリケーションインスタンスに適用されます。ターゲットとソースの同期が間に合わない場合に変更をキャッシュするためや、ログ情報を保存するために、このストレージは使用されます。この制限はターゲットサイズには適用されないため、ターゲットエンドポイントは 6 TBよりも大きくなることがあります。

次の表に、AWS DMS リソースとリージョンごとの制限を示します。

リソース デフォルトの制限

レプリケーションインスタンス 20

ストレージの合計容量 6 TB

イベントサブスクリプション 20

レプリケーションサブネットグループ 20

レプリケーションサブネットグループあたりのサブネット 20

エンドポイント 100

タスク 200

インスタンスごとのエンドポイント 20

API バージョン API Version 2016-01-0158

Page 66: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイド

AWS DMS レプリケーションインスタンスを使用する

AWS DMS レプリケーションインスタンスを作成すると、AWS DMS では Amazon Virtual Private Cloud(Amazon VPC) サービスに基づいて、VPC の Amazon Elastic Compute Cloud (Amazon EC2) インスタンスにレプリケーションインスタンスが作成されます。このレプリケーションインスタンスを使用して、データベース移行を実行します。[Multi-AZ] オプションを選択した場合、レプリケーションインスタンスはマルチ AZ 配置を使用して高可用性およびフェイルオーバーサポートを提供します。

マルチ AZ 配置では、AWS DMS によって異なるアベイラビリティーゾーンにレプリケーションインスタンスの同期スタンバイレプリカが自動的にプロビジョニングされて維持されます。プライマリレプリケーションインスタンスは、同期的にアベイラビリティーゾーン間でスタンバイレプリカにレプリケートされます。このアプローチでは、データの冗長性が確保されて I/O のフリーズは排除されるため、レイテンシーのスパイクは最小限に抑えられます。

AWS DMS はレプリケーションインスタンスを使用してソースデータストアに接続し、ソースデータを読み取り、ターゲットデータストアが使用できるようにデータをフォーマットします。レプリケーションインスタンスもターゲットデータストアにデータをロードします。この処理のほとんどはメモリ内で行われます。ただし、大きいトランザクションではディスクでのバッファリングが必要になることがあります。キャッシュされたトランザクションとログファイルもディスクに書き込まれます。

AWS DMS レプリケーションインスタンスは、次の AWS リージョンで作成できます。

サービス対象 名前

アジアパシフィック (東京) リージョン ap-northeast-1

アジアパシフィック (ソウル) リージョン ap-northeast-2

アジアパシフィック (ムンバイ) リージョン ap-south-1

アジアパシフィック (シンガポール) リージョン ap-southeast-1

アジアパシフィック (シドニー) リージョン ap-southeast-2

カナダ (中部) リージョン ca-central-1

欧州 (フランクフルト) リージョン eu-central-1

欧州 (アイルランド) リージョン eu-west-1

欧州 (ロンドン) リージョン eu-west-2

南米 (サンパウロ) リージョン sa-east-1

API バージョン API Version 2016-01-0159

Page 67: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドレプリケーションインスタンスの詳細

サービス対象 名前

米国東部 (バージニア北部) リージョン us-east-1

米国東部 (オハイオ) リージョン us-east-2

米国西部 (北カリフォルニア) リージョン us-west-1

米国西部 (オレゴン) リージョン us-west-2

AWS DMS では、AWS GovCloud (米国) という特殊な AWS リージョンがサポートされています。このリージョンは、米国政府機関および関係者のために、より機密性の高いワークロードをクラウドに移行することを目的に設けられています。AWS GovCloud (米国) は、米国政府の特定の規制とコンプライアンスの要件に対応しています。AWS GovCloud (米国) の詳細については、「AWS GovCloud (米国) とは」を参照してください。

以下で、レプリケーションインスタンスの詳細について参照してください。

トピック• 移行に適した AWS DMS レプリケーションインスタンスを選択する (p. 60)• パブリックおよびプライベートレプリケーションインスタンス (p. 62)• AWS DMS メンテナンス (p. 62)• レプリケーションエンジンバージョンの操作 (p. 65)• レプリケーションインスタンスのためのネットワークのセットアップ (p. 68)• レプリケーションインスタンスのための暗号化キーの設定 (p. 75)• レプリケーションインスタンスの作成 (p. 75)• レプリケーションインスタンスの変更 (p. 79)• レプリケーションインスタンスを再起動する (p. 82)• レプリケーションインスタンスの削除 (p. 83)• AWS DMS によりサポートされている DDL ステートメント (p. 85)

移行に適した AWS DMS レプリケーションインスタンスを選択する

AWS DMS では、Amazon Elastic Compute Cloud (Amazon EC2) インスタンスでレプリケーションインスタンスが作成されます。現在、AWS DMS ではレプリケーションインスタンス向けに T2、C4、R4 のAmazon EC2 インスタンスクラスがサポートされています。

• T2 インスタンスは、ベースラインレベルの CPU パフォーマンスを提供しながら、そのベースラインレベルを超えてバーストする機能を備えるように設計された、低コストのスタンダードインスタンスです。これらのインスタンスは、データベース移行プロセスの開発、設定、およびテストに適しています。また、CPU のバースト能力を利用できる定期的データ移行タスクにも適しています。

• この C4 インスタンスクラスは、大量の演算を行うワークロードで最高レベルのプロセッサパフォーマンスを実現するように設計されています。パケット毎秒 (PPS) が非常に大きく、ネットワークのストレスが少なく、ネットワークレイテンシーが低くなります。AWS DMS は、特に異機種間 (例: Oracle からPostgreSQL) で移行やレプリケーションを実行する場合に、CPU に対する負荷が大きくなる場合があります。C4 インスタンスは、このような状況に適しています。

• R4 インスタンスクラスは、メモリ負荷の大きいワークロード用に最適化されたメモリです。DMS を使用する高スループットトランザクションシステムの継続的な移行やレプリケーションが原因で、大量のCPU やメモリを消費することがあります。R4 インスタンスは、vCPU 別のメモリが含まれます。

API バージョン API Version 2016-01-0160

Page 68: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドレプリケーションインスタンスの詳細

レプリケーションインスタンスごとに、メモリと vCPU の固有の設定があります。次の表は、各レプリケーションインスタンスタイプの設定を示しています。価格については、AWS Database Migration サービスの料金表ページを参照してください。

レプリケーションインスタンスタイプ vCPU メモリ (GB)

汎用

dms.t2.micro 1 1

dms.t2.small 1 2

dms.t2.medium 2 4

dms.t2.large 2 8

コンピューティング最適化

dms.c4.large 2 3.75

dms.c4.xlarge 4 7.5

dms.c4.2xlarge 8 15

dms.c4.4xlarge 16 30

メモリを最適化

dms.r4.large 2 15.25

dms.r4.xlarge 4 30.5

dms.r4.2xlarge 8 61

dms.r4.4xlarge 16 122

dms.r4.8xlarge 32 244

移行に最適なレプリケーションインスタンスクラスを判断しやすいように、AWS DMS レプリケーションインスタンスで使用する変更データキャプチャ (CDC) プロセスを見ていきましょう。

全ロード + CDC タスク (一括ロードと継続的なレプリケーション) を実行していると想定します。この場合、タスクにはメタデータやその他の情報を格納する独自の SQLite リポジトリがあります。AWS DMSで全ロードを開始する前に、次のステップを実行します。

• AWS DMS は、ソースエンジンのトランザクションログから移行するテーブルの変更 (キャッシュされた変更と呼ばれる) のキャプチャを開始します。全ロードが完了すると、これらのキャッシュされた変更が収集され、ターゲットに適用されます。キャッシュされた変更のボリュームに応じて、これらの変更は、メモリから直接適用できます。ここで、これらの変更から設定しきい値まで収集されます。または、ディスクから適用して、変更がメモリに保持できないときに書き込まれるようにすることもできます。

• キャッシュされた変更が適用されると、AWS DMS はデフォルトでターゲットインスタンスに対してトランザクション適用を開始します。

適用済みのキャッシュされた変更フェーズと継続的なレプリケーションフェーズで、AWS DMS は、受信データと送信データ用に 2 つのストリームバッファを使用します。AWS DMS はソーターと呼ばれる重要なコンポーネントも使用します。これは、別のメモリバッファです。ソーターコンポーネントの 2 つの重要な用途 (他のコンポーネントを含む) は次のとおりです。

API バージョン API Version 2016-01-0161

Page 69: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドパブリックおよびプライベートレプリケーションインスタンス

• すべてのトランザクションを追跡し、関連するトランザクションのみを送信バッファに転送します。• これにより、トランザクションはソース上と同じコミットの順番で転送されます。

見てわかるように、このアーキテクチャには、AWS DMS の CDC 用の 3 つの重要なメモリバッファがあります。これらのバッファのいずれでメモリ負荷が生じた場合、移行でパフォーマンス上の問題が発生し、障害が起きる可能性があります。

1 秒あたりのトランザクション数 (TPS) が多い高負荷のワークロードをこのアーキテクチャに接続すると、R4 インスタンスの追加メモリが役立つことがわかります。R4 インスタンスを使用すると、多数のトランザクションをメモリに保持し、継続的なレプリケーション中のメモリプレッシャーの問題を回避できます。

パブリックおよびプライベートレプリケーションインスタンス

レプリケーションのインスタンスに、インスタンスがソースデータベースとターゲットデータベースへの接続に使用するパブリックまたはプライベート IP アドレスがあるかどうかを指定できます。

プライベートレプリケーションインスタンスには、レプリケーションネットワーク外からアクセスできないるプライベート IP アドレスがあります。ソースとターゲットのデータベースの両方が、VPN、AWSDirect Connect、VPC ピア接続を使用してレプリケーションインスタンスの VPC に接続されている同じネットワーク内にある場合、レプリケーションインスタンスにはプライベート IP アドレスが必要です。

VPC ピア接続は、同じネットワーク内にあるかのように各 VPC のプライベート IP アドレスを使用してルーティングできるようにする、2 つの VPC 間のネットワーキング接続です。VPC のピア接続の詳細については、『Amazon VPC ユーザーガイド』の「VPC ピア接続」を参照してください。

AWS DMS メンテナンスAWS DMS では、AWS DMS リソースのメンテナンスを定期的に実行します。通常、メンテナンスにはレプリケーションインスタンスやレプリケーションインスタンスのオペレーティングシステム (OS) の更新が伴います。AWS CLI または AWS DMS API を使用して、メンテナンスウィンドウを管理し、メンテナンスの更新を確認できます。AWS DMS コンソールでは、現在この作業はサポートされていません。

メンテナンス項目の適用時には、AWS DMS でご使用のレプリケーションインスタンスを少しの間オフラインにする必要があります。リソースのオフラインを必要とするメンテナンスには、特定のオペレーティングシステムやインスタンスのパッチが含まれます。セキュリティやインスタンスの信頼性に関連するパッチのみ、必須のパッチ適用として自動的にスケジューリングされます。このようなパッチは頻繁に発生するものではありません (通常 1 年に 1 ~ 2 回)。また、メンテナンスウィンドウのごく一部以上が必要になることは、非常に稀な場合に限られます。[Auto minor version upgrade] コンソールオプションを選択して、マイナーバージョンの更新が自動的に適用されるようにします。

AWS DMS メンテナンスウィンドウすべての AWS DMS レプリケーションインスタンスには週次のメンテナンスウィンドウが用意されており、その期間内に、利用可能なシステムの変更が適用されます。メンテナンスウィンドウは、変更やソフトウェアのパッチなどが実行されるタイミングをコントロールする機会と考えることができます。

特定の週の間にメンテナンスが必要であると AWS DMS が判断する場合、メンテナンスは、レプリケーションインスタンスの作成時に選択した 30 分のメンテナンス時間中に行われます。AWS DMS は、30 分

API バージョン API Version 2016-01-0162

Page 70: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドAWS DMS メンテナンスウィンドウ

のメンテナンス時間中にほとんどのメンテナンスを完了します。ただし、大規模な変更の場合より長い時間がかかる場合があります。

レプリケーションインスタンスを作成したときに選択した 30 分のメンテナンスウィンドウは、AWS リージョンごとに割り当てられた 8 時間の中で選択されます。レプリケーションインスタンスの作成時に希望のメンテナンスウィンドウを指定しない場合、AWS DMS では、ランダムに選択した曜日にメンテナンスウィンドウを割り当てます。マルチ AZ 配置を使用するレプリケーションインスタンスの場合、メンテナンスを完了するにはフェイルオーバーが必要になる場合があります。

AWS DMS をサポートしている各 AWS リージョンのメンテナンスウィンドウの一覧を次の表に示します。

サービス対象 時間ブロック

アジアパシフィック (シドニー) リージョン

12:00–20:00 UTC

アジアパシフィック (東京)リージョン

13:00–21:00 UTC

アジアパシフィック (ムンバイ) リージョン

17:30–01:30 UTC

アジアパシフィック (ソウル)リージョン

13:00–21:00 UTC

アジアパシフィック (シンガポール) リージョン

14:00–22:00 UTC

カナダ (中部) リージョン 06:29–14:29 UTC

欧州 (フランクフルト) リージョン

23:00–07:00 UTC

欧州 (アイルランド) リージョン

22:00–06:00 UTC

欧州 (ロンドン) リージョン 06:00–14:00 UTC

南米 (サンパウロ) リージョン 00:00–08:00 UTC

米国東部 (バージニア北部)リージョン

03:00–11:00 UTC

米国東部 (オハイオ) リージョン

03:00–11:00 UTC

米国西部 (北カリフォルニア)リージョン

06:00–14:00 UTC

米国西部 (オレゴン) リージョン

06:00–14:00 UTC

AWS GovCloud (米国西部) 06:00–14:00 UTC

既存の移行タスクにおけるメンテナンスの効果インスタンスで AWS DMS 移行タスクが実行されている場合、パッチが適用されると次のイベントが発生します。

API バージョン API Version 2016-01-0163

Page 71: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドAWS DMS メンテナンスウィンドウ

• 移行タスクのテーブルで継続的な変更フェーズ (CDC) のレプリケートを実行している場合、AWS DMSは、パッチが適用されている間、タスクを一時停止します。その後、パッチが適用されると、移行は中断されたところから再開します。

• パッチの適用時に AWS DMS がテーブルを移行中の場合、AWS DMS はテーブルの移行を再開します。

メンテナンスウィンドウ設定の変更AWS マネジメントコンソール、AWS CLI、または AWS DMS API を使用して、メンテナンスウィンドウの時間を変更できます。

AWS コンソールを使用したメンテナンスウィンドウ設定の変更

メンテナンスウィンドウの時間枠は、AWS マネジメントコンソール を使用して変更できます。

AWS コンソールを使用して優先メンテナンスウィンドウを変更するには

1. AWS マネジメントコンソール にサインインして AWS DMS を選択します。2. ナビゲーションペインで [Replication instances] を選択します。3. 変更するレプリケーションインスタンスを選択してから、[Modify] を選択します。4. [Maintenance] セクションを展開し、メンテナンスウィンドウの日時を選択します。

5. [Apply changes immediately] を選択します。6. [Modify] を選択します。

CLI を使用したメンテナンスウィンドウ設定の変更

必要なメンテナンスウィンドウを調整するには、以下のパラメータを指定して AWS CLI modify-replication-instance コマンドを使用します。

• --replication-instance-identifier

• --preferred-maintenance-window

Example

次の AWS CLI の例では、メンテナンスウィンドウを火曜日の午前 4:00 – 4:30 UTC に設定します。

aws dms modify-replication-instance \--replication-instance-identifier myrepinstance \--preferred-maintenance-window Tue:04:00-Tue:04:30

API バージョン API Version 2016-01-0164

Page 72: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドレプリケーションエンジンのバージョン

API を使用したメンテナンスウィンドウ設定の変更

必要なメンテナンスウィンドウを調整するには、以下のパラメータを指定して AWS DMS API のModifyReplicationInstance アクションを使用します。

• ReplicationInstanceIdentifier = myrepinstance

• PreferredMaintenanceWindow = Tue:04:00-Tue:04:30

Example

次のコード例では、メンテナンスウィンドウを火曜日の午前 4:00 – 4:30 UTC に設定します。

https://dms.us-west-2.amazonaws.com/?Action=ModifyReplicationInstance&DBInstanceIdentifier=myrepinstance&PreferredMaintenanceWindow=Tue:04:00-Tue:04:30&SignatureMethod=HmacSHA256&SignatureVersion=4&Version=2014-09-01&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIADQKE4SARGYLE/20140425/us-east-1/dms/aws4_request&X-Amz-Date=20140425T192732Z&X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date&X-Amz-Signature=1dc9dd716f4855e9bdf188c70f1cf9f6251b070b68b81103b59ec70c3e7854b3

レプリケーションエンジンバージョンの操作レプリケーションエンジンは、レプリケーションインスタンス上で実行され、指定する移行タスクを実行する AWS DMS コアソフトウェアです。AWS では、新機能とパフォーマンスの強化を含め、新しいバージョンの AWS DMS レプリケーションエンジンソフトウェアを定期的にリリースしています。レプリケーションエンジンソフトウェアの各バージョンには、他のバージョンと区別するための独自のバージョン番号があります。

新しいレプリケーションインスタンスを作成する際、特に指定がない場合は、最新の AWS DMS エンジンバージョンが実行されます。詳細については、「AWS DMS レプリケーションインスタンスを使用する (p. 59)」を参照してください。

現在実行しているレプリケーションインスタンスがある場合は、最新のエンジンバージョンにアップグレードできます (AWS DMS ではエンジンバージョンのダウングレードはサポートされていません)。 レプリケーションエンジンバージョンのリストを含む詳細については、次のセクションを参照してください。

レプリケーションインスタンスバージョンの廃止時折、AWS DMS によってレプリケーションインスタンスの以前のバージョンが廃止されることがあります。2018 年 4 月 2 日以降、AWS DMS では新しいレプリケーションインスタンスのバージョン 1.9.0 の作成が無効になります。このバージョンは、2016 年 3 月 15 日に AWS DMS で最初にサポートされて以降、機能、セキュリティ、信頼性が強化された後続のバージョンに置き換えられてきました。

2018 年 8 月 5 日の 0:00 (UTC) 以降、バージョン 1.9.0 で実行されるすべての DMS レプリケーションインスタンスは、各インスタンスに指定されたメンテナンスウィンドウ中に使用可能な最新バージョンに自動アップグレードされるようにスケジュールされます。それより前のご都合のよいときにインスタンスをアップグレードすることをお勧めします。

レプリケーションインスタンスのアップグレードを開始するには、「レプリケーションインスタンスのエンジンバージョンのアップグレード (p. 66)」の手順を使用します。

API バージョン API Version 2016-01-0165

Page 73: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドレプリケーションインスタンスのエンジンバージョンのアップグレード

レプリケーションインスタンスのアップグレードを選択したときに実行されている移行タスクについては、アップグレードが完了すると、アップグレード時の全ロードフェーズのテーブルが最初から再ロードされます。他のすべてのテーブルのレプリケーションは、アップグレードが完了すると中断することなく再開されます。バージョン 1.9.0 からインスタンスをアップグレードする場合は、AWS DMS レプリケーションインスタンスの使用可能な最新バージョンで現在の移行タスクをすべてテストすることをお勧めします。

レプリケーションインスタンスのエンジンバージョンのアップグレードAWS では、新機能とパフォーマンスの強化を含め、定期的に新しいバージョンの AWS DMS レプリケーションエンジンソフトウェアをリリースしています。利用可能な AWS DMS エンジンバージョンの概要を以下に示します。

バージョン リリース概要

3.1.x • AWS Database Migration Service (AWS DMS) 3.1.3 リリースノート (p. 398)• AWS Database Migration Service (AWS DMS) 3.1.2 リリースノート (p. 400)• AWS Database Migration Service (AWS DMS) 3.1.1 リリースノート (p. 401)

2.4.x • AWS Database Migration Service (AWS DMS) 2.4.5 リリースノート (p. 403)• AWS Database Migration Service (AWS DMS) 2.4.4 リリースノート (p. 404)• AWS Database Migration Service (AWS DMS) 2.4.3 リリースノート (p. 405)• AWS Database Migration Service (AWS DMS) 2.4.2 リリースノート (p. 405)• AWS Database Migration Service (AWS DMS) 2.4.1 リリースノート (p. 407)• AWS Database Migration Service (AWS DMS) 2.4.0 リリースノート (p. 408)

2.3.x • AWS Database Migration Service (AWS DMS) 2.3.0 リリースノート (p. 409)

2.2.x • AWS DMS ソースまたは AWS DMS ターゲットとしての Microsoft SQLServer 2016 のサポート。

• AWS DMS ソースまたは AWS DMS ターゲットとしての SAP ASE 16 のサポート。

• AWS DMS ソースのみとしての、Microsoft Azure で実行されている MicrosoftSQL Server のサポート。既存のデータの完全移行を実行できます。ただし、変更データキャプチャ (CDC) は使用できません。

1.9.x AWS DMS レプリケーションエンジンソフトウェアの累積リリース。

Note

レプリケーションインスタンス を 2.4.x から最新バージョンに直接アップグレードできます。

コンソールを使用したエンジンバージョンのアップグレードAWS マネジメントコンソール を使用して AWS DMS レプリケーションインスタンスをアップグレードできます。

コンソールを使用してレプリケーションインスタンスをアップグレードするには

1. https://console.aws.amazon.com/dms/ にある AWS DMS コンソールを開きます。2. ナビゲーションペインで [Replication instances] を選択します。

API バージョン API Version 2016-01-0166

Page 74: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドレプリケーションインスタンスのエンジンバージョンのアップグレード

3. レプリケーションエンジンを選択し、[Modify] を選択します。4. [Replication engine version] でバージョン番号を選択し、[Modify] を選択します。

Note

レプリケーションインスタンスタイプのアップグレードには数分間かかります。インスタンスが使用可能になると、ステータスは available に変わります。

CLI を使用したエンジンバージョンのアップグレード次のように AWS CLI を使用して AWS DMS レプリケーションインスタンスをアップグレードできます。

AWS CLI を使用してレプリケーションインスタンスをアップグレードするには

1. 次のコマンドを使用して、レプリケーションインスタンスの Amazon リソースネーム (ARN) を確認します。

aws dms describe-replication-instances \--query "ReplicationInstances[*].[ReplicationInstanceIdentifier,ReplicationInstanceArn,ReplicationInstanceClass]"

出力で、アップグレードするレプリケーションインスタンスの ARN を書き留めます。たとえば、arn:aws:dms:us-east-1:123456789012:rep:6EFQQO6U6EDPRCPKLNPL2SCEEY などです。

2. 次のコマンドを使用して、使用可能なレプリケーションインスタンスバージョンを調べます。

aws dms describe-orderable-replication-instances \--query "OrderableReplicationInstances[*].[ReplicationInstanceClass,EngineVersion]"

出力で、レプリケーションインスタンスクラスに使用できるエンジンバージョン番号を書き留めます。この情報はステップ 1 の出力に表示されます。

3. 次のコマンドを使ってレプリケーションインスタンスをアップグレードします。

aws dms modify-replication-instance \--replication-instance-arn arn \--engine-version n.n.n

前述の arn を、前のステップで書き留めた実際のレプリケーションインスタンス ARN に置き換えます。

n.n.n を、目的のエンジンバージョン番号に置き換えます。たとえば、2.2.1 などです。

Note

レプリケーションインスタンスタイプのアップグレードには数分間かかります。次のコマンドを使用して、レプリケーションインスタンスのステータスを表示できます。

aws dms describe-replication-instances \--query "ReplicationInstances[*].[ReplicationInstanceIdentifier,ReplicationInstanceStatus]"

レプリケーションインスタンスが使用可能になると、ステータスは available に変わります。API バージョン API Version 2016-01-01

67

Page 75: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドレプリケーションインスタンスの

ためのネットワークのセットアップ

レプリケーションインスタンスのためのネットワークのセットアップ

AWS DMS は、常に Amazon Virtual Private Cloud (Amazon VPC) に基づいて VPC にレプリケーションインスタンスを作成します。レプリケーションインスタンスがある VPC を指定します。アカウントと AWSリージョンにデフォルトの VPC を使用するか、新しい VPC を作成することができます。VPC では、少なくとも 1 つのアベイラビリティーゾーンにある 2 つのサブネットが必要です。

VPC でレプリケーションインスタンスに割り当てられた Elastic Network Interface (ENI) は、VPC からの退出 (送信) をすべてのポートですべてのトラフィックに許可するルールを持つセキュリティグループに関連付けられている必要があります。このアプローチでは、ソースおよびターゲットデータベースエンドポイントで適切な送信ルールが有効になっている限り、レプリケーションインスタンスからそれらのエンドポイントへの通信が許可されます。すべてのアドレスへの送信をすべてのポートで許可するデフォルト設定をエンドポイントに使用することをお勧めします。

ソースおよびターゲットエンドポイントは、VPC に接続するか、VPC 内に配置されることにより、VPC内にあるレプリケーションインスタンスにアクセスします。データベースエンドポイントには、レプリケーションインスタンスからの受信アクセスを許可するネットワークアクセスコントロールリスト (ACL)およびセキュリティグループルール (該当する場合) を含める必要があります。使用しているネットワーク設定に応じて、レプリケーションインスタンスの VPC セキュリティグループ、レプリケーションインスタンスのプライベートまたはパブリック IP アドレス、あるいは NAT ゲートウェイのパブリック IP アドレスを使用することができます。これらの接続によって、データ移行に使用するネットワークが形成されます。

データベース移行のネットワーク設定AWS Database Migration Service では、さまざまなネットワーク設定を使用できます。データベース移行に使用されるネットワークの一般的な設定を以下に示します。

トピック• すべてのデータベース移行コンポーネントが 1 つの VPC にある設定 (p. 68)• 2 つの VPC がある設定 (p. 69)• AWS Direct Connect または VPN を使用した VPC へのネットワークの設定 (p. 69)• インターネットを使用した VPC へのネットワークの設定 (p. 70)• ClassicLink を使用して VPC 内に存在しない Amazon RDS DB インスタンスを VPC 内の DB インスタ

ンスに設定 (p. 70)

すべてのデータベース移行コンポーネントが 1 つの VPC にある設定ソースエンドポイント、レプリケーションインスタンス、ターゲットエンドポイントがすべて同じ VPC にある場合、データベース移行のネットワークが最もシンプルになります。この設定は、ソースとターゲットのエンドポイントが Amazon RDS DB インスタンスまたは Amazon EC2 インスタンスにある場合に適しています。

次の図は、Amazon EC2 インスタンス上のデータベースがレプリケーションインスタンスに接続され、データが Amazon RDS DB インスタンスに移行される設定を示しています。

API バージョン API Version 2016-01-0168

Page 76: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドデータベース移行のネットワーク設定

この設定で使用される VPC セキュリティグループは、レプリケーションインスタンスからの受信をデータベースポートで許可する必要があります。これは、レプリケーションインスタンスにより使用されるセキュリティグループにエンドポイントへの送信があることを確認するか、レプリケーションインスタンスのプライベート IP アドレスを明示的に許可することにより、行うことができます。

2 つの VPC がある設定ソースエンドポイントとターゲットエンドポイントが別の VPC にある場合、いずれかの VPC でレプリケーションインスタンスを作成し、VPC ピア接続を使用して 2 つの VPC をリンクすることができます。

VPC ピア接続は、同じネットワーク内にあるかのように各 VPC のプライベート IP アドレスを使用してルーティングできるようにする、2 つの VPC 間のネットワーキング接続です。1 つの AWS リージョン内で VPC を接続するには、この方法をお勧めします。VPC ピア接続は、自分の VPC 間、または、同じAWS リージョン内の他の AWS アカウントにある VPC との間に作成できます。VPC のピア接続の詳細については、『Amazon VPC ユーザーガイド』の「VPC ピア接続」を参照してください。

次の図に、VPC ピア接続の設定例を示します。ここでは、VPC 内の Amazon EC2 インスタンスのソースデータベースが VPC ピア接続によって VPC に接続されます。この VPC には、レプリケーションインスタンスと Amazon RDS DB インスタンス上のターゲットデータベースが含まれています。

この設定で使用される VPC セキュリティグループは、レプリケーションインスタンスからの受信をデータベースポートで許可する必要があります。

AWS Direct Connect または VPN を使用した VPC へのネットワークの設定リモートネットワークは、AWS Direct Connect やソフトウェアまたはハードウェア VPN 接続といった複数のオプションを使用して VPC に接続できます。これらのオプションは、内部ネットワークを AWS クラウドに拡張することにより、モニタリング、認証、セキュリティ、データ、他のシステムなどの既存のオンサイトサービスを統合するためによく使用されます。このタイプのネットワーク拡張を使用することで、VPC などの AWS によってホストされたリソースにシームレスに接続できます。

次の図は、ソースエンドポイントが企業データセンターにあるオンプレミスデータベースである設定を示しています。このデータベースは、AWS Direct Connect または VPN を使用することで、レプリケーションインスタンスと、Amazon RDS DB インスタンス上のターゲットデータベースを含む VPC に接続されます。

API バージョン API Version 2016-01-0169

Page 77: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドデータベース移行のネットワーク設定

この設定では、VPC セキュリティグループに、特定の IP アドレスまたは範囲を宛先とするトラフィックをホストに送信するルーティングルールが含まれている必要があります。このホストは、VPC からのトラフィックをオンプレミスの VPN にブリッジできる必要があります。この場合、レプリケーションインスタンスのプライベート IP アドレスまたはセキュリティグループから NAT インスタンスへのトラフィックを許可する必要がある独自のセキュリティグループ設定が NAT ホストに含まれています。

インターネットを使用した VPC へのネットワークの設定VPN または AWS Direct Connect を使用して AWS リソースに接続しない場合は、インターネットを使用してデータベースを Amazon EC2 インスタンスまたは Amazon RDS DB インスタンスに移行できます。この設定では、ターゲットポイントおよびレプリケーションインスタンスを含むインターネットゲートウェイを持つ VPC 内にパブリックレプリケーションインスタンスが必要です。

インターネットゲートウェイを VPC に追加するには、『Amazon VPC ユーザーガイド』の「インターネットゲートウェイをアタッチする」を参照してください。

VPC セキュリティグループには、デフォルトでは VPC に向かわないトラフィックをインターネットゲートウェイに送信するルーティングルールが含まれている必要があります。この設定では、エンドポイントへの接続が、プライベート IP アドレスではなくレプリケーションインスタンスのパブリック IP アドレスから行われているかのように見えます。

ClassicLink を使用して VPC 内に存在しない Amazon RDS DBインスタンスを VPC 内の DB インスタンスに設定プロキシサーバーと ClassicLink を一緒に使用すると、VPC 内に存在しない Amazon RDS DB インスタンスを、VPC 内に存在する AWS DMS レプリケーションサーバーおよび DB インスタンスに接続できます。

&ClassicLink を使用すると、EC2-Classic DB インスタンスを同じ AWS リージョンにある自アカウントのVPC にリンクできます。リンクを作成すると、ソース DB インスタンスはプライベート IP アドレスを使用して VPC 内のレプリケーションインスタンスと通信できます。

VPC 内のレプリケーションインスタンスは、ClassicLink を使用して EC2-Classic プラットフォーム上のソース DB インスタンスに直接アクセスできないため、プロキシサーバーを使用する必要があります。プロキシサーバーはソース DB インスタンスを、レプリケーションインスタンスとターゲット DB インスタンスを含む VPC に接続します。プロキシサーバーは、ClassicLink を使用して VPC に接続します。プロキシサーバーでのポート転送により、VPC 内にあるソース DB インスタンスとターゲット DB インスタンスの間で通信が可能になります。

API バージョン API Version 2016-01-0170

Page 78: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドデータベース移行のネットワーク設定

AWS Database Migration Service で ClassicLink を使用する

プロキシサーバーと組み合わせて ClassicLink を使用すると、VPC 内に存在しない Amazon RDS DB インスタンスを、VPC 内に存在する AWS DMS レプリケーションサーバーおよび DB インスタンスに接続できます。

次の手順は、ClassicLink を使用して、VPC 内に存在しない Amazon RDS ソース DB インスタンスを、AWS DMS レプリケーションインタンスとターゲット DB インスタンスを含む VPC に接続する方法を示しています。

• VPC で AWS DMS レプリケーションインスタンスを作成します。(すべてのレプリケーションインスタンスが VPC 内で作成されます)。

• VPC セキュリティグループをレプリケーションインスタンスとターゲット DB インスタンスに関連付けます。2 つのインスタンスが VPC セキュリティグループを共有している場合、デフォルトで相互に通信できます。

• EC2 Classic インスタンスでプロキシサーバーをセットアップします。• プロキシサーバーと VPC の間に ClassicLink を使用した接続を作成します。• ソースデータベースとターゲットデータベースの AWS DMS エンドポイントを作成します。• AWS DMS タスクを作成します。

ClassicLink を使用して VPC 内にない DB インスタンス上のデータベースを VPC 内の DB インスタンス上の VPC に移行するには

1. ステップ 1: AWS DMS レプリケーションインスタンスを作成します。

AWS DMS レプリケーションインスタンスを作成して VPC セキュリティグループを割り当てるには:

a. AWS マネジメントコンソールにサインインし、[AWS Database Migration Service] を選択します。AWS Identity and Access Management (IAM) ユーザーとしてサインインしている場合、AWSDMS にアクセスするには適切なアクセス許可が必要です。データベース移行に必要なアクセス許可の詳細については、「AWS DMS を使用するのに必要な IAM アクセス許可 (p. 33)」を参照してください。

b. [Dashboard] ページで、[Replication Instance] を選択します。「ステップ 2: レプリケーションのインスタンスを作成する (p. 20)」の手順に従って、レプリケーションインスタンスを作成します。

c. AWS DMS レプリケーションインスタンスを作成したら、EC2 サービスコンソールを開きます。ナビゲーションペインで [Network Interfaces] を選択します。

d. [DMSNetworkInterface] を選択し、[Actions] メニューから [Change Security Groups] を選択します。

e. レプリケーションインスタンスとターゲット DB インスタンスに使用するセキュリティグループを選択します。

2. ステップ2: 前のステップのセキュリティグループをターゲット DB インスタンスに関連付けます。

セキュリティグループを DB インスタンスと関連付けるにはAPI バージョン API Version 2016-01-01

71

Page 79: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドデータベース移行のネットワーク設定

a. Amazon RDS サービスコンソールを開きます。ナビゲーションペインで [Instances] を選択します。

b. ターゲット DB インスタンスを選択します。[Instance Actions] で [Modify] を選択します。c. [Security Group] パラメーターの場合、前のステップで使用されたセキュリティグループを選択し

ます。d. [Continue] を選択してから、[Modify DB Instance] を選択します。

3. ステップ 3: NGINX を使用して EC2 Classic インスタンスでプロキシサーバーを設定します。EC2Classic インスタンスを起動するには、選択した AMI を使用します。以下の例は、AMI Ubuntu Server14.04 LTS (HVM) をベースとしています。

EC2 Classic インスタンスでプロキシサーバーをセットアップするには

a. EC2 Classic インスタンスに接続し、次のコマンドを使用して NGINX をインストールします。

Prompt> sudo apt-get updatePrompt> sudo wget http://nginx.org/download/nginx-1.9.12.tar.gzPrompt> sudo tar -xvzf nginx-1.9.12.tar.gz Prompt> cd nginx-1.9.12Prompt> sudo apt-get install build-essentialPrompt> sudo apt-get install libpcre3 libpcre3-devPrompt> sudo apt-get install zlib1g-devPrompt> sudo ./configure --with-streamPrompt> sudo makePrompt> sudo make install

b. 次のコードを使用して、NGINX デーモンファイル /etc/init/nginx.conf を編集します。

# /etc/init/nginx.conf – Upstart file

description "nginx http daemon"author "email"

start on (filesystem and net-device-up IFACE=lo)stop on runlevel [!2345]

env DAEMON=/usr/local/nginx/sbin/nginxenv PID=/usr/local/nginx/logs/nginx.pid

expect forkrespawnrespawn limit 10 5

pre-start script $DAEMON -t if [ $? -ne 0 ] then exit $? fiend script

exec $DAEMON

c. /usr/local/nginx/conf/nginx.conf に NGINX 構成ファイルを作成します。設定ファイルに、以下の内容を追加します。

# /usr/local/nginx/conf/nginx.conf - NGINX configuration file

API バージョン API Version 2016-01-0172

Page 80: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドレプリケーションサブネットグループの作成

worker_processes 1;

events { worker_connections 1024;}

stream { server { listen <DB instance port number>;proxy_pass <DB instance identifier>:<DB instance port number>; }}

d. コマンドラインから、次のコマンドを使用して NGINX を起動します。

Prompt> sudo initctl reload-configurationPrompt> sudo initctl list | grep nginxPrompt> sudo initctl start nginx

4. ステップ 4: プロキシサーバーと、ターゲット DB インスタンスおよびレプリケーションインスタンスを含むターゲット VPC の間に ClassicLink 接続を作成します。

プロキシサーバーとターゲット VPC を接続するには ClassicLink を使用します。

a. EC2 コンソールを開き、プロキシサーバーを実行している EC2 Classic インスタンスを選択します。

b. [Actions] で [ClassicLink] を選択し、[Link to VPC] を選択します。c. この手順で先に使用したセキュリティグループを選択します。d. [Link to VPC] を選択します。

5. ステップ 5: 「ステップ 3: ソースとターゲットのエンドポイントを指定する (p. 24)」の手順を使用して AWS DMS エンドポイントを作成します。ソースエンドポイントを指定する場合、サーバー名として内部 EC2 DNS ホスト名を使用する必要があります。

6. ステップ 6: 「ステップ 4: タスクを作成する (p. 27)」の手順を使用して AWS DMS タスクを作成します。

レプリケーションサブネットグループの作成データベース移行に使用するネットワークの一部として、使用する予定の Amazon Virtual Private Cloud(Amazon VPC) のサブネットを指定する必要があります。サブネットとは、指定されたアベイラビリティーゾーンにある VPC 内の IP アドレス範囲です。これらのサブネットは、VPC が存在している AWSリージョンのアベイラビリティーゾーン間で分散できます。

選択したサブネットにレプリケーションインスタンスを作成します。AWS DMS コンソールを使用することで、ソースまたはターゲットのエンドポイントが使用するサブネットを管理できます。

レプリケーションサブネットグループを作成し、使用するサブネットを定義できます。2 つの異なるアベイラビリティーゾーンにある少なくとも 1 つのサブネットを指定する必要があります。

レプリケーションサブネットグループを作成する方法

1. AWS マネジメントコンソール にサインインして AWS Database Migration Service を選択します。AWS Identity and Access Management (IAM) ユーザーとしてサインインしている場合、AWSDMS にアクセスするには適切なアクセス許可が必要です。データベース移行に必要なアクセス許可の

API バージョン API Version 2016-01-0173

Page 81: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドレプリケーションサブネットグループの作成

詳細については、「AWS DMS を使用するのに必要な IAM アクセス許可 (p. 33)」を参照してください。

2. [Navigation] ペインで、[Subnet Groups] を選択します。3. [Create Subnet Group] を選択します。4. 以下に示すように、[Edit Replication Subnet Group] ページで、レプリケーションサブネットグループ

情報を指定します。次の表で設定について説明します。

使用するオプション 操作

識別子 8 ~ 16 の印刷可能な ASCII 文字 (/、"、@ を除く) を含むレプリケーションサブネットグループ名を入力します。名前は、選択した AWS リージョンのアカウントで一意でなければなりません。わかりやすい名前にするには、AWSリージョンや実行中のタスクなどの情報を名前に含めます(例: DMS-default-VPC)。

説明 レプリケーションサブネットグループの簡単な説明を入力します。

VPC データベース移行に使用する VPC を選択します。VPC では、少なくとも 2 つのアベイラビリティーゾーンに少なくとも 1 つのサブネットが必要であることに注意してください。

利用可能なサブネット レプリケーションサブネットグループに含めるサブネットを選択します。少なくとも 2 つのアベイラビリティーゾーンにあるサブネットを選択する必要があります。

5. [Add] を選択し、サブネットをレプリケーションサブネットグループに追加します。6. [Create] を選択します。

API バージョン API Version 2016-01-0174

Page 82: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイド暗号化キーを設定する

レプリケーションインスタンスのための暗号化キーの設定

AWS DMS では、レプリケーションインスタンスによって使用されるストレージと、エンドポイントの接続情報を暗号化します。レプリケーションインスタンスで使用されるストレージを暗号化するため、AWS DMS では AWS アカウントに固有のマスターキーを使用します。このマスターキーは、AWSKey Management Service (AWS KMS) で表示および管理できます。ご使用のアカウント (aws/dms) のデフォルトのマスターキー を使用するか、ご自身で作成するカスタムのマスターキーを使用することができます。既存の AWS KMS 暗号化キーがある場合は、そのキーを暗号化に使用することもできます。

KMS キー識別子を指定して AWS DMS リソースを暗号化することで、独自の暗号化キーを指定できます。独自の暗号化キーを指定した場合、データベース移行の実行に使用されるユーザーアカウントがそのキーにアクセスできる必要があります。独自の暗号化キーを作成して暗号化キーへのユーザーアクセスを許可する方法の詳細については、『AWS KMS開発者ガイド』を参照してください。

KMS キー識別子を指定しない場合、AWS DMS はデフォルトの暗号化キーを使用します。KMS によって、AWS アカウント用に AWS DMS のデフォルトの暗号化キーが作成されます。AWS アカウントには、AWS のリージョンごとにデフォルトの暗号化キーがあります。

AWS DMS リソースの暗号化に使用されるキーを管理するには、KMS を使用します。KMS は、AWS マネジメントコンソール コンソールのホームページで [Identity & Access Management] を選択し、ナビゲーションペインで [暗号化キー] を選択することで表示できます。

KMS は、安全で可用性の高いハードウェアとソフトウェアを組み合わせて、クラウド向けに拡張されたキー管理システムを提供します。KMS を使用して、暗号化キーを作成し、それらのキーの使用方法を制御するポリシーを定義できます。KMS では AWS CloudTrail がサポートされているため、キーの使用を監査して、キーが適切に使用されていることを確認できます。KMS キーは、AWS DMS と、AmazonRDS、Amazon S3、Amazon Elastic Block Store (Amazon EBS)、Amazon Redshift などのサポートされている AWS のサービスと組み合わせて使用できます。

特定の暗号化キーを使用して AWS DMS リソースを作成すると、それらのリソースの暗号化キーを変更することはできません。AWS DMS リソースを作成する場合は、必ず暗号化キー要件を調べてください。

レプリケーションインスタンスの作成データベースの移行の最初のタスクは、割り当てるタスクを実行するのに十分なストレージと処理能力を持つレプリケーションのインスタンスを作成し、ソースデータベースからターゲットデータベースにデータを移行することです。このインスタンスの必要なサイズは、移行する必要のあるデータの量、および、インスタンスが実行するタスクにより異なります。レプリケーションインスタンスの詳細については、「AWS DMS レプリケーションインスタンスを使用する (p. 59)」を参照してください。

以下の手順では、AWS DMS コンソールウィザードを選択したことを前提とします。また、このステップは、AWS DMS コンソールのナビゲーションペインで [Replication instances (レプリケーションインスタンス)]、[Create replication instance (レプリケーションインスタンスの作成)] の順に選択することによっても実行できます。

AWS コンソールを使用してレプリケーションインスタンスを作成するには

1. [Create replication instance] ページで、レプリケーションのインスタンス情報を指定します。次の表で設定について説明します。

API バージョン API Version 2016-01-0175

Page 83: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドレプリケーションインスタンスの作成

使用するオプション 操作

名前 8 ~ 16 の印刷可能な ASCII 文字 (/、"、@ を除く) を含むレプリケーションインスタンス名を入力します。名前は、選択した AWS リージョンのアカウントで一意でなければなりません。わかりやすい名前にするには、AWS リージョンや実行中のタスクなどの情報を名前に含めます (例:west2-mysql2mysql-instance1)。

説明 レプリケーションインスタンスの簡単な説明を入力します。

インスタンスクラス 移行に必要な設定を使用してインスタンスのクラスを選択します。正常に移行を完了するために、インスタンスには十分なストレージ、ネットワーク、処理能力が必要であることに注意してください。移行に最適なインスタンスのクラスを決定する方法に関する詳細については、「AWS DMS レプリケーションインスタンスを使用する (p. 59)」を参照してください。

レプリケーションエンジンのバージョン

デフォルトでは、レプリケーションインスタンスは最新バージョンの AWS DMS レプリケーションエンジンソフトウェアを実行します。このデフォルトをそのまま使用することをお勧めします。ただし、必要に応じて、以前のエンジンバージョンを選択できます。

API バージョン API Version 2016-01-0176

Page 84: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドレプリケーションインスタンスの作成

使用するオプション 操作

VPC 使用する Amazon Virtual Private Cloud (Amazon VPC)を選択します。ソースまたはターゲットデータベースがVPC にある場合、その VPC を選択します。ソースまたはターゲットデータベースが別の VPC にある場合、それらが共にパブリックサブネットにあり、パブリックにアクセス可能であることを確認してから、レプリケーションインスタンスが配置される VPC を選択します。レプリケーションインスタンスが、ソース VPC のデータにアクセスできるようにする必要があります。ソースもターゲットデータベースも VPC にない場合は、レプリケーションインスタンスを配置する VPC を選択します。

マルチ AZ オプションのパラメータを使用して、フェイルオーバーのサポート用に別のアベイラビリティーゾーンにレプリケーションインスタンスのスタンバイレプリカを作成します。変更データキャプチャ (CDC) または、進行中のレプリケーションを使用する場合は、このオプションを有効にする必要があります。

パブリックアクセス可能 レプリケーションインスタンスをインターネットからアクセス可能にする場合は、このオプションを選択します。

2. 必要がある場合は、[Advanced] タブを選択して、次に示す通り、ネットワークおよび暗号化設定の値を設定します。次の表で設定について説明します。

API バージョン API Version 2016-01-0177

Page 85: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドレプリケーションインスタンスの作成

使用するオプション 操作

Allocated storage (GB) ストレージは主に、ログファイルと、キャッシュされたトランザクションで消費されます。キャッシュされたトランザクションでは、ストレージは、キャッシュされたトランザクションをディスクに書き込む必要がある場合にのみ使用されます。したがって、AWS DMS では大量のストレージを使用しません。例外には次のようなものがあります。

• 膨大なトランザクションをロードする、サイズの大きなテーブル。サイズの大きなテーブルをロードするには時間がかかります。そのため、サイズの大きなテーブルをロードする間、キャッシュされたトランザクションが書き込まれる可能性が高くなります。

• キャッシュされたトランザクションをロードする前に停止するよう設定されているタスク。この場合、すべてのテーブルのロードが完了するまで、すべてのトランザクションがキャッシュされます。この設定では、キャッシュされたトランザクションにより、かなりの量のストレージが消費されることがあります。

• Amazon Redshift にロードされるテーブルを使用する設定になっているタスク。ただし、Amazon Aurora がターゲットのときは、この設定は問題にはなりません。

ほとんどの場合、ストレージのデフォルトの割り当てで十分です。ただし、ストレージ関連のメトリクスに注意を払い、デフォルトの割り当てよりも消費量が多い場合はストレージを拡張することをおすすめします。

レプリケーションサブネットグループ レプリケーションインスタンスを作成する選択した VPCでレプリケーションサブネットグループを選択します。ソースデータベースが VPC にある場合は、レプリケーションインスタンスの場所として、ソースデータベースを含むサブネットグループを選択します。レプリケーションサブネットグループの詳細については、「レプリケーションサブネットグループの作成 (p. 73)」を参照してください。

アベイラビリティーゾーン ソースデータベースが配置されているアベイラビリティーゾーンを選択します。

VPC セキュリティグループ レプリケーションのインスタンスが VPC 内で作成されます。ソースデータベースが VPC にある場合は、データベースが存在する DB インスタンスへのアクセス権を提供する VPC セキュリティグループを選択します。

KMS マスターキー 使用する暗号化キーを選択して、レプリケーションのストレージと接続情報を暗号化します。(デフォルト) aws/dmsを選択する場合、アカウントおよび AWS リージョンに関連付けられたデフォルトの AWS Key Management Service(AWS KMS) キーが使用されます。説明とアカウント番号が、キーの ARN とともに表示されます。暗号化キーの使用の詳細については、「暗号化キーの設定と KMS のアクセス許可の指定 (p. 47)」を参照してください。

API バージョン API Version 2016-01-0178

Page 86: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドレプリケーションインスタンスの変更

3. [Maintenance] 設定を指定します。次の表で設定について説明します。メンテナンス設定の詳細については、「AWS DMS メンテナンスウィンドウ (p. 62)」を参照してください。

使用するオプション 操作

Auto minor version upgrade 選択すると、メンテナンスの時間帯に、レプリケーションインスタンスに自動的にマイナーエンジンアップグレードが適用されます。

Maintenance window 週 1 回のシステムメンテナンスを実行できる時間帯 (世界標準時 (UTC)) を選択します。

デフォルト: 1 週間のうちのランダムな日に起こる、AWSリージョンあたり 8 時間の範囲からランダムに選択された30 分の時間窓。

4. [Create replication instance] を選択します。

レプリケーションインスタンスの変更インスタンスクラスの変更やストレージの増量など、レプリケーションインスタンスの設定を変更できます。

レプリケーションインスタンスを変更する際に、変更内容を即時に適用することができます。変更内容をすぐに適用するには、AWS マネジメントコンソール で [Apply changes immediately (変更をすぐに適用する)] オプションを選択するか、AWS CLI を呼び出す際に --apply-immediately パラメータを使用するか、AWS DMS API を使用する際に ApplyImmediately パラメータを true に設定します。

変更の即時適用を選択しない場合、この変更は保留中の変更キューに保存されます。次のメンテナンスウィンドウ実行中に、キューのすべての保留中の変更が適用されます。

Note

変更の即時適用を選択した場合、保留中の変更キューにあるすべての変更も同様に適用されます。ダウンタイムを必要とする保留中の変更がある場合、[Apply changes immediately] を選択すると予想外のダウンタイムが発生することがあります。

AWS コンソールを使用してレプリケーションインスタンスを変更するには

1. AWS マネジメントコンソール にサインインして AWS DMS を選択します。2. ナビゲーションペインで [Replication instances] を選択します。

API バージョン API Version 2016-01-0179

Page 87: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドレプリケーションインスタンスの変更

3. 変更するレプリケーションインスタンスを選択します。次の表は、行うことができる変更を示しています。

使用するオプション 操作

名前 レプリケーションインスタンスの名前を変更できます。8~ 16 の印刷可能な ASCII 文字 (/、"、@ を除く) を含むレプリケーションインスタンス名を入力します。名前は、選択した AWS リージョンのアカウントで一意でなければなりません。わかりやすい名前にするには、AWS リージョンや実行中のタスクなどの情報を名前に含めます (例:west2-mysql2mysql-instance1)。

インスタンスクラス インスタンスクラスを変更できます。移行に必要な設定を使用してインスタンスのクラスを選択します。インスタンスクラスを変更すると、レプリケーションインスタンスが再起動されます。この再起動は、次のメンテナンスウィンドウ中に行われます。または、[Apply changesimmediately] オプションを選択するとすぐに行われます。

移行に最適なインスタンスのクラスを決定する方法に関する詳細については、「AWS DMS レプリケーションインスタンスを使用する (p. 59)」を参照してください。

レプリケーションエンジンのバージョン

レプリケーションインスタンスで使用されているエンジンバージョンをアップグレードできます。レプリケーションのエンジンバージョンをアップグレードすると、アップグレード中にレプリケーションインスタンスがシャットダウンされます。

マルチ AZ このオプションを変更して、フェイルオーバーのサポート用に別のアベイラビリティーゾーンにレプリケーションインスタンスのスタンバイレプリカを作成するか、このオプションを削除できます。変更データキャプチャ (CDC) または継続的なレプリケーションを使用する場合は、このオプションを有効にする必要があります。

API バージョン API Version 2016-01-0180

Page 88: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドレプリケーションインスタンスの変更

使用するオプション 操作

Allocated storage (GB) ストレージは主に、ログファイルと、キャッシュされたトランザクションで消費されます。キャッシュされたトランザクションでは、ストレージは、キャッシュされたトランザクションをディスクに書き込む必要がある場合にのみ使用されます。したがって、AWS DMS では大量のストレージを使用しません。例外には次のようなものがあります。

• 膨大なトランザクションをロードする、サイズの大きなテーブル。サイズの大きなテーブルをロードするには時間がかかります。そのため、サイズの大きなテーブルをロードする間、キャッシュされたトランザクションが書き込まれる可能性が高くなります。

• キャッシュされたトランザクションをロードする前に停止するよう設定されているタスク。この場合、すべてのテーブルのロードが完了するまで、すべてのトランザクションがキャッシュされます。この設定では、キャッシュされたトランザクションにより、かなりの量のストレージが消費されることがあります。

• Amazon Redshift にロードされるテーブルを使用する設定になっているタスク。ただし、Amazon Aurora がターゲットのときは、この設定は問題にはなりません。

ほとんどの場合、ストレージのデフォルトの割り当てで十分です。ただし、ストレージ関連のメトリクスに注意を払い、デフォルトの割り当てよりも消費量が多い場合はストレージを拡張することをおすすめします。

VPC セキュリティグループ レプリケーションのインスタンスが VPC 内で作成されます。ソースデータベースが VPC にある場合は、データベースが存在する DB インスタンスへのアクセス権を提供する VPC セキュリティグループを選択します。

Auto minor version upgrade このオプションを選択すると、メンテナンスウィンドウ中にマイナーエンジンアップグレードを自動的にレプリケーションインスタンスに適用できます。または、[Applychanges immediately] オプションを選択するとすぐに適用できます。

Maintenance window 週 1 回のシステムメンテナンスを実行できる時間帯 (世界標準時 (UTC)) を選択します。

デフォルト: 1 週間のうちのランダムな日に起こる、AWSリージョンあたり 8 時間の範囲からランダムに選択された30 分の時間窓。

Apply changes immediately 行った変更をすぐに適用するには、このオプションを選択します。選択した設定によっては、このオプションを選択すると、レプリケーションインスタンスが直ちに再起動される可能性があります。

API バージョン API Version 2016-01-0181

Page 89: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドレプリケーションインスタンスを再起動する

レプリケーションインスタンスを再起動するAWS DMS レプリケーションインスタンスを再起動して、レプリケーションエンジンを再開できます。再起動すると、レプリケーションインスタンスは一時的に機能停止になります。その間、インスタンスのステータスは [Rebooting] に設定されます。AWS DMS インスタンスがマルチ AZ 用に構成されている場合、再起動はフェイルオーバーにより実行できます。再起動が完了すると、AWS DMS イベントが作成されます。

AWS DMS インスタンスがマルチ AZ 配置である場合は、ある AWS アベイラビリティーゾーンから別のアベイラビリティーゾーンへのフェイルオーバーを強制的に実行できます。AWS DMS インスタンスのフェイルオーバーを強制すると、AWS DMS は別のアベイラビリティーゾーンでスタンバイインスタンスに自動的に切り替わります。フェイルオーバーを使用した再起動は、テスト用に AWS DMS インスタンスの障害をシミュレートするときに役立ちます。

再起動の発生時にレプリケーションインスタンスで実行されている移行タスクがある場合、データは失われず、再起動が完了するとタスクが再開されます。移行タスクのテーブルがバルクロードの途中の場合(全ロードフェーズ)、DMS はそれらのテーブルの移行を最初から再開します。移行タスクのテーブルが継続的なレプリケーションフェーズにある場合、再起動が完了するとタスクが再開されます。

ステータスが [Available] 状態にない場合、AWS DMS レプリケーションインスタンスを再起動することはできません。AWS DMS インスタンスは、以前の要求による変更、またはメンテナンスウィンドウのアクションなど、いくつかの理由で使用できない場合があります。AWS DMS レプリケーションインスタンスの再起動に必要な時間は、通常短時間です (5 分未満)。

AWS コンソールを使用したレプリケーションインスタンスの再起動レプリケーションインスタンスを再起動するには、AWS コンソールを使用します。

AWS コンソールを使用してレプリケーションインスタンスを再起動するには

1. AWS マネジメントコンソール にサインインして AWS DMS を選択します。2. ナビゲーションペインで [Replication instances] を選択します。3. 再起動するレプリケーションインスタンスを選択します。4. [Reboot] を選択します。5. マルチ AZ 配置のレプリケーションインスタンスを設定し、別の AWS アベイラビリティーゾーンに

フェイルオーバーする場合は、[レプリケーションインスタンスの再起動] ダイアログボックスで、[フェイルオーバーによる再起動を行いますか?] を選択します。

6. [Reboot] を選択します。

CLI を使用してレプリケーションインスタンスを再起動するレプリケーションインスタンスを再起動するには、以下のパラメータを指定して AWS CLI reboot-replication-instance コマンドを使用します。

• --replication-instance-arn

Example シンプルな再起動の例

次の AWS CLI の例では、レプリケーションインスタンスを再起動します。

aws dms reboot-replication-instance \--replication-instance-arn arnofmyrepinstance

API バージョン API Version 2016-01-0182

Page 90: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドレプリケーションインスタンスの削除

Example フェイルオーバーによるシンプルな再起動の例

次の AWS CLI の例では、フェイルオーバーによりレプリケーションインスタンスを再起動します。

aws dms reboot-replication-instance \--replication-instance-arn arnofmyrepinstance \--force-failover

API を使用してレプリケーションインスタンスを再起動するレプリケーションインスタンスを再起動するには、以下のパラメータを指定して AWS DMS API のRebootReplicationInstance アクションを使用します。

• ReplicationInstanceArn = arnofmyrepinstance

Example シンプルな再起動の例

次のコードの例では、レプリケーションインスタンスを再起動します。

https://dms.us-west-2.amazonaws.com/?Action=RebootReplicationInstance&DBInstanceArn=arnofmyrepinstance&SignatureMethod=HmacSHA256&SignatureVersion=4&Version=2014-09-01&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIADQKE4SARGYLE/20140425/us-east-1/dms/aws4_request&X-Amz-Date=20140425T192732Z&X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date&X-Amz-Signature=1dc9dd716f4855e9bdf188c70f1cf9f6251b070b68b81103b59ec70c3e7854b3

Example フェイルオーバーによるシンプルな再起動の例

次のコード例では、レプリケーションインスタンスを再起動し、別の AWS アベイラビリティーゾーンにフェイルオーバーします。

https://dms.us-west-2.amazonaws.com/?Action=RebootReplicationInstance&DBInstanceArn=arnofmyrepinstance&ForceFailover=true&SignatureMethod=HmacSHA256&SignatureVersion=4&Version=2014-09-01&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIADQKE4SARGYLE/20140425/us-east-1/dms/aws4_request&X-Amz-Date=20140425T192732Z&X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date&X-Amz-Signature=1dc9dd716f4855e9bdf188c70f1cf9f6251b070b68b81103b59ec70c3e7854b3

レプリケーションインスタンスの削除不要になった AWS DMS レプリケーションインスタンスは削除できます。レプリケーションインスタンスを使用する移行タスクがある場合は、レプリケーションインスタンスを削除する前に、タスクを停止して削除する必要があります。

API バージョン API Version 2016-01-0183

Page 91: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドレプリケーションインスタンスの削除

AWS アカウントを閉じた場合、アカウントに関連付けられたすべての AWS DMS リソースおよび設定は2 日後に削除されます。これらのリソースには、すべてのレプリケーションインスタンス、ソースおよびターゲットのエンドポイント設定、レプリケーションタスク、および SSL 証明書が含まれます。2 日後にAWS DMS を再度使用する場合は、必要なリソースを再作成します。

AWS コンソールを使用したレプリケーションインスタンスの削除レプリケーションインスタンスを削除するには、AWS コンソールを使用します。

AWS コンソールを使用してレプリケーションインスタンスを削除するには

1. AWS マネジメントコンソール にサインインして AWS DMS を選択します。2. ナビゲーションペインで [Replication instances] を選択します。3. 削除するレプリケーションインスタンスを選択します。4. [Delete] を選択します。5. ダイアログボックスで、[Delete] を選択します。

CLI を使用したレプリケーションインスタンスの削除レプリケーションインスタンスを削除するには、以下のパラメータを指定して AWS CLI delete-replication-instance コマンドを使用します。

• --replication-instance-arn

Example 削除の例

次の AWS CLI の例では、レプリケーションインスタンスを削除します。

aws dms delete-replication-instance \--replication-instance-arn <arnofmyrepinstance>

API を使用したレプリケーションインスタンスの削除レプリケーションインスタンスを削除するには、以下のパラメータを指定して AWS DMS API のDeleteReplicationInstance アクションを使用します。

• ReplicationInstanceArn = <arnofmyrepinstance>

Example 削除の例

次のコードの例では、レプリケーションインスタンスを削除します。

https://dms.us-west-2.amazonaws.com/?Action=DeleteReplicationInstance&DBInstanceArn=arnofmyrepinstance&SignatureMethod=HmacSHA256&SignatureVersion=4&Version=2014-09-01&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIADQKE4SARGYLE/20140425/us-east-1/dms/aws4_request&X-Amz-Date=20140425T192732Z&X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date

API バージョン API Version 2016-01-0184

Page 92: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドサポートされている DDL ステートメント

&X-Amz-Signature=1dc9dd716f4855e9bdf188c70f1cf9f6251b070b68b81103b59ec70c3e7854b3

AWS DMS によりサポートされている DDL ステートメント

データ移行プロセス中は、ソースデータベース上でデータ定義言語 (DDL) ステートメントを実行できます。これらのステートメントはレプリケーションサーバー上で、ターゲットデータベースにレプリケートされます。

サポートされている DDL ステートメントは以下のとおりです。

• Create table• Drop table• Rename table• Add column• Drop column• Rename column• Change column data type

特定のソースでサポートされている DDL ステートメントについては、そのソースについて説明しているトピックを参照してください。

API バージョン API Version 2016-01-0185

Page 93: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドデータ移行のソース

AWS DMS エンドポイントの使用エンドポイントは、データストアに関する接続、データストアタイプ、および場所情報を提供します。AWS Database Migration Service はこの情報を使用してデータストアに接続し、ソースエンドポイントからターゲットエンドポイントにデータを移行します。追加の接続属性を使用して、エンドポイントの接続属性をさらに指定できます。これらの属性により、ログ記録やファイルサイズなどのパラメータを管理できます。追加の接続属性の詳細については、データストアのドキュメントセクションを参照してください。

以下で、エンドポイントの詳細について参照してください。

トピック• データ移行のソース (p. 86)• データ移行のターゲット (p. 155)• ソースおよびターゲットエンドポイントの作成 (p. 246)

データ移行のソースAWS Database Migration Service (AWS DMS) では、最もよく利用されているデータエンジンの多くをデータレプリケーションのソースとして使用できます。データベースソースには、Amazon ElasticCompute Cloud (Amazon EC2) インスタンスまたはオンプレミスのデータベースで実行されている自己管理型エンジンを使用できます。または、Amazon Relational Database Service (Amazon RDS) や AmazonS3 などの Amazon が管理するサービス上のデータソースも使用できます。

AWS DMS の有効なソースには次のものがあります。

オンプレミスおよび Amazon EC2 インスタンスデータベース

• Enterprise、Standard、Standard One、および Standard Two エディションの Oracle バージョン 10.2 以降 (バージョン 10.x)、11g、12.2 および 18c まで。

Note

ソースとして Oracle バージョン 18c のサポートは、AWS DMS バージョン 3.3.0 以降で利用できます。

• Microsoft SQL Server バージョン2005、2008、2008R2、2012、2014、2016、2017。Enterprise、Standard、Workgroup、およびDeveloper エディションがサポートされます。Web および Express エディションは AWS DMS ではサポートされていません。

• MySQL バージョン 5.5、5.6、5.7.• MariaDB (MySQL 互換データソースとしてサポート) バージョン 10.0.24 から 10.0.28、10.1、10.2。

Note

ソースとしての MariaDB のサポートは、MySQL がサポートされているすべての AWS DMSバージョンで利用できます。

• PostgreSQL バージョン 9.4 以降 (バージョン 9.x 用)、10.x、11.x。Note

PostgreSQL 11.x バージョンは AWS DMS バージョン 3.3.0 以降でのみソースとしてサポートされています。PostgreSQL バージョン 9.4 以降 (バージョン 9.x 用) および 10.x を任意のDMS バージョンのソースとして使用できます。

API バージョン API Version 2016-01-0186

Page 94: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドデータ移行のソース

• SAP Adaptive Server Enterprise (ASE) バージョン 12.5.3 以上、15、15.5、15.7、16 以降。• MongoDB バージョン 2.6.x およ 3.x 以降。• IBM Db2 for Linux、UNIX、および Windows (Db2 LUW) バージョン:

• バージョン 9.7、すべての Fix Pack がサポートされています。• バージョン 10.1、すべての Fix Pack がサポートされています。• Version 10.5、Fix Pack 5 を除くすべての Fix Pack がサポートされています。• バージョン 11.1、すべての Fix Pack がサポートされています。

Microsoft Azure

• AWS DMS では、Azure SQL Database をソースとして使用するときに全データのロードがサポートされます。変更データキャプチャ (CDC) はサポートされません。

Amazon RDS インスタンスデータベース

• Enterprise、Standard、Standard One、および Standard Two エディションの Oracle バージョン 10.2 以降 (バージョン 10.x)、11g (バージョン 11.2.0.3.v1 以降)、12.2 および 18c まで。

Note

ソースとして Oracle バージョン 18c のサポートは、AWS DMS バージョン 3.3.0 以降で利用できます。

• Microsoft SQL Server バージョン 2008R2、2012、2014、2016、2017。Enterprise および Standardエディションがサポートされています。CDC は Enterprise Edition のすべてのバージョンでサポートされています。CDC は、Standard Edition バージョン 2016 SP1 以降でのみサポートされています。Web、Workgroup、Developer、Express エディションは AWS DMS ではサポートされていません。

• MySQL バージョン 5.5、5.6、5.7.変更データキャプチャ (CDC) は、バージョン 5.6 以降でのみサポートされます。

• PostgreSQL バージョン 9.4 以降 (バージョン 9.x)、10.x、および 11.x。変更データキャプチャ (CDC)は、バージョン 9.4.9 以降と 9.5.4 以降、10.x、および 11.x でのみサポートされます。CDC に必要なrds.logical_replication パラメータは、これらのバージョン以降でのみサポートされています。

Note

PostgreSQL 11.x バージョンは AWS DMS バージョン 3.3.0 以降でのみソースとしてサポートされています。PostgreSQL バージョン 9.4 以降 (バージョン 9.x 用) および 10.x を任意のDMS バージョンのソースとして使用できます。

• MariaDB (MySQL 互換データソースとしてサポート) バージョン 10.0.24 から 10.0.28、10.1、10.2。

Note

ソースとしての MariaDB のサポートは、MySQL がサポートされているすべての AWS DMSバージョンで利用できます。

• MySQL と互換性がある Amazon Aurora。• PostgreSQL との互換性がある Amazon Aurora。

Amazon S3

• AWS DMS では、Amazon S3 をソースとして使用する場合に、全データロードおよび変更データキャプチャ (CDC) がサポートされます。

トピックAPI バージョン API Version 2016-01-01

87

Page 95: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドソースとして Oracle を使用する

• AWS DMS のソースとして Oracle データベースを使用する (p. 88)• Microsoft SQL Server データベースを AWS DMS のソースとして使用する (p. 105)• Microsoft Azure SQL データベースの AWS DMS のソースとしての使用 (p. 115)• PostgreSQL データベースの AWS DMS のソースとしての使用 (p. 116)• MySQL 互換データベースの AWS DMS のソースとしての使用 (p. 130)• SAP ASE データベースを AWS DMS のソースとして使用する (p. 138)• AWS DMS のソースとしての MongoDB の使用 (p. 141)• AWS DMS のソースとしての Amazon S3 の使用 (p. 146)• AWS DMS のソースとして IBM Db2 for Linux、Unix、および Windows データベース (Db2 LUW) を使

用する (p. 152)

AWS DMS のソースとして Oracle データベースを使用するAWS DMS を使用して、1 つ以上の Oracle データベースからデータを移行できます。Oracle データベースをソースとして使用すると、AWS DMS によりサポートされているいずれかのターゲットにデータを移行できます。

ソースとしての自己管理型の Oracle データベースの場合、AWS DMS ではバージョン 10.2 以降、11gから 12.2 まで、および 18c のすべての Oracle データベースエディションがサポートされています。Amazon RDS により提供される Amazon が管理する Oracle データベースの場合、AWS DMS はバージョン 11g (バージョン 11.2.0.3.v1 以降) および 12.2 以前、および 18c のすべての Oracle データベースエディションをサポートしています。

Note

ソースとして Oracle バージョン 18c のサポートは、AWS DMS バージョン 3.3.0 以降で利用できます。

Secure Sockets Layer (SSL) を使用して、Oracle エンドポイントとレプリケーションインスタンスとの接続を暗号化できます。Oracle エンドポイントで SSL を使用する方法の詳細については、「AWS DatabaseMigration Service で SSL を使用する (p. 49)」を参照してください。

AWS DMS のソースとして Oracle データベースを設定するステップは次のとおりです。

1. CDC のみのタスクまたは全ロードと CDC のタスクを作成する場合、Oracle LogMiner または OracleBinary Reader を選択してデータ変更をキャプチャする必要があります。LogMiner または BinaryReader を選択すると、それ以降のアクセス許可と設定タスクのいくつかが決定されます。LogMiner とBinary Reader の比較については、次のセッションを参照してください。

2. AWS DMS の適切なアクセス許可を持つ Oracle ユーザーを作成します。全ロードのみのタスクを作成する場合、これ以上設定は必要ありません。

3. 選択した設定に準拠する DMS エンドポイントを作成します。

Oracle データベースと AWS DMS の使用の詳細については、以下のセクションを参照してください。

トピック• 変更データキャプチャ (CDC) での Oracle LogMiner または Oracle Binary Reader の使用 (p. 89)• AWS DMS のソースとして自己管理型 Oracle データベースを使用する (p. 91)• Amazon が管理する Oracle データベースを AWS DMS のソースとして使用する (p. 94)• Oracle を AWS DMS のソースとして使用する場合の制限 (p. 96)

API バージョン API Version 2016-01-0188

Page 96: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドソースとして Oracle を使用する

• AWS DMS のソースとして Oracle を使用する場合の追加の接続属性 (p. 97)• Oracle のソースデータ型 (p. 102)

変更データキャプチャ (CDC) での Oracle LogMiner またはOracle Binary Reader の使用Oracle には、変更処理を行う際に REDO ログを読み取るための方法として Oracle LogMiner と OracleBinary Reader の 2 つが用意されています。Oracle LogMiner には、Oracle のオンラインおよびアーカイブ REDO ログファイルへの SQL インターフェイスが用意されています。Binary Reader は raw REDO ログファイルを直接読み取って解析する AWS DMS 機能です。

デフォルトでは、AWS DMS は変更データキャプチャ (CDC) に Oracle LogMiner を使用します。AWSDMS で LogMiner を使用することのメリットは次のとおりです。

• LogMiner では、暗号化オプションや圧縮オプションなど、ほとんどの Oracle オプションがサポートされています。Binary Reader では、すべての Oracle オプションがサポートされているわけではありません (特に暗号化と圧縮のオプション)。

• LogMiner には、特に Oracle Binary Reader の直接アクセスセットアップと比較したり、REDO ログがOracle Automatic Storage Management (ASM) 上にある場合と比較して、シンプルな設定になっています。

• LogMiner は、Oracle Transparent Data Encryption (TDE) を含むほとんどの Oracle 暗号化オプションを完全にサポートします。

• LogMiner は、全ロードおよび継続的レプリケーション (CDC) の両方に対して次の HCC 圧縮タイプをサポートします。• QUERY HIGH• ARCHIVE HIGH• ARCHIVE LOW• QUERY LOW

Binary Reader は、継続的 (CDC) レプリケーションではなく、全ロードレプリケーションでのみQUERY LOW 圧縮をサポートします。

• LogMiner は、AWS DMS により使用されるテーブルクラスターをサポートします。Binary Reader はサポートされません。

AWS DMS で LogMiner の代わりに Binary Reader を使用することのメリットは次のとおりです。

• 大量の変更を含む移行の場合、LogMiner は Oracle ソースデータベースをホストするコンピュータの I/Oや CPU にある程度の影響を及ぼすことがあります。Binary Reader では、アーカイブログがレプリケーションインスタンスにコピーされてそこでデータマイニングが行われるため、I/O や CPU に影響を与える可能性は高くありません。

• 大量の変更を含む移行の場合、Oracle LogMiner を使用するより Binary Reader を使用した方が CDC のパフォーマンスが通常はかなり高くなります。

• Binary Reader では、Oracle バージョン 12c における LOB の CDC がサポートされています。LogMinerではサポートされていません。

• Binary Reader は、全ロードおよび継続的レプリケーション (CDC) の両方に対して次の HCC 圧縮タイプをサポートします。• QUERY HIGH• ARCHIVE HIGH• ARCHIVE LOW

QUERY LOW 圧縮タイプは、全ロードの移行のみでサポートされています。API バージョン API Version 2016-01-01

89

Page 97: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドソースとして Oracle を使用する

通常、次のいずれかの状況に該当しない限り、Oracle データベースの移行には Oracle LogMiner を使用します。

• ソース Oracle データベースで複数の移行タスクを実行する必要がある。• ソース Oracle データベース上の変更の量または REDO ログの量が多い。• ワークロードには、LOB 列のみを更新する UPDATE ステートメントが含まれています。この場

合、Binary Reader を使用します。これらの UPDATE ステートメントは、Oracle LogMiner でサポートされていません。

• ソースが Oracle バージョン 11 であり、XMLTYPE および LOB 列で UPDATE ステートメントを実行しています。この場合、Binary Reader を使用する必要があります。これらのステートメントは、OracleLogMiner でサポートされていません。

• Oracle 12c から LOB 列を移行しています。Oracle 12c で LogMiner は LOB 列をサポートしていないため、この場合には Binary Reader を使用します。

Oracle ソースデータベースでの変更データキャプチャ (CDC) の設定全ロードおよび変更データキャプチャ (CDC) または CDC のみのソースエンドポイントとして Oracle を使用する場合は、追加の接続属性を設定します。これらの属性は、LogMiner と Binary Reader のどちらを使用してトランザクションログにアクセスするかを指定します。ソースエンドポイントを作成するときに追加の接続属性を指定します。接続属性の設定が複数ある場合は、空白を追加せずにそれぞれをセミコロンで区切ります。

デフォルトでは LogMiner が使用されるため、その使用を明示的に指定する必要はありません。BinaryReader がトランザクションログにアクセスできるようにするには、以下の追加の接続属性を加えます。

Note

Oracle 用の Amazon RDS の CDC ロードをソースインスタンスとして設定するには、Oracleバージョン 11.2.0.4.v11 以降および 12.1.0.2.v7 でのみ、Binary Reader を使用します。Oracleバージョン 12.2 では、CDC ロード用の LogMiner を使用する必要があります。

useLogMinerReader=N;useBfile=Y;

AWS DMS バージョン 3.3.0 以降では、Oracle ソースデータベースが Oracle 自動ストレージ管理 (ASM)を使用している場合、バイナリリーダーを使用します。さらに、追加の接続属性に、並列スレッド数(parallelASMThreads) および先読みバッファ数 (readAheadBlocks) の有効な設定が含まれていることを確認してください。これらの属性を一緒に設定すると、Oracle ASM を使用した CDC ロードのパフォーマンスを大幅に改善できます。次の例に示す設定は、ほとんどの Oracle ASM 設定で良好な結果を提供します。

useLogMinerReader=N;useBfile=Y;parallelASMThreads=6;readAheadBlocks=150000;

これらの追加の接続属性がサポートする値の完全な範囲の詳細については、AWS DMS のソースとしてOracle を使用する場合の追加の接続属性 (p. 97) の各属性の説明を参照してください。

AWS DMS バージョン 3.3.0 より前では、Oracle ソースデータベースが Oracle 自動ストレージ管理(ASM) を使用している場合、バイナリリーダーを使用します。さらに、追加の接続属性に ASM ユーザー名と ASM サーバーアドレスの設定が含まれていることを確認してください。ソースエンドポイントを作成するとき、Password リクエストパラメータは、Oracle ソースエンドポイントパスワードと OracleASM パスワードの両方のパスワードを指定する必要があります。

次の追加の接続属性形式を使用して、Oracle ASM を使用するサーバーにアクセスします。

useLogMinerReader=N;useBfile=Y;asm_user=asm_username;asm_server=first_RAC_server_ip_address:port_number/+ASM;

API バージョン API Version 2016-01-0190

Page 98: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドソースとして Oracle を使用する

ソースエンドポイントの Password リクエストパラメータに、Oracle ユーザーパスワードと ASM パスワードの両方をカンマで区切って含める必要があります。

oracle_user_password,asm_user_password

また、Oracle ASM を使用した CDC ロードのパフォーマンスは、選択した他の設定によって異なります。これらの設定には、DMS の追加の接続属性と Oracle ソースを設定するための SQL 設定が含まれます。Oracle ソースエンドポイントで Oracle ASM を使用する方法の詳細については、「AWS DMS を使用して Oracle ASM から AWS に移行する方法」を参照してください。

Note

AWS DMS バージョン 3.3.0 以降を使用する場合、前の段落で以前のバージョンについて説明した追加の設定を行う必要はありません。

Oracle ソースデータベースとしての CDC の制限

Oracle データベースを AWS DMS 変更データキャプチャのソースとして使用する場合は、以下の制限が適用されます。

• AWS DMS では、テーブルメタデータや OBJECT_ID 値の変更など Oracle DBMS_REDEFINITION パッケージにより生じた変更がキャプチャされません。

• AWS DMS では、BFILE を使用する際、オーバーフローセグメントがあるインデックスで整理されるテーブルは、CDC モードでサポートされません。たとえば、LogMiner を使用しないで REDO ログにアクセスする場合などです。

AWS DMS のソースとして自己管理型 Oracle データベースを使用する自己管理型データベースは、自分で構成および制御するデータベースで、ローカルのオンプレミスデータベースインスタンスまたは Amazon EC2 上のデータベースのどちらかです。AWS DMS で自己管理型Oracle データベースを使用する場合にセットアップする必要がある権限と設定を以下に示します。

AWS DMS の自己管理型 Oracle ソースで必要なユーザーアカウント権限

Oracle データベースを AWS DMS タスクでソースとして使用するには、AWS DMS Oracle データベース定義で指定されたユーザーに Oracle データベースにおける次の権限が付与されている必要があります。権限を付与する場合、オブジェクトのシノニムではなく、オブジェクトの実際の名前を使用します。たとえば、V_$OBJECT を下線を含めて使用し、下線のない V$OBJECT は使用しません。

GRANT SELECT ANY TRANSACTION to dms_userGRANT SELECT on V_$ARCHIVED_LOG to dms_userGRANT SELECT on V_$LOG to dms_userGRANT SELECT on V_$LOGFILE to dms_userGRANT SELECT on V_$DATABASE to dms_userGRANT SELECT on V_$THREAD to dms_userGRANT SELECT on V_$PARAMETER to dms_userGRANT SELECT on V_$NLS_PARAMETERS to dms_userGRANT SELECT on V_$TIMEZONE_NAMES to dms_userGRANT SELECT on V_$TRANSACTION to dms_userGRANT SELECT on ALL_INDEXES to dms_userGRANT SELECT on ALL_OBJECTS to dms_user

API バージョン API Version 2016-01-0191

Page 99: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドソースとして Oracle を使用する

GRANT SELECT on DBA_OBJECTS to dms_user (required if the Oracle version is earlier than 11.2.0.3)GRANT SELECT on ALL_TABLES to dms_userGRANT SELECT on ALL_USERS to dms_userGRANT SELECT on ALL_CATALOG to dms_userGRANT SELECT on ALL_CONSTRAINTS to dms_userGRANT SELECT on ALL_CONS_COLUMNS to dms_userGRANT SELECT on ALL_TAB_COLS to dms_userGRANT SELECT on ALL_IND_COLUMNS to dms_userGRANT SELECT on ALL_LOG_GROUPS to dms_userGRANT SELECT on SYS.DBA_REGISTRY to dms_userGRANT SELECT on SYS.OBJ$ to dms_userGRANT SELECT on DBA_TABLESPACES to dms_userGRANT SELECT on ALL_TAB_PARTITIONS to dms_userGRANT SELECT on ALL_ENCRYPTED_COLUMNS to dms_userGRANT SELECT on V_$LOGMNR_LOGS to dms_userGRANT SELECT on V_$LOGMNR_CONTENTS to dms_userGRANT SELECT on V_$STANDBY_LOG to dms_user

継続的なレプリケーション (CDC) を使用する場合は、以下の追加のアクセス権限が必要です。

• AWS DMS で CDC を使用して 11g と 12c 両方の Oracle LogMiner REDO ログに追加する場合は、以下のアクセス権限が必要です。

Grant EXECUTE ON dbms_logmnr TO dms_user;

• AWS DMS で CDC を使用して 12c のみの Oracle LogMiner REDO ログに追加する場合は、以下のアクセス権限が必要です。

Grant LOGMINING TO dms_user;

以下に示す追加機能を使用する場合は、特定の追加のアクセス許可が必要です。

• ビューが公開されている場合、ALL_VIEWS での SELECT を dms_user に付与します。• レプリケーションタスクでパターンを使用してテーブル名とマッチングする場合、SELECT ANY

TABLE を付与します。• レプリケーションタスクでテーブルリストを指定した場合、リスト内の各テーブルでの SELECT を付与

します。• サプリメンタルロギングを追加する場合、ALTER ANY TABLE を付与します。• サプリメンタルロギングを追加し、特定のテーブルリストを使用する場合、リスト内のテーブルごとに

ALTER を付与します。• Oracle RAC から移行する場合、gv_$ や v_$ といったプレフィックスを持つマテリアライズドビューに

対する SELECT アクセス権限を付与します。

AWS DMS の自己管理型 Oracle ソースを設定する自己管理型 Oracle データベースを AWS DMS のソースとして使用する前に、いくつかのタスクを実行する必要があります。

• Oracle アカウントアクセスを提供する – AWS DMS の Oracle ユーザーアカウントを指定します。ユーザーアカウントには、前のセクションで指定されているように、Oracle データベースでの読み取り/書き込み権限が必要です。

API バージョン API Version 2016-01-0192

Page 100: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドソースとして Oracle を使用する

• ARCHIVELOG モードがオンであることを確認する – Oracle は、ARCHIVELOG モードとNOARCHIVELOG モードの 2 つのモードで実行できます。AWS DMS で Oracle を使用する場合は、ソースデータベースが ARCHIVELOG モードになっている必要があります。

• サプリメンタルロギングのセットアップ – CDC タスクまたは全ロードと CDC タスクでソースを使用する予定の場合、サプリメンタルロギングをセットアップしてレプリケーションの変更をキャプチャする必要があります。

Oracle のサプリメンタルロギング作成を有効にするには、2 つのステップがあります。まず、データベースレベルのサプリメンタルロギングを有効にする必要があります。これにより、クラスター化されたテーブルやインデックスで整理されたテーブルなど、さまざまなテーブル構造をサポートするのに必要な最小限の情報が LogMiner に確保されます。次に、移行するテーブルごとにテーブルレベルのサプリメンタルロギングを有効にする必要があります。

データベースレベルのサプリメンタルロギングを有効にするには

1. 次のクエリを実行し、データベースレベルでのサプリメンタルロギングがすでに有効になっているかどうかを調べます。返される結果は、GE to 9.0.0 です。

SELECT name, value, description FROM v$parameter WHERE name = 'compatible';

2. 次のクエリを実行します。返される結果は、YES または IMPLICIT です。

SELECT supplemental_log_data_min FROM v$database;

3. 次のクエリを実行し、データベースレベルのサプリメンタルロギングを有効にします。

ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;

テーブルレベルのサプリメンタルロギング作成を有効にするには、2 つの方法があります。最初の方法では、データベースユーザーアカウントが移行するすべてのテーブルで ALTER TABLE 権限を持っている場合、以下で説明するように追加の接続パラメータ addSupplementalLogging を使用できます。もう 1つの方法では、移行時に各テーブルに以下のステップを使用できます。

テーブルレベルのサプリメンタルロギングを有効にするには

1. テーブルにプライマリキーがある場合、次のコマンドを実行してテーブルに PRIMARY KEY サプリメンタルロギングを追加します。

ALTER TABLE table_name ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;

2. プライマリキーが存在せず、テーブルに一意のインデックスが複数存在する場合、AWS DMS はインデックス名をアルファベット順に並べたときの最初の一意のインデックスを使用します。

前述のように、そのインデックスの列にサプリメンタルロググループを作成します。3. プライマリキーも一意のインデックスも存在しない場合、サプリメンタルロギングをすべての列に追

加する必要があります。次のクエリを実行し、サプリメンタルロギングをすべての列に追加します。

ALTER TABLE table_name ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;

場合によっては、ターゲットテーブルのプライマリキーまたは一意のインデックスは、ソーステーブルのプライマリキーまたは一意のインデックスと異なります。その場合、ターゲットテーブルのプライマリキーまたは一意のインデックスを構成するソーステーブル列でサプリメンタルロギングを追加します。

API バージョン API Version 2016-01-0193

Page 101: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドソースとして Oracle を使用する

ターゲットテーブルのプライマリキーを変更する場合、選択されたインデックスの列にサプリメンタルロギングを追加します。元のプライマリキーの列や一意のインデックスにはこれを追加しないでください。

フィルタがテーブルに定義されている場合など、必要に応じて追加のロギングを追加します。テーブルに一意のインデックスやプライマリキーがある場合、フィルタに関係する列がプライマリキーまたは一意のインデックスの列とは異なるときは、その各列にサプリメンタルロギングを追加します。ただし、ALLCOLUMNS サプリメンタルロギングがテーブルに追加されている場合、追加のロギングを追加する必要はありません。

ALTER TABLE table_name ADD SUPPLEMENTAL LOG GROUP group_name (column_list) ALWAYS;

Amazon が管理する Oracle データベースを AWS DMS のソースとして使用するAmazon が管理するデータベースは、Amazon RDS、Amazon Aurora、Amazon S3 などの Amazon のサービス上にあるデータベースです。AWS DMS で Amazon が管理する Oracle データベースを使用するときにセットアップする必要がある権限と設定を以下に示します。

AWS DMS の Amazon が管理する Oracle ソースで必要なユーザーアカウント権限

Amazon RDS で Oracle データベースにおける権限を付与するには、ストアドプロシージャrdsadmin.rdsadmin_util.grant_sys_object を使用します。詳細については、「SYS オブジェクトへの SELECT または EXECUTE 権限の付与」を参照してください。

AWS DMS ユーザーアカウントに、Oracle ソースエンドポイントにアクセスするための以下の権限を付与します。

GRANT SELECT ANY TABLE to dms_user;GRANT SELECT on ALL_VIEWS to dms_user;GRANT SELECT ANY TRANSACTION to dms_user;GRANT SELECT on DBA_TABLESPACES to dms_user;GRANT SELECT on ALL_TAB_PARTITIONS to dms_user;GRANT SELECT on ALL_INDEXES to dms_user;GRANT SELECT on ALL_OBJECTS to dms_user;GRANT SELECT on ALL_TABLES to dms_user;GRANT SELECT on ALL_USERS to dms_user;GRANT SELECT on ALL_CATALOG to dms_user;GRANT SELECT on ALL_CONSTRAINTS to dms_user;GRANT SELECT on ALL_CONS_COLUMNS to dms_user;GRANT SELECT on ALL_TAB_COLS to dms_user;GRANT SELECT on ALL_IND_COLUMNS to dms_user;GRANT SELECT on ALL_LOG_GROUPS to dms_user;GRANT LOGMINING TO dms_user;

さらに、次を実行します。

exec rdsadmin.rdsadmin_util.grant_sys_object('V_$ARCHIVED_LOG','dms_user','SELECT');exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOG','dms_user','SELECT');exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGFILE','dms_user','SELECT');exec rdsadmin.rdsadmin_util.grant_sys_object('V_$DATABASE','dms_user','SELECT');exec rdsadmin.rdsadmin_util.grant_sys_object('V_$THREAD','dms_user','SELECT');exec rdsadmin.rdsadmin_util.grant_sys_object('V_$PARAMETER','dms_user','SELECT');exec rdsadmin.rdsadmin_util.grant_sys_object('V_$NLS_PARAMETERS','dms_user','SELECT');exec rdsadmin.rdsadmin_util.grant_sys_object('V_$TIMEZONE_NAMES','dms_user','SELECT');exec rdsadmin.rdsadmin_util.grant_sys_object('V_$TRANSACTION','dms_user','SELECT');exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_REGISTRY','dms_user','SELECT');exec rdsadmin.rdsadmin_util.grant_sys_object('OBJ$','dms_user','SELECT');

API バージョン API Version 2016-01-0194

Page 102: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドソースとして Oracle を使用する

exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_ENCRYPTED_COLUMNS','dms_user','SELECT');exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGMNR_LOGS','dms_user','SELECT');exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGMNR_CONTENTS','dms_user','SELECT');exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_LOGMNR','dms_user','EXECUTE');

AWS DMS の Amazon が管理する Oracle ソースを設定する

Amazon が管理する Oracle データベースを AWS DMS のソースとして使用する前に、いくつかのタスクを実行する必要があります。

• Oracle アカウントアクセスを提供 – AWS DMS の Oracle ユーザーアカウントを指定します。ユーザーアカウントには、前のセクションで指定されているように、Oracle データベースでの読み取り/書き込み権限が必要です。

• Amazon RDS データベースのバックアップ保持期間を 1 日以上に設定 – バックアップ保持期間を設定すると、データベースが ARCHIVELOG モードで実行されます。バックアップ保持期間の設定の詳細については、『 Amazon RDS ユーザーガイド』の「バックアップの使用」を参照してください。

• アーカイブ保持の設定 – 以下を実行し、Oracle データベースインスタンスのアーカイブされた REDOログを保持します。このコマンドを実行すると、AWS DMS が LogMiner を使用してログ情報を取得できるようになります。移行期間中、アーカイブされた REDO ログのための十分なストレージがあることを確認します。

次の例では、ログは 24 時間保持されます。

exec rdsadmin.rdsadmin_util.set_configuration('archivelog retention hours',24);

• サプリメンタルロギングのセットアップ – CDC タスクまたは全ロードと CDC タスクでソースを使用する予定の場合、サプリメンタルロギングをセットアップしてレプリケーションの変更をキャプチャします。

Oracle のサプリメンタルロギング作成を有効にするには、2 つのステップがあります。まず、データベースレベルのサプリメンタルロギングを有効にする必要があります。これにより、クラスター化されたテーブルやインデックスで整理されたテーブルなど、さまざまなテーブル構造をサポートするのに必要な最小限の情報が LogMiner に確保されます。次に、移行するテーブルごとにテーブルレベルのサプリメンタルロギングを有効にする必要があります。

データベースレベルのサプリメンタルロギングを有効にするには

• 次のクエリを実行し、データベースレベルのサプリメンタルロギングを有効にします。

exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD');

テーブルレベルのサプリメンタルロギングを有効にするには

• 次のコマンドを実行し、プライマリキーを持つテーブルの PRIMARY KEY ロギングを有効にします。

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

プライマリキーを持たないテーブルの場合、次のコマンドを使用してサプリメンタルロギングを追加します。

alter table table_name add supplemental log data (ALL) columns;

API バージョン API Version 2016-01-0195

Page 103: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドソースとして Oracle を使用する

プライマリキーのないテーブルを作成する場合、create ステートメントにサプリメンタルロギング句を含めるか、テーブルを変更してサプリメンタルロギングを追加する必要があります。次のコマンドは、テーブルを作成し、サプリメンタルロギングを追加します。

create table table_name (column_list, supplemental log data (ALL) columns);

テーブルを作成し、後でプライマリキーを追加した場合、テーブルにサプリメンタルロギングを追加する必要があります。次のコマンドを使用してテーブルにサプリメンタルロギングを追加します。

alter table table_name add supplemental log data (PRIMARY KEY) columns;

AWS DMS における Amazon RDS for Oracle ソースの変更データキャプチャ(CDC) を設定するAWS DMS を設定して、CDC のソースとして Amazon RDS for Oracle インスタンスを使用することができます。Amazon RDS for Oracle ソースで Oracle Binary Reader を使用します (Oracle バージョン11.2.0.4.v11 以降、および 12.1.0.2.v7 以降)。

Amazon RDS for Oracle ソースエンドポイントを作成する場合は、次の追加の接続属性を含めます。

useLogminerReader=N;useBfile=Y;accessAlternateDirectly=false;useAlternateFolderForOnline=true;oraclePathPrefix=/rdsdbdata/db/ORCL_A/;usePathPrefix=/rdsdbdata/log/;replacePathPrefix=true

Note

複数の属性設定には、セミコロン区切り文字 (;) の後に空白を含めることはできません。

Oracle を AWS DMS のソースとして使用する場合の制限Oracle データベースを AWS DMS のソースとして使用する場合は、以下の制限が適用されます。

• AWS DMS は、Oracle 分散トランザクションからの進行中の変更 (CDC) の移行をサポートしていません。

• Oracle LogMiner と一緒に使用する場合、AWS DMS では、Oracle の透過的なデータ暗号化 (TDE) テーブルスペース暗号化と AWS Key Management Service (AWS KMS) 暗号化がサポートされます。他の暗号化形式はどれもサポートされていません。

• LOB のあるテーブルで CDC を使用するにはプライマリキーが必要です。• AWS DMS では、Oracle バージョン 11 以上の rename table table_name to new_table_name

構文がサポートされています。• AWS DMS では、ADD、DROP、EXCHANGE、TRUNCATE のようなデータ定義言語 (DDL) オペレー

ションなど、パーティションまたはサブパーティションオペレーションの結果生じたデータの変更がレプリケートされません。このような変更をレプリケートするには、レプリケートするテーブルを再ロードします。AWS DMS は、その後のデータ変更を新たに追加されたパーティションにレプリケートします。テーブルを再ロードする必要はありません。ただし、パーティション内の古いデータレコードでUPDATE オペレーションを実行すると失敗し、0 rows affected 警告が生成されます。

• DDL ステートメント ALTER TABLE ADD column data_type DEFAULT expression は、デフォルト値をターゲットにレプリケートしません。ターゲットの新しい列は NULL に設定されます。新しい列で NULL が許容される場合、Oracle は DDL 自体を記録する前にすべてのテーブル行を更新します。その結果、AWS DMS ではカウンターへの変更がキャプチャされますが、ターゲットは更新されません。新しい列は NULL に設定されるため、ターゲットテーブルにプライマリキーまたは一意のインデックスがない場合、その後の更新により 0 rows affected 警告が生成されます。

API バージョン API Version 2016-01-0196

Page 104: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドソースとして Oracle を使用する

• AWS DMS は、ソースで CREATE TABLE AS ステートメントを実行した結果生じるターゲット上のすべてのデータ変更をサポートしています。

Note

ソースで CREATE TABLE AS ステートメントを実行した結果生じるターゲット上のすべてのデータ変更は、AWS DMS バージョン 3.1.3 以降でサポートされています。以前のバージョンでは、CREATE TABLE AS はターゲット上に新しいテーブルを作成しましたが、そのテーブルにデータは移行されません。

• サイズ制限のある LOB モードが有効な場合、AWS DMS では Oracle ソース上の空の LOB をターゲットの NULL 値としてレプリケートします。

• AWS DMS によって CDC が開始されると、タイムスタンプが Oracle システム変更番号 (SCN) にマッピングされます。Oracle ではデフォルトで、タイムスタンプと SCN のマッピングは 5 日間、保持されます。指定したタイムスタンプが古すぎる (保持期間が 5 日間より長い) 場合、Oracle ではエラーが生成されます。詳細については、Oracle のドキュメントを参照してください。

• AWS DMS では、ASM プロキシを使用した Oracle ソースへの接続がサポートされていません。• AWS DMS では仮想列がサポートされていません。• マルチテナント環境で、AWS DMS はコンテナ (CDB) 内のプラグイン可能なデータベース (PDB) に接

続できます。この設定では、変更データキャプチャ (CDC) に Binary Reader を使用する必要があります。PDB では LogMiner はサポートされていません。

AWS DMS のソースとして Oracle を使用する場合の追加の接続属性追加の接続属性を使用して Oracle ソースを設定できます。これらの設定は、ソースエンドポイントを作成するときに指定します。接続属性の設定が複数ある場合は、空白を追加せずにそれぞれをセミコロンで区切ります。

次の表に、AWS DMS のソースとして Oracle データベースを設定するために使用できる追加の接続属性を示します。

名前 説明

addSupplementalLogging Oracle データベースにテーブルレベルのサプリメンタルロギングをセットアップするには、この属性を設定します。この属性により、移行タスクで選択されたすべてのテーブルでPRIMARY KEY サプリメンタルロギングが有効になります。

デフォルト値: N

有効な値: Y/N

例: addSupplementalLogging=Y;

Note

このオプションを使用する場合でも、前述のようにデータベースレベルサプリメンタルロギングを有効にする必要があります。

additionalArchivedLogDestId この属性を、プライマリ/スタンバイセットアップでarchivedLogDestId と同時に設定します。この属性はフェイルオーバーの場合に役立ちます。この場合、AWS DMS は変更を読み取るためにアーカイブ REDO ログを取得する取得元を知る必要があります。前のプライマリインスタンスが

API バージョン API Version 2016-01-0197

Page 105: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドソースとして Oracle を使用する

名前 説明フェイルオーバー後にスタンバイインスタンスになったためにこの必要性が生じます。

useLogminerReader LogMiner ユーティリティを使用して変更データをキャプチャするには、この属性を Y に設定します (デフォルト)。AWSDMS をバイナリファイルとして REDO ログにアクセスできるようにする場合は、このオプションを N に設定します。このオプションに設定すると、useBfile=Y という設定も追加されます。この設定および Oracle 自動ストレージ管理 (ASM) の使用の詳細については、変更データキャプチャ(CDC) での Oracle LogMiner または Oracle Binary Reader の使用 (p. 89) を参照してください

デフォルト値: Y

有効な値: Y/N

例: useLogminerReader=N;useBfile=Y;

useBfile Binary Reader ユーティリティを使用して変更データをキャプチャするには、この属性を Y に設定します。この属性をY に設定するため、useLogminerReader を N に設定します。また、Amazon RDS for Oracle で Binary Reader をソースとして使用するには、追加の属性を設定します。この設定および Oracle 自動ストレージ管理 (ASM) の使用の詳細については、変更データキャプチャ (CDC) での Oracle LogMinerまたは Oracle Binary Reader の使用 (p. 89) を参照してください

デフォルト値: N

有効な値: Y/N

例: useLogminerReader=N;useBfile=Y;

parallelASMThreads この属性を設定して、DMS が Oracle 自動ストレージ管理(ASM) を使用して変更データキャプチャ (CDC) ロードを実行するように設定するスレッドの数を変更します。2 (デフォルト) から 8 (最大) までの整数値を指定できます。この属性はreadAheadBlocks 属性とともに使用します。詳細については、「 AWS DMS における Amazon RDS for Oracle ソースの変更データキャプチャ (CDC) を設定する (p. 96)」を参照してください。

デフォルト値: 2

有効な値: 2~8 の整数

例:parallelASMThreads=6;readAheadBlocks=150000;

API バージョン API Version 2016-01-0198

Page 106: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドソースとして Oracle を使用する

名前 説明

readAheadBlocks この属性を設定して、DMS が Oracle 自動ストレージ管理(ASM) を使用して変更データキャプチャ (CDC) ロードを実行するように設定する先読みブロック数を変更します。1,000(デフォルト) から 200,000 (最大) までの整数値を指定できます。この属性は readAheadBlocks 属性とともに使用します。詳細については、「 AWS DMS における Amazon RDSfor Oracle ソースの変更データキャプチャ (CDC) を設定する (p. 96)」を参照してください。

デフォルト値: 1000

有効な値: 1,000~200,000 の整数

例:parallelASMThreads=6;readAheadBlocks=150000;

accessAlternateDirectly Amazon RDS for Oracle をソースとして Binary Reader で変更データをキャプチャするには、この属性を false に設定します。この設定は、DMS インスタンスに対して、指定されたパスプレフィックス置換を使用してファイルへの直接アクセスで REDO ログにアクセスしないように指示します。詳細については、「 AWS DMS における Amazon RDS forOracle ソースの変更データキャプチャ (CDC) を設定する (p. 96)」を参照してください。

デフォルト値: true

有効な値: true/false

例:useLogminerReader=N;useBfile=Y;accessAlternateDirectly=false;

useAlternateFolderForOnline Amazon RDS for Oracle をソースとして Binary Reader で変更データをキャプチャするには、この属性を true に設定します。この設定は、DMS インスタンスに対して、指定されたプレフィックス置換を使用してすべてのオンライン REDO ログにアクセスするように指示します。詳細については、「 AWSDMS における Amazon RDS for Oracle ソースの変更データキャプチャ (CDC) を設定する (p. 96)」を参照してください。

デフォルト値: false

有効な値: true/false

例:useLogminerReader=N;useBfile=Y;accessAlternateDirectly=false;useAlternateFolderForOnline=true;

API バージョン API Version 2016-01-0199

Page 107: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドソースとして Oracle を使用する

名前 説明

oraclePathPrefix Amazon RDS for Oracle をソースとして Binary Reader で変更データをキャプチャするには、この文字列属性を必要な値に設定します。この値は、REDO ログにアクセスするために使用されるデフォルトの Oracle ルートを指定します。詳細については、「 AWS DMS における Amazon RDS forOracle ソースの変更データキャプチャ (CDC) を設定する (p. 96)」を参照してください。

デフォルト値: なし

有効な値: /rdsdbdata/db/ORCL_A/

例:useLogminerReader=N;useBfile=Y;accessAlternateDirectly=false;useAlternateFolderForOnline=true;oraclePathPrefix=/rdsdbdata/db/ORCL_A/;

usePathPrefix Amazon RDS for Oracle をソースとして Binary Reader で変更データをキャプチャするには、この文字列属性を必要な値に設定します。この値は、デフォルトの Oracle ルートを置換して REDO ログにアクセスするために使用されるパスプレフィックスを指定します。詳細については、「 AWS DMSにおける Amazon RDS for Oracle ソースの変更データキャプチャ (CDC) を設定する (p. 96)」を参照してください。

デフォルト値: なし

有効な値: /rdsdbdata/log/

例:useLogminerReader=N;useBfile=Y;accessAlternateDirectly=false;useAlternateFolderForOnline=true;oraclePathPrefix=/rdsdbdata/db/ORCL_A/; usePathPrefix=/rdsdbdata/log/;

replacePathPrefix Amazon RDS for Oracle をソースとして Binary Reader で変更データをキャプチャするには、この属性を true に設定します。この設定は、DMS インスタンスに対して、デフォルトのOracle ルートを usePathPrefix の設定に置換して REDOログにアクセスするように指示します。詳細については、「AWS DMS における Amazon RDS for Oracle ソースの変更データキャプチャ (CDC) を設定する (p. 96)」を参照してください。

デフォルト値: false

有効な値: true/false

例:useLogminerReader=N;useBfile=Y;accessAlternateDirectly=false;useAlternateFolderForOnline=true;oraclePathPrefix=/rdsdbdata/db/ORCL_A/; usePathPrefix=/rdsdbdata/log/;replacePathPrefix=true;

API バージョン API Version 2016-01-01100

Page 108: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドソースとして Oracle を使用する

名前 説明

retryInterval システムがクエリを再送するまで待機する時間の秒数を指定します。

デフォルト値: 5

有効な値: 1 以降の数値

例: retryInterval=6;

archivedLogDestId アーカイブされた REDO ログの宛先を指定します。値は、$archived_log テーブル内の DEST_ID 値と同じにする必要があります。ログの宛先を (DEST_ID) を複数使用する場合、アーカイブされた REDO ログの場所の識別子を使用することをお勧めします。これにより、最初から適切なログにアクセスされるため、パフォーマンスが向上します。

デフォルト値: 0

有効な値: 数値

例: archivedLogDestId=1;

archivedLogsOnly このフィールドが Y に設定されている場合、AWS DMS はアーカイブされた REDO ログにのみアクセスします。アーカイブされた REDO ログが Oracle ASM のみに保存されている場合、AWS DMS ユーザーアカウントに ASM 権限を付与する必要があります。

デフォルト値: N

有効な値: Y/N

例: archivedLogsOnly=Y;

numberDataTypeScale 数値のスケールを指定します。最大 38 のスケールを選択するか、FLOAT を選択できます。デフォルトでは、NUMBERデータ型が精度 38、スケール 10 に変換されます。

デフォルト値: 10

有効な値: -1〜38 (FLOAT の場合は -1)

例: numberDataTypeScale=12

afterConnectScript AWS DMS がエンドポイントに接続した直後に実行するスクリプトを指定します。

有効な値: セミコロンで区切った任意の SQL ステートメント。すべての SQL ステートメントがサポートされているわけではありません。

例: afterConnectScript=ALTER SESSION SETCURRENT_SCHEMA = system;

API バージョン API Version 2016-01-01101

Page 109: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドソースとして Oracle を使用する

名前 説明

failTasksOnLobTruncation true に設定されると、LOB 列の実際のサイズが指定されたLobMaxSize よりも大きい場合、この属性によりタスクは失敗します。

タスクが制限付き LOB モードに設定され、このオプションがtrue に設定されている場合、LOB データを切り捨てるのではなくタスクが失敗します。

デフォルト値: false

有効な値: ブール値

例: failTasksOnLobTruncation=true;

readTableSpaceName true に設定すると、この属性はテーブルスペースのレプリケーションをサポートします。

デフォルト値: false

有効な値: ブール値

例: readTableSpaceName=true;

standbyDelayTime この属性を使用して、スタンバイ同期の遅延時間を分単位で指定します。

AWS DMS バージョン 2.3.0 以降では、継続的な変更をレプリケートするためのソースとして Active Data Guard スタンバイインスタンスを使用する Oracle CDC タスクを作成することができます。これにより、運用中のアクティブなデータベースに接続する必要がなくなります。

デフォルト値: 0

有効な値: 数値

例: standbyDelayTime=1;

Oracle のソースデータ型AWS DMS の Oracle エンドポイントでは、Oracle のほとんどのデータ型がサポートされています。次の表に、AWS DMS を使用する場合にサポートされる Oracle のソースデータ型と、AWS DMS のデータ型へのデフォルトマッピングを示します。

ターゲットにマッピングされるデータ型を表示する方法については、使用しているターゲットエンドポイントのセクションを参照してください。

AWS DMS のデータ型の詳細については、「AWS Database Migration Service のデータ型 (p. 394)」を参照してください。

Oracle のデータ型 AWS DMS データ型

BINARY_FLOAT REAL4

BINARY_DOUBLE REAL8

API バージョン API Version 2016-01-01102

Page 110: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドソースとして Oracle を使用する

Oracle のデータ型 AWS DMS データ型

BINARY BYTES

FLOAT (P) 精度が 24 以下の場合、REAL4 を使用します。

精度が 24 より高い場合、REAL8 を使用します。

NUMBER (P,S) スケールが 0 未満の場合、REAL8 を使用します。

Oracle のソースデータベース設定の「Expose numberas」プロパティに従ったNUMBER。

スケールが 0 の場合

• 精度が 0 の場合、REAL8 を使用します。• 精度が 2 以上の場合、INT1 を使用します。• 精度が 2 より大きく 4 以下の場合、INT2 を使用します。• 精度が 4 より大きく 9 以下の場合、INT4 を使用します。• 精度が 9 より大きい場合、NUMERIC を使用します。• 精度がスケール以上の場合、NUMERIC を使用します。

他のいずれの場合も、REAL8 を使用します。

DATE DATETIME

INTERVAL_YEAR TOMONTH

STRING (間隔 year_to_month を指定)

INTERVAL_DAY TOSECOND

STRING (間隔 day_to_second を指定)

TIME DATETIME

TIMESTAMP DATETIME

TIMESTAMP WITH TIMEZONE

STRING (timestamp_with_timezone を指定)

TIMESTAMP WITH LOCALTIME ZONE

STRING (timestamp_with_local_ timezone を指定)

CHAR STRING

VARCHAR2 STRING

NCHAR WSTRING

NVARCHAR2 WSTRING

RAW BYTES

REAL REAL8

BLOB BLOB

AWS DMS でこのデータ型を使用する場合は、特定のタスク用に BLOBデータ型の使用を有効にする必要があります。AWS DMS では、プライマリキーを含むテーブルでのみ BLOB データ型がサポートされます。

API バージョン API Version 2016-01-01103

Page 111: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドソースとして Oracle を使用する

Oracle のデータ型 AWS DMS データ型

CLOB CLOB

AWS DMS でこのデータ型を使用する場合は、特定のタスク用に CLOBデータ型の使用を有効にする必要があります。変更データキャプチャ(CDC) の実行中、AWS DMS ではプライマリキーを含むテーブルでのみCLOB データ型がサポートされます。

NCLOB NCLOB

AWS DMS でこのデータ型を使用する場合は、特定のタスク用にNCLOB データ型の使用を有効にする必要があります。CDC の実行中、AWS DMS ではプライマリキーを含むテーブルでのみ NCLOB データ型がサポートされます。

LONG CLOB

LONG データ型は、最適化バッチ適用モード (TurboStream CDC モード) ではサポートされません。AWS DMS でこのデータ型を使用する場合は、特定のタスク用に LOB の使用を有効にする必要があります。CDC の実行中、AWS DMS ではプライマリキーを持つテーブルでのみ LOB データ型がサポートされます。

LONG RAW BLOB

LONG RAW データ型は、最適化バッチ適用モード (TurboStream CDCモード) ではサポートされません。AWS DMS でこのデータ型を使用する場合は、特定のタスク用に LOB の使用を有効にする必要があります。CDC の実行中、AWS DMS ではプライマリキーを持つテーブルでのみ LOB データ型がサポートされます。

XMLTYPE CLOB

XMLTYPE データ型のサポートには、(Oracle Instant Client ではなく) フル Oracle クライアントが必要です。ターゲット列が CLOB の場合、フル LOB モードと制限付き LOB モードの両方がサポートされます (ターゲットによって異なります)。

以下のデータ型の列とともにソースとして使用されている Oracle テーブルはサポートされておらず、レプリケートすることができません。これらのデータ型の列をレプリケートすると NULL 列が発生します。

• BFILE• ROWID• REF• UROWID• NESTED TABLE• ユーザー定義のデータ型• ANYDATA

Note

仮想列はサポートされていません。

API バージョン API Version 2016-01-01104

Page 112: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドSQL Server をソースとして使用する

Microsoft SQL Server データベースを AWS DMS のソースとして使用するAWS DMS (AWS DMS) を使用して、1 つ以上の Microsoft SQL Server データベースからデータを移行できます。SQL Server データベースをソースとして使用すると、別の SQL Server データベースまたはサポートされている他のデータベースのいずれかにデータを移行できます。

AWS DMS では、ソースとして、Microsoft SQL Server バージョン2005、2008、2008R2、2012、2014、2016、2017 のオンプレミスおよび Amazon EC2 インスタンスデータベースがサポートされます。Enterprise、Standard、Workgroup、および Developer エディションがサポートされます。Web および Express エディションは AWS DMS ではサポートされていません。

AWS DMS では、ソースとして、SQL Server バージョン 2008R2、2012、2014、2016、2017 のAmazon RDS DB インスタンスデータベースがサポートされます。Enterprise および Standard エディションがサポートされています。CDC は Enterprise Edition のすべてのバージョンでサポートされています。CDC は、Standard Edition バージョン 2016 SP1 以降でのみサポートされています。Web、Workgroup、Developer、Express エディションは AWS DMS ではサポートされていません。

SQL Server データベースは、ネットワーク内のどのコンピュータにもインストールできます。また、そのデータベースを AWS DMS で使用するには、選択したタスクのタイプに応じてソースデータベースに対する適切なアクセス権限を持つ SQL Server アカウントが必要です。

AWS DMS は、SQL Server の名前付きインスタンスからのデータ移行をサポートしています。ソースエンドポイントを作成するとき、サーバー名では次の表記を使用できます。

IPAddress\InstanceName

たとえば、正しいソースエンドポイントサーバー名を以下に示します。ここでは、名前の最初の部分はサーバーの IP アドレス、2 番目の部分は SQL Server インスタンス名 (この例では SQLTest) です。

10.0.0.25\SQLTest

SSL を使用して、SQL Server エンドポイントとレプリケーションインスタンスとの接続を暗号化できます。SQL Server エンドポイントで SSL を使用する方法の詳細については、「AWS Database MigrationService で SSL を使用する (p. 49)」を参照してください。

ソースとして使用する SQL Server データベースから変更をキャプチャするには、データベースは完全バックアップ用に設定され、Enterprise、Developer、Standard のいずれかのエディションであることが必要です。

SQL Server ソースデータベースと AWS DMS を使用する方法の詳細については、以下を参照してください。

トピック• SQL Server を AWS DMS のソースとして使用する場合の制限 (p. 106)• SQL Server ソースから継続的なレプリケーション (CDC) を使用する (p. 106)• サポートされている圧縮方法 (p. 110)• SQL Server AlwaysOn 可用性グループの使用 (p. 111)• SQL Server データベースの AWS DMS のレプリケーションソースとしての設定 (p. 111)• AWS DMS のソースとして SQL Server を使用する場合の追加の接続属性 (p. 111)• SQL Server のソースデータ型 (p. 113)

API バージョン API Version 2016-01-01105

Page 113: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドSQL Server をソースとして使用する

SQL Server を AWS DMS のソースとして使用する場合の制限SQL Server データベースを AWS DMS のソースとして使用する場合は、以下の制限が適用されます。

• SQL Server 変更の追跡 (CT) がデータベースで有効になっている場合は、AWS DMS ソースとして SQLServer データベースを使用できません。

• 列のアイデンティティプロパティは、ターゲットデータベース列に移行されません。• バージョン 2.4.x より前の AWS DMS エンジンでは、情報が 8,000 バイトを超える (ヘッダーおよび

マッピング情報を含む) 行への変更は適切に処理されません。この問題は、SQL Server TLOG バッファサイズの制限が原因で発生します。この問題を回避するには、最新の AWS DMS バージョンを使用します。

• SQL Server エンドポイントでは、スパーステーブルの使用はサポートされていません。• Windows 認証はサポートされていません。• SQL Server の計算済みフィールドの変更はレプリケーションされていません。• 一時テーブルはサポートされていません。• SQL Server パーティション切り替えはサポートされていません。• ソースでクラスター化されたインデックスは、ターゲットでクラスター化されていないインデックスと

して作成されます。• WRITETEXT ユーティリティと UPDATETEXT ユーティリティを使用している場合、AWS DMS では

ソースデータベースに適用されたイベントがキャプチャされません。• 次のデータ操作言語 (DML) パターンはサポートされていません。

SELECT * INTO new_table FROM existing_table

• SQL Server をソースとして使用している場合、列レベルの暗号化はサポートされていません。• SQL Server 2008 と 2008 R2 の既知の問題のため、AWS DMS では、ソースとして使用している SQL

Server 2008 あるいは SQL Server 2008 R2 でのサーバーレベルの監査はサポートされていません。たとえば、次のコマンドを実行すると AWS DMS でエラーが発生します。

USE [master]GO ALTER SERVER AUDIT [my_audit_test-20140710] WITH (STATE=on)GO

SQL Server ソースから継続的なレプリケーション (CDC) を使用するオンプレミスまたは Amazon EC2 上の自己管理型 SQL Server データベースや、Amazon RDS 上のAmazon が管理するデータベースに継続的なレプリケーション (変更データキャプチャ、つまり CDC) を使用できます。

AWS DMS では、これらの SQL Server 設定の継続的なレプリケーションがサポートされています。

• オンプレミスまたは Amazon EC2 上のソース SQL Server インスタンスの場合、AWS DMS では SQLServer Enterprise、Standard、および Developer Edition の継続的なレプリケーションがサポートされます。

• Amazon RDS で実行されているソース SQL Server インスタンスの場合、AWS DMS は SQL ServerEnterprise から SQL Server 2016 SP1 で継続的なレプリケーションをサポートしています。このバー

API バージョン API Version 2016-01-01106

Page 114: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドSQL Server をソースとして使用する

ジョン以降では、AWS DMS は SQL Server Enterprise Edition と Standard Edition の両方で CDC をサポートしています。

AWS DMS が継続的なレプリケーションを自動的にセットアップするようにする場合、ソースデータベースへの接続に使用する AWS DMS ユーザーアカウントに sysadmin 固定サーバーロールが必要です。使用するユーザーアカウントに sysadmin ロールを割り当てない場合でも、継続的なレプリケーションを使用できます。そのためには、以下に説明する一連の手順を手動で実行します。

AWS DMS のソースとして SQL Server データベースを使用して継続的なレプリケーションを使用する場合は、次の要件が特別に適用されます。

• SQL Server を完全バックアップ用に設定し、データのレプリケートの開始前にバックアップを実行する必要があります。

• 復旧モデルを [Bulk logged] または [Full] に設定する必要があります。• 複数のディスクへの SQL Server のバックアップはサポートされていません。データベースバックアッ

プを異なるディスク上の複数のファイルに書き込むようにバックアップを定義している場合、AWSDMS ではそのデータを読み取ることができず、AWS DMS タスクは失敗します。

• 自己管理型 SQL Server ソースの場合、DMS CDC タスクで使用されたソースデータベースの SQLServer Replication Publisher 定義は、そのタスクを削除しても削除されない点に注意してください。SQL Server システム管理者がそれらの定義を自己管理型ソースの SQL Server から削除する必要があります。

• CDC 中に、AWS DMS は SQL Server トランザクションログのバックアップを検索して、変更を読み取る必要があります。AWS DMS では、サードパーティーのバックアップソフトウェアを使用して作成された SQL Server トランザクションログのバックアップの使用はサポートされていません。

• 自己管理型 SQL Server ソースの場合、SQL Server は新しく作成されたテーブルの変更を、公開されるまでキャプチャしない点に注意してください。テーブルが SQL Server ソースに追加されると、AWSDMS は公開の作成を管理します。ただし、この処理には数分かかることがあります。この遅延中に新たに作成されたテーブルに行われたオペレーションは、ターゲットにキャプチャまたはレプリケーションされません。

• AWS DMS 変更データキャプチャを行うには、SQL Server で FULLOGGING を有効にする必要があります。SQL Server で FULLLOGGING を有効にするには、MS-REPLICATION または CHANGE DATACAPTURE (CDC) を有効にします。

• SQL Server の tlog は、変更が処理されるまで再利用できません。• CDC オペレーションはメモリ最適化テーブルに対してはサポートされていません。この制限は、この機

能が初めて導入された SQL Server 2014 とそれ以降のバージョンに適用されます。

SQL Server のデータ変更をキャプチャする

自己管理型 SQL Server ソースの場合、AWS DMS は以下を使用します。

• MS-Replication: プライマリキーを持つテーブルの変更をキャプチャします。これは、ソース SQLServer インスタンスユーザーで AWS DMS エンドポイントユーザーに sysadmin 権限を付与することで自動的に設定できます。または、このセクションで説明されているステップに従ってソースを準備し、AWS DMS エンドポイントに sysadmin 以外のユーザーを使用することもできます。

• MS-CDC: プライマリキーを持たないテーブルの変更をキャプチャします。MS-CDC は、すべてのテーブルのデータベースレベルで個別に有効になっている必要があります。

Amazon RDS で実行されている SQL Server ソースの場合、プライマリキーの有無にかかわらず、AWSDMS は MS-CDC を使用してテーブルの変更をキャプチャします。MS-CDC は、このセクションで説明されている Amazon RDS 固有のストアドプロシージャを使用して、すべてのテーブルのデータベースレベルで個別に有効になっている必要があります。

継続的なレプリケーション (CDC) に SQL Server データベースを使用できる方法はいくつかあります。

API バージョン API Version 2016-01-01107

Page 115: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドSQL Server をソースとして使用する

• sysadmin ロールを使用する継続的なレプリケーションをセットアップします(これは、自己管理型 SQLServer ソースにのみ適用されます)。

• sysadmin ロールを使用しない継続的なレプリケーションをセットアップします。(これは、自己管理型SQL Server ソースにのみ適用されます)。

• Amazon RDS for SQL Server DB インスタンスの継続的なレプリケーションをセットアップします。

sysadmin ロールを使用して継続的なレプリケーションをセットアップする

プライマリキーがあるテーブルの場合、AWS DMS はソースで必要なアーティファクトを設定できます。プライマリキーがないテーブルの場合、MS-CDC をセットアップする必要があります。

まず、次のコマンドを実行してデータベースで MS-CDC を有効にします。sysadmin ロールが割り当てられたアカウントを使用します。

use [DBname]EXEC sys.sp_cdc_enable_db

次に、以下のコマンドを実行して各ソーステーブルで MS-CDC を有効にします。

EXECUTE sys.sp_cdc_enable_table @source_schema = N'MySchema', @source_name =N'MyTable', @role_name = NULL;

特定のテーブルの MS-CDC をセットアップする方法の詳細については、 SQL Server のドキュメントを参照してください。

sysadmin ロールを割り当てずに継続的なレプリケーションをセットアップする

ユーザーアカウントが sysadmin 権限を持っている必要がない SQL Server データベースソースに継続的なレプリケーションをセットアップできます。

Note

DMS タスクの実行中にこの手順を実行できます。DMS タスクが停止している場合は、トランザクションログまたは実行中のデータベースバックアップがない場合にのみこの手順を実行できます。これは、SQL Server ではバックアップに LSN 位置を照会するために SYSADMIN 権限 が必要であるためです。

sysadmin ロールを使用せずに継続的なレプリケーションの SQL Server データベースソースをセットアップするには

1. SQL Server Management Studio (SSMS) を使用してパスワード認証する新しい SQL Server アカウントを作成します。この例では、dmstest というアカウントを使用します。

2. SSMS の [User Mappings] セクションで、MSDB および MASTER データベース (公開権限を付与します) を選択し、継続的なレプリケーションを使用するデータベースに DB_OWNER ロールを割り当てます。

3. 新しいアカウントのコンテキストメニュー (右クリック) を開き、[Security] を選択して Connect SQL権限を明示的に付与します。

4. 以下の付与コマンドを実行します。

GRANT SELECT ON FN_DBLOG TO dmstest;GRANT VIEW SERVER STATE TO dmstest;use msdb;GRANT EXECUTE ON MSDB.DBO.SP_STOP_JOB TO dmstest;GRANT EXECUTE ON MSDB.DBO.SP_START_JOB TO dmstest;GRANT SELECT ON MSDB.DBO.BACKUPSET TO dmstest;

API バージョン API Version 2016-01-01108

Page 116: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドSQL Server をソースとして使用する

GRANT SELECT ON MSDB.DBO.BACKUPMEDIAFAMILY TO dmstest;GRANT SELECT ON MSDB.DBO.BACKUPFILE TO dmstest;

5. SSMS で、[Replication] フォルダのコンテキスト (右クリック) メニューを開き、[ConfigureDistribution] を選択します。すべてのデフォルトステップに従って、ディストリビューションのこのSQL Server インスタンスを設定します。ディストリビューションデータベースがデータベースの下に作成されます。

6. 以下の手順を使用してパブリケーションを作成します。7. 作成したユーザーアカウントを使用して、ソースエンドポイントとして SQL Server を持つ新しい

AWS DMS タスクを作成します。

Note

この手順のステップは、プライマリキーを持つテーブルにのみ適用されます。プライマリキーがないテーブルの場合、引き続き MS-CDC を有効にする必要があります。

継続的なレプリケーション用の SQL Server パブリケーションの作成

SQL Server で CDC を使用するには、継続的なレプリケーションに参加しているテーブルごとにパブリケーションを作成する必要があります。

SQL Server の継続的なレプリケーション用にパブリケーションを作成するには

1. SYSADMIN ユーザーアカウントを使用して、SSMS にログインします。2. [レプリケーション] を展開します。3. [Local Publications (ローカルパブリケーション)] のコンテキスト (右クリック) メニューを開きます。4. [New Publication Wizard (新規パブリケーションウィザード)] で、[次へ] を選択します。5. パブリケーションを作成するデータベースを選択します。6. [Transactional publication (トランザクションパブリケーション)] を選択したら、[次へ] を選択しま

す。7. [テーブル] を展開し、PK (と発行するテーブル) を含むテーブルを選択します。[Next (次へ)] を選択し

ます。8. フィルタあるいはスナップショットエージェントを作成する必要がないため、[次]、[次] と選択しま

す。9. [セキュリティ設定]、[Run under the SQL Server Agent service account (SQL Server エージェント

サービスアカウントで実行)] の順に選択します。公開者接続用に、[By impersonating the processaccount (プロセス用アカウントを偽装)] を選択します。[OK] を選択します。

10. [Next (次へ)] を選択します。11. [Create the publication (パブリケーションの作成)] を選択します。12. パブリケーションの名前をこの形式 (AR_PUBLICATION_000DBID) で指定します。

たとえば、パブリケーションに AR_PUBLICATION_00018 という名前を指定します。また、SQLServer で DB_ID 関数を使用することもできます。DB_ID 関数の詳細については、「SQL Server ドキュメント」を参照してください。

Amazon RDS for SQL Server DB インスタンスで継続的なレプリケーションをセットアップする

Amazon RDS for SQL Server では、SQL Server 2016 SP1 までのすべてのバージョンの Amazon RDS forSQL Server Enterprise エディションの MS-CDC がサポートされます。標準エディションの SQL Server2016 SP1 およびそれ以降のバージョンでは、Amazon RDS for SQL Server の MS-CDC がサポートされます。

API バージョン API Version 2016-01-01109

Page 117: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドSQL Server をソースとして使用する

自己管理型の SQL Server ソースとは異なり、Amazon RDS for SQL Server では MS-Replication はサポートされません。したがって、AWS DMS はプライマリーキの有無にかかわらずテーブルに MS-CDC を使用する必要があります。

Amazon RDS は、ソース SQL Server インスタンスの継続的な変更に AWS DMS が使用するレプリケーションアーティファクトを設定するために、sysadmin 権限を付与しません。以下の手順で、マスターユーザー権限を使用して Amazon RDS インスタンスで MS-CDC を有効にする必要があります。

RDS for SQL Server DB インスタンスで MS-CDC を有効にするには

1. データベースレベルで次のクエリを実行します。

exec msdb.dbo.rds_cdc_enable_db 'DB_name'

2. プライマリキーがあるテーブルごとに、次のクエリを実行して MS-CDC を有効にします。

exec sys.sp_cdc_enable_table@source_schema = N'db_name',@source_name = N'table_name',@role_name = NULL,@supports_net_changes = 1GO

一意キーはあるがプライマリキーがないテーブルごとに、次のクエリを実行して MS-CDC を有効にします。

exec sys.sp_cdc_enable_table@source_schema = N'db_name',@source_name = N'table_name',@index_name = N'unique_index_name'@role_name = NULL,@supports_net_changes = 1GO

プライマリキーと一意キーの両方がないテーブルごとに、次のクエリを実行して MS-CDC を有効にします。

exec sys.sp_cdc_enable_table@source_schema = N'db_name',@source_name = N'table_name',@role_name = NULLGO

3. 次のコマンドを使用して、ソースで変更を使用できる保持期間を設定します。

EXEC sys.sp_cdc_change_job @job_type = 'capture' ,@pollinginterval = 86400

パラメータ @pollinginterval は秒単位で測定されます。上記のコマンドは、変更を 1 日保持します。AWS では、AWS DMS で MS-CDC を使用する場合、1 日の保持期間を推奨しています。

サポートされている圧縮方法次の表は、SQL Server バージョンごとに AWS DMS によりサポートされている圧縮方法を示しています。

API バージョン API Version 2016-01-01110

Page 118: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドSQL Server をソースとして使用する

SQL Server Version 行/ページの圧縮 (パーティションレベル)

Vardecimal ストレージ形式

2005 いいえ いいえ

2008 はい いいえ

2012 はい いいえ

2014 はい いいえ

Note

スパース列とカラム構造圧縮はサポートされていません。

SQL Server AlwaysOn 可用性グループの使用SQL Server AlwaysOn 可用性グループ機能は、データベースミラーリングにエンタープライズレベルの代替方法を提供する高可用性および災害復旧ソリューションです。

AlwaysOn 可用性グループを AWS DMS でソースとして使用するには、以下の操作を実行します。

• 可用性レプリカ内のすべての SQL Server インスタンスでディストリビューションオプションを有効にします。

• AWS DMS コンソールで、SQL Server ソースデータベース設定を開きます。[Server Name] で、可用性グループリスナーにせていされたドメインネームサービス (DNS) 名または IP アドレスを指定します。

初めて AWS DMS タスクを開始する場合、開始に通常より時間がかかることがあります。テーブル記事の作成が可用性グループサーバーにより複製されるため、この速度低下が生じます。

Note

AWS DMS バージョン 3.3.0 以降では、1 つの AlwaysOn レプリカの変更を移行できます。

SQL Server データベースの AWS DMS のレプリケーションソースとしての設定SQL Server データベースを AWS DMS (AWS DMS) のレプリケーションソースとして設定できます。変更を完全にレプリケートするには、 SQL Server の Enterprise、Standard、Developer のいずれかのエディションの使用が推奨されます。以上のバージョンは、MS-Replication (EE、SE) と MS-CDC (EE、DEV) を含む唯一のバージョンであるために必要となります。ソース SQL Server を完全バックアップ用に設定する必要もあります。さらに、AWS DMS には、接続先の SQL Server データベースに対して sysadmin 固定サーバーロールのあるユーザー (SQL Server インスタンスログイン) で接続する必要があります。

以下に、SQL Server を AWS DMS のレプリケーションソースとして設定する方法に関する情報を示します。

AWS DMS のソースとして SQL Server を使用する場合の追加の接続属性追加の接続属性を使用して SQL Server ソースを設定できます。これらの設定は、ソースエンドポイントを作成するときに指定します。接続属性の設定が複数ある場合は、空白を追加せずにそれぞれをセミコロンで区切ります。

API バージョン API Version 2016-01-01111

Page 119: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドSQL Server をソースとして使用する

次の表に、SQL Server でソースとして使用できる追加の接続属性を示します。

名前 説明

safeguardPolicy パフォーマンスを最大限に高めるため、AWS DMS は未読み取りのすべての変更をアクティブなトランザクションログ (TLOG) からキャプチャしようとします。ただし、場合によっては切り捨てが行われるため、アクティブな TLOG に未読みトロイの変更すべてが含まれていないことがあります。この場合、AWS DMS はバックアップログにアクセスして、消失した変更をキャプチャします。バックアップログにアクセスする必要性を最小限に抑えるため、AWS DMS は次のいずれかの方法を使用して切り捨てを防止します。

1.Start transactions in the database: これがデフォルトの方法です。この方法を使用する場合、AWS DMS はデータベースでトランザクションを模倣することで、TLOG の切り捨てを防ぎます。そのようなトランザクションが開かれている限り、そのトランザクションが開始されてから生じる変更は切り捨てされません。データベースで Microsoft レプリケーションを有効にする場合、この方法を選択する必要があります。

2. Exclusively use sp_repldone within a single task: この方法を使用すると、AWS DMS が変更を読み取った後、sp_repldone を使用して TLOG トランザクションを切り捨て準備完了とマークします。この方法にはトランザクションアクティビティが伴いませんが、Microsoft レプリケーションが実行されていないときのみ使用できます。さらに、この方法を使用すると、一度に 1 つの AWS DMS タスクのみデータベースにアクセスできます。したがって、同じデータベースに対して並行 AWS DMS タスクを実行する必要がある場合は、デフォルトの方法を使用してください。

デフォルト値:RELY_ON_SQL_SERVER_REPLICATION_AGENT

有効な値: {EXCLUSIVE_AUTOMATIC_TRUNCATION,RELY_ON_SQL_SERVER_REPLICATION_AGENT}

例:safeguardPolicy=RELY_ON_SQL_SERVER_REPLICATION_AGENT;

readBackupOnly このパラメータが Y に設定されている場合、AWS DMS は、トランザクションログのバックアップからの変更のみを読み取ります。継続的なレプリケーションのアクティブトランザクションログからは読み取られません。このパラメータを Yに設定すると、完全ロードおよび継続的なレプリケーションタスク中に、アクティブなトランザクションのログファイルの拡張を制御することができます。ただし、これによって継続的なレプリケーションに一部のソースレイテンシーが生じることがあります。

有効な値: N または Y.デフォルト: N。

例: readBackupOnly=Y;

API バージョン API Version 2016-01-01112

Page 120: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドSQL Server をソースとして使用する

SQL Server のソースデータ型SQL Server を AWS DMS のソースとして使用するデータ移行では、ほとんどの SQL Server データ型がサポートされます。次の表に、AWS DMS を使用する場合にサポートされる SQL Server のソースデータ型と、AWS DMS のデータ型からのデフォルトマッピングを示します。

ターゲットにマッピングされるデータ型を表示する方法については、使用しているターゲットエンドポイントのセクションを参照してください。

AWS DMS のデータ型の詳細については、「AWS Database Migration Service のデータ型 (p. 394)」を参照してください。

SQL Server のデータ型 AWS DMS データ型

BIGINT INT8

BIT BOOLEAN

DECIMAL NUMERIC

INT INT4

MONEY NUMERIC

NUMERIC (p,s) NUMERIC

SMALLINT INT2

SMALLMONEY NUMERIC

TINYINT UINT1

REAL REAL4

FLOAT REAL8

DATETIME DATETIME

DATETIME2 (SQL Server 2008 以降) DATETIME

SMALLDATETIME DATETIME

DATE DATE

TIME TIME

DATETIMEOFFSET WSTRING

CHAR STRING

VARCHAR STRING

VARCHAR(max) CLOB

TEXT

AWS DMS でこのデータ型を使用する場合は、特定のタスク用に CLOB データ型の使用を有効にする必要があります。

SQL Server テーブルの場合、SQL Server で LOB列の値を変更しない UPDATE ステートメントで

API バージョン API Version 2016-01-01113

Page 121: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドSQL Server をソースとして使用する

SQL Server のデータ型 AWS DMS データ型も、AWS DMS はターゲットの LOB 列を更新します。

CDC 中、AWS DMS はプライマリキーを含むテーブルでのみ CLOB データ型をサポートします。

NCHAR WSTRING

NVARCHAR (長さ) WSTRING

NVARCHAR (最大) NCLOB

NTEXT

AWS DMS でこのデータ型を使用する場合は、特定のタスク用に NCLOB データ型の使用を有効にする必要があります。

SQL Server テーブルの場合、SQL Server で LOB列の値を変更しない UPDATE ステートメントでも、AWS DMS はターゲットの LOB 列を更新します。

CDC 中、AWS DMS はプライマリキーを含むテーブルでのみ CLOB データ型をサポートします。

BINARY BYTES

VARBINARY BYTES

VARBINARY (最大) BLOB

IMAGE

SQL Server テーブルの場合、SQL Server で LOB列の値を変更しない UPDATE ステートメントでも、AWS DMS はターゲットの LOB 列を更新します。

AWS DMS でこのデータ型を使用するには、特定のタスク用に BLOB データ型の使用を有効にする必要があります。

AWS DMS は、プライマリキーを含むテーブルでのみ BLOB データ型をサポートします。

TIMESTAMP BYTES

UNIQUEIDENTIFIER STRING

HIERARCHYID SQL Server ターゲットエンドポイントにレプリケートする場合は、HIERARCHYID を使用します。

他のすべてのターゲットエンドポイントにレプリケートする場合は、WSTRING (250) を使用します。

API バージョン API Version 2016-01-01114

Page 122: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドAzure SQL データベースのソースとしての使用

SQL Server のデータ型 AWS DMS データ型

XML NCLOB

SQL Server テーブルの場合、SQL Server で LOB列の値を変更しない UPDATE ステートメントでも、AWS DMS はターゲットの LOB 列を更新します。

AWS DMS でこのデータ型を使用する場合は、特定のタスク用に NCLOB データ型の使用を有効にする必要があります。

CDC の実行中、AWS DMS ではプライマリキーを含むテーブルでのみ NCLOB データ型がサポートされます。

GEOMETRY このデータ型をサポートするターゲットエンドポイントにレプリケートする場合は、GEOMETRYを使用します。

このデータ型をサポートしないターゲットエンドポイントにレプリケートする場合は、CLOB を使用します。

GEOGRAPHY このデータ型をサポートするターゲットエンドポイントにレプリケートする場合は、GEOGRAPHYを使用します。

このデータ型をサポートしないターゲットエンドポイントにレプリケートする場合は、CLOB を使用します。

AWS DMS は、以下のデータ型のフィールドを含むテーブルをサポートしません。

• CURSOR• SQL_VARIANT• TABLE

Note

ユーザー定義のデータ型は、基本型に従ってサポートされます。たとえば、DATETIME をベースとするユーザー定義のデータ型は DATETIME データ型として扱われます。

Microsoft Azure SQL データベースの AWS DMS のソースとしての使用AWS DMS では、Microsoft Azure SQL データベースを SQL Server とほとんど同じ方法でソースとして使用できます。AWS DMS は、ソースとして、オンプレミスまたは Amazon EC2 インスタンスで実行されている SQL Server でサポートされるデータベースバージョンの同じリストをサポートします。

詳細については、「Microsoft SQL Server データベースを AWS DMS のソースとして使用する (p. 105)」を参照してください。

API バージョン API Version 2016-01-01115

Page 123: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドPostgreSQL のソースとしての使用

Note

AWS DMS は、Azure SQL データベースを使用した変更データキャプチャ (CDC) オペレーションはサポートしていません。

PostgreSQL データベースの AWS DMS のソースとしての使用AWS DMS を使用して、1 つ以上の PostgreSQL データベースからデータを移行できます。PostgreSQLデータベースをソースとして使用すると、別の PostgreSQL データベースまたはサポートされている他のデータベースのいずれかにデータを移行できます。AWS DMS では、以下のタイプのデータベースのソースとして、PostgreSQL バージョン 9.4 以降 (バージョン 9.x の場合)、10.x、および 11.x データベースをサポートしています。

• オンプレミスのデータベース• EC2 インスタンスでのデータベース• Amazon RDS DB インスタンスでのデータベース• PostgreSQL との互換性を持つ Amazon Aurora DB インスタンスでのデータベース

Note

PostgreSQL 11.x バージョンは AWS DMS バージョン 3.3.0 以降でのみソースとしてサポートされています。PostgreSQL バージョン 9.4 以降 (バージョン 9.x 用) および 10.x を任意の DMSバージョンのソースとして使用できます。

Note

PostgreSQL バージョン 10.x では、以前のバージョンの関数名とフォルダ名に多くの変更が加えられています。場合によっては、PostgreSQL バージョン 10.x データベースをソースとして使用し、3.3.0 より前の AWS DMS バージョンを使用します。これらの場合、データベースを AWS DMS のソースとして準備する方法については、「AWS DMS のソースとして PostgreSQL バージョン 10.x を使用する (p. 125)」を参照してください。PostgreSQL 10.x データベースをソースとして使用し、DMS 3.3.0 以降を使用している場合、ソース 10.x データベースの準備を以前の DMS バージョンで実行しないでください。

サポートされている PostgreSQL ソースバージョンを使用するための DMS バージョン要件の概要については、次の表を参照してください。

PostgreSQL ソースバージョン 使用する AWS DMS バージョン

9.x 任意の DMS バージョンが使用可能。

10.x DMS 3.3.0 より前のバージョンを使用する場合は、「AWS DMS のソースとして PostgreSQLバージョン 10.x を使用する (p. 125)」で説明されているラッパー関数を使用して、PostgreSQLソースを準備します。

DMS バージョン 3.3.0 以降を使用する場合は、これらのラッパー関数を作成しないでください。追加の準備作業なしで PostgreSQL ソースを使用できます。

11.x DMS バージョン 3.3.0 を使用します。

API バージョン API Version 2016-01-01116

Page 124: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドPostgreSQL のソースとしての使用

SSL を使用して、PostgreSQL エンドポイントとレプリケーションインスタンスとの接続を暗号化できます。PostgreSQL エンドポイントで SSL を使用する方法の詳細については、「AWS Database MigrationService で SSL を使用する (p. 49)」を参照してください。

PostgreSQL データベースから AWS 上の PostgreSQL データベースへの同種移行の場合、以下が当てはまります。

• ソースの JSONB 列は、ターゲットの JSONB 列に移行されます。• JSON 列は、ターゲットで JSON 列として移行されます。• HSTORE 列は、ターゲットで HSTORE 列として移行されます。

ソースが PostgreSQL、ターゲットが別のデータベースエンジンである異種移行の場合、状況は異なります。この場合、JSONB、JSON、および HSTORE 列は AWS DMS 中間タイプの NCLOB に変換され、ターゲットで対応する NCLOB 列タイプに変換されます。この場合、AWS DMS は JSONB データを LOB列と同様に扱います。移行の全ロードフェーズ中、ターゲット列は NULL を許容する必要があります。

AWS DMS は、プライマリキーを持つ PostgreSQL テーブルの変更データキャプチャ (CDC) をサポートしています。テーブルにプライマリキーがない場合、先書きログ (WAL) にはデータベース行の前イメージが含まれていないため、AWS DMS がテーブルを更新できません。

AWS DMS は、DB インスタンスが論理レプリケーションを使用するように設定されている場合、AmazonRDS PostgreSQL データベース上の CDC をサポートします。Amazon RDS は PostgreSQL DB インスタンスバージョン 9.4.9 以降および 9.5.4 以降に対して論理レプリケーションをサポートします。また、Amazon RDS はバージョン 2.2.0 および 2.2.1 を使用して、PostgreSQL 10.6 と互換性があるAmazon Aurora DB インスタンスの論理レプリケーションもサポートします。

PostgreSQL データベースと AWS DMS の使用の詳細については、以下のセクションを参照してください。

トピック• AWS DMS を使用した PostgreSQL から PostgreSQL への移行 (p. 117)• PostgreSQL データベースを AWS DMS のソースとして使用する場合の前提条件 (p. 119)• PostgreSQL データベースを AWS DMS のソースとして使用する場合のセキュリティ要件 (p. 120)• PostgreSQL データベースを AWS DMS のソースとして使用する場合の制限 (p. 120)• ソースとしての Amazon RDS PostgreSQL DB インスタンスの設定 (p. 122)• PostgreSQL ソースデータベースからの AWS DMS アーティファクトの削除 (p. 124)• PostgreSQL データベースを AWS DMS のソースとして使用する場合の追加設定 (p. 124)• AWS DMS のソースとして PostgreSQL バージョン 10.x を使用する (p. 125)• AWS DMS のソースとして PostgreSQL を使用する場合の追加の接続属性 (p. 126)• PostgreSQL のソースデータ型 (p. 128)

AWS DMS を使用した PostgreSQL から PostgreSQL への移行PostgreSQL 以外のデータベースエンジンから PostgreSQL データベースに移行する異種移行では、ほとんどの場合、AWS DMS が最適な移行ツールです。一方、PostgreSQL データベースから PostgreSQLデータベースに移行する同種移行では、ネイティブツールがより効果的な場合があります。

以下の条件では、pg_dump などのネイティブ PostgreSQL データベース移行ツールを使用することをお勧めします。

• ソース PostgreSQL データベースからターゲット PostgreSQL データベースに移行する同種移行である。

• データベース全体を移行する。• ネイティブツールで最小のダウンタイムでデータを移行できる。

API バージョン API Version 2016-01-01117

Page 125: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドPostgreSQL のソースとしての使用

pg_dump ユーティリティでは、COPY コマンドを使用して、PostgreSQL データベースのスキーマとデータダンプを作成します。pg_dump によって生成されるダンプスクリプトは、同じ名前のデータベースにデータをロードし、テーブル、インデックス、外部キーを再作成します。pg_restore コマンドと -d パラメータを使用して、データを別の名前でデータベースに復元できます。

PostgreSQL データベースを Amazon RDS for PostgreSQL や Amazon Aurora (PostgreSQL) にインポートする詳しい方法については、「https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide//PostgreSQL.Procedural.Importing.html」を参照してください。

DMS を使用した PostgreSQL から PostgreSQL へのデータの移行AWS DMS では、たとえば、オンプレミスのソース PostgreSQL データベースからターゲットの AmazonRDS for PostgreSQL や Amazon Aurora (PostgreSQL) インスタンスにデータを移行できます。通常、PostgreSQL のコアまたは基本のデータ型は正常に移行されます。

ソースのデータベースではサポートされていても、ターゲットではサポートされていないデータタイプは、正常に移行されないことがあります。データタイプが不明な場合、AWS DMS は一部のデータタイプを文字列としてストリームします。XML や JSON などの一部のデータ型は、小さなファイルの場合は正常に移行されますが、大きなドキュメントの場合は失敗することがあります。

次の表は、ソース PostgreSQL のデータ型と、これらのデータ型が正常に移行されるかどうかを示しています。

データ型 正常に移行 部分的に移行 移行されない コメント

INTEGER X      

SMALLINT X      

BIGINT X      

NUMERIC/DECIMAL(p,s)   X   0<p<39 および0<s

NUMERIC/DECIMAL   X   p>38 またはp=s=0

REAL X      

DOUBLE X      

SMALLSERIAL X      

SERIAL X      

BIGSERIAL X      

MONEY X      

CHAR   X   精度の指定なし

CHAR(n) X      

VARCHAR   X   精度の指定なし

VARCHAR(n) X      

TEXT X      

BYTEA X      

TIMESTAMP X      

API バージョン API Version 2016-01-01118

Page 126: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドPostgreSQL のソースとしての使用

データ型 正常に移行 部分的に移行 移行されない コメント

TIMESTAMP(Z)   X    

DATE X      

TIME X      

TIME (z)   X    

INTERVAL   X    

BOOLEAN X      

ENUM     X  

CIDR     X  

INET     X  

MACADDR     X  

TSVECTOR     X  

TSQUERY     X  

XML   X    

POINT     X  

LINE     X  

LSEG     X  

BOX     X  

PATH     X  

POLYGON     X  

CIRCLE     X  

JSON   X    

ARRAY     X  

COMPOSITE     X  

RANGE     X  

Note

PostgreSQL NUMERIC(p,s) データ型で精度とスケールが指定されない場合、AWS DMS はデフォルトでは 28 の精度と 6 のスケール (NUMERIC(28,6)) を使用します。たとえば、ソースからの値 0.611111104488373 は、PostgreSQL ターゲットの 0.611111 に変換されます。

PostgreSQL データベースを AWS DMS のソースとして使用する場合の前提条件PostgreSQL データベースを AWS DMS のソースにする場合は、以下の操作を実行します。

API バージョン API Version 2016-01-01119

Page 127: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドPostgreSQL のソースとしての使用

• バージョン 9.4.x 以降の PostgreSQL データベースを使用します。• フルロードと変更データキャプチャ (CDC) タスクまたは CDC のみのタスクの場合は、PostgreSQL

ソースデータベースに指定されたユーザーアカウントにスーパーユーザー権限を付与します。ソース内のレプリケーション固有の機能にアクセスするには、スーパーユーザー権限が必要です。フルロードのみのタスクの場合、それらを移行するには、テーブルで SELECT 権限が必要です。

• AWS DMS レプリケーションサーバーの IP アドレスを pg_hba.conf 設定ファイルに追加します。• postgresql.conf 設定ファイルで次のパラメータと値を設定します。

• 設定 wal_level = logical• max_replication_slots を 1 より大きい値に設定します。

max_replication_slots 値は、実行するタスクの数に従って設定してください。たとえば、5 つのタスクを実行するには、少なくとも 5 つのスロットを設定する必要があります。スロットは、タスクが開始するとすぐに自動的に開き、タスクが実行されなくなった場合でも開いたままです。開いているスロットは手動で削除する必要があります。

• max_wal_senders を 1 より大きい値に設定します。

max_wal_senders パラメータは、実行可能な同時タスクの数を設定します。• 設定 wal_sender_timeout =0

wal_sender_timeout パラメータは、指定されたミリ秒数が過ぎても非アクティブなレプリケーション接続を終了します。デフォルトは 60 秒ですが、このパラメータは 0 に設定することをお勧めします (タイムアウトメカニズムが無効になります)。

• PostgreSQL バージョン 9.6 以降で idle_in_transaction_session_timeout パラメータを使用すると、アイドル状態のトランザクションでタイムアウトやエラーが生じる場合があります。一部の AWSDMS トランザクションでは、AWS DMS エンジンで再度そのパラメータが使用されるまでの間、しばらくアイドル状態になることがあります。AWS DMS を使用する際、アイドル状態のトランザクションを終了しないでください。

PostgreSQL データベースを AWS DMS のソースとして使用する場合のセキュリティ要件PostgreSQL をソースとして使用する場合の唯一のセキュリティ要件として、指定されるユーザーアカウントは PostgreSQL データベースの登録済みユーザーでなければなりません。

PostgreSQL データベースを AWS DMS のソースとして使用する場合の制限PostgreSQL を AWS DMS のソースとして使用する場合は、以下の制限が適用されます。

• キャプチャされたテーブルにはプライマリキーが必要です。テーブルにプライマリキーがない場合、AWS DMS はそのテーブルの DELETE および UPDATE レコードオペレーションを無視します。

• タイムゾーンの種類の列のタイムスタンプはサポートされていません。• AWS DMS は、プライマリキーセグメントの更新の試みを無視します。この場合、ターゲットは、その

更新によってどの行も更新されないと識別します。ただし、PostgreSQL でのプライマリキーの更新結果は予測できないため、どのレコードも例外テーブルには書き込まれません。

• AWS DMS では、[Start Process Changes from Timestamp] 実行オプションがサポートされていません。

• AWS DMS では、Amazon RDS for PostgreSQL での全ロードと変更処理がサポートされています。PostgreSQL DB インスタンスを準備する方法と、CDC を使用するようにそのインスタンスを設定する方法については、「ソースとしての Amazon RDS PostgreSQL DB インスタンスの設定 (p. 122)」を参照してください。

API バージョン API Version 2016-01-01120

Page 128: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドPostgreSQL のソースとしての使用

• 大文字と小文字の組み合わせが異なる同じ名前 (table1、TABLE1、Table1) を持つ複数のテーブルをレプリケートすると、予測できない動作が生じることがあります。この問題により、AWS DMS ではこのタイプのレプリケーションがサポートされていません。

• 多くの場合、AWS DMS ではテーブルに対する CREATE、ALTER、DROP DDL ステートメントの変更処理がサポートされています。テーブルが内部関数またはプロシージャ本文ブロックに保持されているか、ネストしている他の構造に保持されている場合、AWS DMS ではこの変更処理がサポートされていません。

たとえば、以下の変更はキャプチャされません。

CREATE OR REPLACE FUNCTION attu.create_distributors1() RETURNS voidLANGUAGE plpgsqlAS $$BEGINcreate table attu.distributors1(did serial PRIMARY KEY,namevarchar(40) NOT NULL);END;$$;

• AWS DMS では、TRUNCATE オペレーションの変更処理はサポートされていません。• OID LOB データ型は、ターゲットに移行されません。• 使用するソースがオンプレミスあるいは Amazon EC2 インスタンス上の PostgreSQL データベースの場

合、test_decoding 出力プラグインがソースのエンドポイントにインストールされていることを確認してください。このプラグインは、Postgres contrib パッケージにあります。test-decoding プラグインの詳細については、「PostgreSQL のドキュメント」を参照してください。

• AWS DMS では、列のデフォルト値を設定するための変更処理はサポートされていません (ALTERTABLE ステートメントでの ALTER COLUMN SET DEFAULT 句の使用)。

• AWS DMS では、列の null 機能を設定するための変更処理はサポートされていません (ALTER TABLEステートメントでの ALTER COLUMN [SET|DROP] NOT NULL 句の使用)。

• AWS DMS では、パーティション分割されたテーブルのレプリケーションはサポートされていません。パーティション分割されたテーブルが検出された場合、以下の状況が発生します。• エンドポイントは、親テーブルと子テーブルのリストを報告します。• AWS DMS は、ターゲットのテーブルを、選択したテーブルと同じプロパティを持つ通常のテーブル

として作成します。• ソースデータベースの親テーブルに子テーブルと同じプライマリキー値がある場合、「重複する

キー」エラーが生成されます。

Note

パーティション分割されたテーブルを PostgreSQL ソースから PostgreSQL ターゲットにレプリケートする場合、まずターゲットで親テーブルと子テーブルを手動で作成する必要があります。次に、それらのテーブルにレプリケートする別個のタスクを定義します。その場合、タスク設定を [Truncate before loading] に設定します。

Note

PostgreSQL NUMERIC データ型はサイズが固定されていません。NUMERIC データ型ですが、精度とスケールがないデータを転送する場合、DMS はデフォルトで NUMERIC(28,6) (精度が 28、スケールが 6) を使用します。たとえば、ソースからの値 0.611111104488373 は、PostgreSQLターゲットの 0.611111 に変換されます。

API バージョン API Version 2016-01-01121

Page 129: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドPostgreSQL のソースとしての使用

ソースとしての Amazon RDS PostgreSQL DB インスタンスの設定Amazon RDS for PostgreSQL DB インスタンスまたはリードレプリカを AWS DMS のソースとして使用できます。DB インスタンスは全ロードと CDC (継続的なレプリケーションの変更データキャプチャ) の両方で使用できます。リードレプリカは全ロードタスクにのみ使用でき、CDC に使用することはできません。

PostgreSQL DB インスタンス用の AWS マスターユーザーアカウントを AWS DMS の PostgreSQL ソースエンドポイント用のユーザーアカウントとして使用します。マスターユーザーアカウントには、変更データキャプチャ (CDC) を設定するために必要なロールがあります。マスターユーザーアカウント以外のアカウントを使用する場合、アカウントには rds_superuser ロールと rds_replication ロールが必要です。rds_replication ロールは、論理スロットを管理し、論理スロットを使用してデータをストリーミングするアクセス権限を付与します。

DB インスタンスのマスターユーザーアカウントを使用しない場合は、使用するアカウントのマスターユーザーアカウントから複数のオブジェクトを作成する必要があります。必要なオブジェクトの作成については、「マスターユーザーアカウントの使用なしでの Amazon RDS for PostgreSQL データベースの移行 (p. 123)」を参照してください。

RDS for PostgreSQL DB インスタンスでの CDC の使用PostgreSQL のネイティブ論理レプリケーション機能を使用して、Amazon RDS PostgreSQL DB インスタンスのデータベースの移行中に CDC を有効にすることができます。このアプローチにより、ダウンタイムが短くなり、確実にターゲットデータベースがソース PostgreSQL データベースと同期されるようになります。Amazon RDS は、PostgreSQL DB インスタンスバージョン 9.4.9 以降および 9.5.4 以降の論理レプリケーションをサポートしています。

Note

Amazon RDS for PostgreSQL のリードレプリカを CDC (継続的なレプリケーション) に使用することはできません。

RDS PostgreSQL DB インスタンスに対して論理レプリケーションを有効にするには、以下の手順を実行します。

• 一般的に、PostgreSQL DB インスタンス用の AWS マスターユーザーアカウントを PostgreSQL ソースエンドポイント用のユーザーアカウントとして使用します。マスターユーザーアカウントには、CDC を設定するために必要なロールがあります。マスターユーザーアカウント以外のアカウントを使用する場合は、使用するアカウントのマスターユーザーアカウントから複数のオブジェクトを作成する必要があります。詳細については、「マスターユーザーアカウントの使用なしでの Amazon RDS for PostgreSQLデータベースの移行 (p. 123)」を参照してください。

• DB パラメータグループの rds.logical_replication パラメータを 1 に設定します。これは静的パラメータであり、有効にするには DB インスタンスの再起動が必要です。このパラメータを適用する一環として、AWS DMS はwal_level、max_wal_senders、max_replication_slots、max_connections の各パラメータを設定します。これらのパラメータによって Write Ahead Log (WAL) の生成が増える可能性があるため、rds.logical_replication パラメータを設定するのは、論理レプリケーションスロットを使用している場合のみにする必要があります。

• ベストプラクティスとして、wal_sender_timeout パラメータを 0 に設定します。このパラメータを0 に設定すると、PostgreSQL が指定したタイムアウトを超えて非アクティブなレプリケーション接続が終了することを防ぎます。AWS DMS がデータを移行している間、レプリケーション接続は指定するタイムアウトより長く実行できる必要があります。

• エンドポイントを作成するときに、slotName の追加の接続属性を既存の論理レプリケーションスロットの名前に設定することで、PostgreSQL をソースとしてネイティブ CDC 開始ポイントを有効にします。この論理レプリケーションスロットは、エンドポイントの作成時点からの継続的な変更を保持します。したがって、以前の時点からのレプリケーションがサポートされます。PostgreSQL は、クライアント (AWS DMS など) が論理レプリケーションスロットから変更を正常に読み取った後にのみ破棄さ

API バージョン API Version 2016-01-01122

Page 130: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドPostgreSQL のソースとしての使用

れる WAL ファイルにデータベースの変更を書き込みます。論理レプリケーションスロットを使用すると、ログに記録された変更がレプリケーションエンジンによって消費される前に削除されないように保護できます。ただし、変更率と消費率によっては、論理レプリケーションスロットに保持されている変更により、ディスク使用率が高くなることがあります。論理レプリケーションスロットを使用する場合は、ソース PostgreSQL インスタンスにスペース使用アラームを設定することをお勧めします。追加のslotName 接続属性の使用についての詳細は、「AWS DMS のソースとして PostgreSQL を使用する場合の追加の接続属性 (p. 126)」を参照してください。

Note

PostgresSQL でネイティブ CDC 開始ポイントをソースとして使用することは、AWS DMSバージョン 3.1.0 以降で可能です。

マスターユーザーアカウントの使用なしでの Amazon RDS for PostgreSQL データベースの移行

場合によっては、ソースとして使用している Amazon RDS PostgreSQL DB インスタンス用のマスターユーザーアカウントを使用しない場合があります。このような場合は、データ定義言語 (DDL) イベントをキャプチャするために複数のオブジェクトを作成する必要があります。マスターアカウント以外のアカウントでこれらのオブジェクトを作成し、マスターユーザーアカウントでトリガーを作成します。

Note

ソースエンドポイントで captureDDLs 追加の接続属性を N に設定すると、ソースデータベース上で次のテーブルおよびトリガーを作成する必要はありません。

これらのオブジェクトを作成するには、以下の手順を実行します。マスターアカウント以外のユーザーアカウントをこの手順では NoPriv アカウントと呼んでいます。

オブジェクトを作成するには

1. オブジェクトが作成されるスキーマを選択します。デフォルトのスキーマは public です。スキーマが存在し、NoPriv アカウントからアクセス可能であることを確認します。

2. NoPriv アカウントを使用して PostgreSQL DB インスタンスにログインします。3. 以下のコマンドを実行して awsdms_ddl_audit テーブルを作成します。コード内の

objects_schema は、使用するスキーマの名前に置き換えてください。

create table objects_schema.awsdms_ddl_audit( c_key bigserial primary key, c_time timestamp, -- Informational c_user varchar(64), -- Informational: current_user c_txn varchar(16), -- Informational: current transaction c_tag varchar(24), -- Either 'CREATE TABLE' or 'ALTER TABLE' or 'DROP TABLE' c_oid integer, -- For future use - TG_OBJECTID c_name varchar(64), -- For future use - TG_OBJECTNAME c_schema varchar(64), -- For future use - TG_SCHEMANAME. For now - holds current_schema c_ddlqry text -- The DDL query associated with the current DDL event)

4. 以下のコマンドを実行して awsdms_intercept_ddl 関数を作成します。コード内のobjects_schema は、使用するスキーマの名前に置き換えてください。

CREATE OR REPLACE FUNCTION objects_schema.awsdms_intercept_ddl()

API バージョン API Version 2016-01-01123

Page 131: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドPostgreSQL のソースとしての使用

RETURNS event_triggerLANGUAGE plpgsqlSECURITY DEFINER AS $$ declare _qry text;BEGIN if (tg_tag='CREATE TABLE' or tg_tag='ALTER TABLE' or tg_tag='DROP TABLE') then SELECT current_query() into _qry; insert into objects_schema.awsdms_ddl_audit values ( default,current_timestamp,current_user,cast(TXID_CURRENT()as varchar(16)),tg_tag,0,'',current_schema,_qry ); delete from objects_schema.awsdms_ddl_audit;end if;END;$$;

5. NoPriv アカウントからログアウトし、rds_superuser ロールが割り当てられたアカウントを使用してログインします。

6. 以下のコマンドを実行してイベントトリガー awsdms_intercept_ddl を作成します。

CREATE EVENT TRIGGER awsdms_intercept_ddl ON ddl_command_end EXECUTE PROCEDURE objects_schema.awsdms_intercept_ddl();

前の手順を完了したら、NoPriv アカウントを使用して AWS DMS ソースエンドポイントを作成できます。

PostgreSQL ソースデータベースからの AWS DMS アーティファクトの削除DDL イベントをキャプチャするため、移行タスクの開始時に AWS DMS によりさまざまなアーティファクトが PostgreSQL データベースに作成されます。タスクが完了したら、これらのアーティファクトを削除できます。アーティファクトを削除するには、以下のステートメントを発行します (示されている順序で)。{AmazonRDSMigration} は、アーティファクトが作成されたスキーマです。

drop event trigger awsdms_intercept_ddl;

イベントトリガーは特定のスキーマに属していません。

drop function {AmazonRDSMigration}.awsdms_intercept_ddl()drop table {AmazonRDSMigration}.awsdms_ddl_auditdrop schema {AmazonRDSMigration}

Note

スキーマを削除する場合でも、細心の注意を払ってください。運用中のスキーマ (特に公開スキーマ) は絶対に削除しないでください。

PostgreSQL データベースを AWS DMS のソースとして使用する場合の追加設定PostgreSQL データベースからデータを移行するときは、2 つの方法で詳細設定を追加できます。

API バージョン API Version 2016-01-01124

Page 132: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドPostgreSQL のソースとしての使用

• 追加接続属性に値を追加して、DDL イベントをキャプチャし、運用中の DDL データベースアーティファクトが作成されたスキーマを指定します。詳細については、「AWS DMS のソースとしてPostgreSQL を使用する場合の追加の接続属性 (p. 126)」を参照してください。

• 接続文字列パラメータを上書きできます。以下のいずれかを行う必要がある場合は、このオプションを選択します。• 内部 AWS DMS パラメータを指定します。このようなパラメータが必要になることはめったにないた

め、ユーザーインターフェイスには表示されません。• 特定のデータベースクライアントのパススルー (passthru) 値を指定します。AWS DMS では、データ

ベースクライアントに渡される接続文字列にパススルーパラメータが含まれています。

AWS DMS のソースとして PostgreSQL バージョン 10.x を使用するPostgreSQL バージョン 10.x データベースでは、以前の PostgreSQL バージョンの関数名とフォルダ名に多くの変更が加えられています。そのため、3.3.0 より前の AWS DMS バージョンを使用する場合、一部の移行アクションには下位互換性がありません。

Note

PostgreSQL 10.x データベースを AWS DMS 3.3.0 以降のソースとして使用する場合、以下に説明する準備を実行しないでください。追加の準備作業なしで PostgreSQL ソースを使用できます。

ほとんどの名前変更は表面上のものであるため、AWS DMS では AWS DMS が PostgreSQL バージョン10.x を使用できるようにするラッパー関数を作成しました。ラッパー関数は、pg_catalog の関数よりも優先されます。さらに、ユーザー定義関数などの他のシステムカタログ関数が上書きされないように、既存のスキーマのスキーマ可視性は変更されないようにしました。

移行タスクを実行する前にこれらのラッパー関数を使用するには、ソースエンドポイントの作成に使用したのと同じ AWS DMS ユーザーアカウント (user_name) を使用します。これらのラッパー関数を定義してこのアカウントに関連付けるには、ソース PostgreSQL データベースで次の SQL コードを実行します。

BEGIN;CREATE SCHEMA IF NOT EXISTS fnRenames;CREATE OR REPLACE FUNCTION fnRenames.pg_switch_xlog() RETURNS pg_lsn AS $$ SELECT pg_switch_wal(); $$ LANGUAGE SQL;CREATE OR REPLACE FUNCTION fnRenames.pg_xlog_replay_pause() RETURNS VOID AS $$ SELECT pg_wal_replay_pause(); $$ LANGUAGE SQL;CREATE OR REPLACE FUNCTION fnRenames.pg_xlog_replay_resume() RETURNS VOID AS $$ SELECT pg_wal_replay_resume(); $$ LANGUAGE SQL;CREATE OR REPLACE FUNCTION fnRenames.pg_current_xlog_location() RETURNS pg_lsn AS $$ SELECT pg_current_wal_lsn(); $$ LANGUAGE SQL;CREATE OR REPLACE FUNCTION fnRenames.pg_is_xlog_replay_paused() RETURNS boolean AS $$ SELECT pg_is_wal_replay_paused(); $$ LANGUAGE SQL;CREATE OR REPLACE FUNCTION fnRenames.pg_xlogfile_name(lsn pg_lsn) RETURNS TEXT AS $$ SELECT pg_walfile_name(lsn); $$ LANGUAGE SQL;CREATE OR REPLACE FUNCTION fnRenames.pg_last_xlog_replay_location() RETURNS pg_lsn AS $$ SELECT pg_last_wal_replay_lsn(); $$ LANGUAGE SQL;CREATE OR REPLACE FUNCTION fnRenames.pg_last_xlog_receive_location() RETURNS pg_lsn AS $$ SELECT pg_last_wal_receive_lsn(); $$ LANGUAGE SQL;CREATE OR REPLACE FUNCTION fnRenames.pg_current_xlog_flush_location() RETURNS pg_lsn AS $$ SELECT pg_current_wal_flush_lsn(); $$ LANGUAGE SQL;CREATE OR REPLACE FUNCTION fnRenames.pg_current_xlog_insert_location() RETURNS pg_lsn AS $$ SELECT pg_current_wal_insert_lsn(); $$ LANGUAGE SQL;CREATE OR REPLACE FUNCTION fnRenames.pg_xlog_location_diff(lsn1 pg_lsn, lsn2 pg_lsn) RETURNS NUMERIC AS $$ SELECT pg_wal_lsn_diff(lsn1, lsn2); $$ LANGUAGE SQL;CREATE OR REPLACE FUNCTION fnRenames.pg_xlogfile_name_offset(lsn pg_lsn, OUT TEXT, OUT INTEGER) AS $$

API バージョン API Version 2016-01-01125

Page 133: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドPostgreSQL のソースとしての使用

SELECT pg_walfile_name_offset(lsn); $$ LANGUAGE SQL;CREATE OR REPLACE FUNCTION fnRenames.pg_create_logical_replication_slot(slot_name name, plugin name, temporary BOOLEAN DEFAULT FALSE, OUT slot_name name, OUT xlog_position pg_lsn) RETURNS RECORD AS $$ SELECT slot_name::NAME, lsn::pg_lsn FROM pg_catalog.pg_create_logical_replication_slot(slot_name, plugin, temporary); $$ LANGUAGE SQL;ALTER USER user_name SET search_path = fnRenames, pg_catalog, "$user", public;

-- DROP SCHEMA fnRenames CASCADE;-- ALTER USER PG_User SET search_path TO DEFAULT;COMMIT;

Note

3.3.0 より前の AWS DMS バージョンのソース PostgreSQL 10.x データベースでこの準備コードを実行しないと、次のようなエラーが表示されます。

2018-10-29T02:57:50 [SOURCE_CAPTURE ]E: RetCode: SQL_ERROR SqlState: 42703 NativeError: 1 Message: ERROR: column &quot;xlog_position&quot; does not exist;, No query has been executed with that handle [1022502] (ar_odbc_stmt.c:3647)

AWS DMS バージョンを 3.3.0 以降にアップグレードした後、次の手順に従います。

1. ソース PostgreSQL 10.x 設定検索パスの設定に使用する fnRenames ステートメントから ALTER USER参照を削除します。

2. PostgreSQL データベースから fnRenames スキーマを削除します。

アップグレード後にこれらの手順を実行しない場合、fnRenames スキーマへのアクセス時に次のエラーがログに表示されます。

RetCode: SQL_ERROR SqlState: 42703 NativeError: 1 Message: ERROR: column "lsn" does not exist;

AWS DMS がデータベースに対して非マスターユーザーアカウントを使用している場合、ソースPostgreSQL 10.x データベースでこれらのラッパー関数にアクセスするための特定の権限も設定する必要があります。これらの権限を設定するには、次の許可を実行します。

GRANT USAGE ON SCHEMA fnRenames TO dms_superuser;GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA fnRenames TO dms_superuser;

ソース PostgreSQL 10.x データベースで非マスターユーザーアカウントを使用する方法については、「マスターユーザーアカウントの使用なしでの Amazon RDS for PostgreSQL データベースの移行 (p. 123)」を参照してください。

AWS DMS のソースとして PostgreSQL を使用する場合の追加の接続属性追加の接続属性を使用して PostgreSQL ソースを設定できます。これらの設定は、ソースエンドポイントを作成するときに指定します。接続属性の設定が複数ある場合は、空白を追加せずにそれぞれをセミコロンで区切ります。

API バージョン API Version 2016-01-01126

Page 134: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドPostgreSQL のソースとしての使用

次の表に、PostgreSQL を AWS DMS のソースとして使うときに使用できる追加の接続属性を示します。

名前 説明

captureDDLs DDL イベントをキャプチャするために、AWS DMS によって、タスクの開始時にさまざまなアーティファクトがPostgreSQL データベースに作成されます。「PostgreSQLソースデータベースからの AWS DMS アーティファクトの削除 (p. 124)」に記載されているように、これらのアーティファクトは後で削除できます。

この値が N に設定されている場合は、ソースデータベースにテーブルまたはトリガーを作成する必要はありません。詳細については、「マスターユーザーアカウントの使用なしでの Amazon RDS for PostgreSQL データベースの移行 (p. 123)」を参照してください。

ストリーミングされた DDL イベントがキャプチャされます。

デフォルト値: Y

有効な値: Y/N

例: captureDDLs=Y;

ddlArtifactsSchema 運用中の DDL データベースアーティファクトが作成されるスキーマ。

デフォルト値: public

有効な値: 文字列

例: ddlArtifactsSchema=xyzddlschema;

failTasksOnLobTruncation true に設定されている場合、LOB 列の実際のサイズが、指定された LobMaxSize を上回ると、この値によりタスクは失敗します。

タスクが制限付き LOB モードに設定され、このオプションがtrue に設定されている場合、LOB データを切り捨てるのではなくタスクが失敗します。

デフォルト値: false

有効な値: ブール値

例: failTasksOnLobTruncation=true;

executeTimeout PostgreSQL インスタンスのクライアントステートメントタイムアウト (秒単位) を設定します。デフォルト値は 60 秒です。

例: executeTimeout=100;

slotName ソース PostreSQL インスタンスの CDC ロード用に以前に作成された論理レプリケーションスロットの名前を設定します。CdcStartPosition リクエストパラメータとともに使用すると、ネイティブ CDC 開始ポイントも AWS DMS で使用できます。AWS DMS は、CDC ロードタスクを開始する前に、指定された論理レプリケーションスロットが存在するこ

API バージョン API Version 2016-01-01127

Page 135: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドPostgreSQL のソースとしての使用

名前 説明とを確認します。スロットが存在しない場合は、AWS DMSでエラーが発生します。

AWS DMS が論理レプリケーションスロットを使用する方法の詳細については、「RDS for PostgreSQLDB インスタンスでの CDC の使用 (p. 122)」を参照してください。CdcStartPosition リクエストパラメータ設定の詳細については、「AWSDatabase Migration Service API Reference」のCreateReplicationTask、StartReplicationTask、または ModifyReplicationTask API に関するドキュメントを参照してください。

有効な値: 文字列

例:slotName=abc1d2efghijk_34567890_z0yx98w7_6v54_32ut_1srq_1a2b34c5d67ef;

PostgreSQL のソースデータ型次の表に、AWS DMS を使用する場合にサポートされる PostgreSQL のソースデータ型と、AWS DMS のデータ型とのデフォルトマッピングを示します。

ターゲットにマッピングされるデータ型を表示する方法については、使用しているターゲットエンドポイントのセクションを参照してください。

AWS DMS のデータ型の詳細については、「AWS Database Migration Service のデータ型 (p. 394)」を参照してください。

PostgreSQL のデータ型 AWS DMS データ型

INTEGER INT4

SMALLINT INT2

BIGINT INT8

NUMERIC (p,s) 精度が 0 ~ 38 の場合、NUMERIC を使用します。

精度が 39 以上の場合、STRING を使用します。

DECIMAL(P,S) 精度が 0 ~ 38 の場合、NUMERIC を使用します。

精度が 39 以上の場合、STRING を使用します。

REAL REAL4

DOUBLE REAL8

SMALLSERIAL INT2

SERIAL INT4

BIGSERIAL INT8

MONEY NUMERIC(38,4)

API バージョン API Version 2016-01-01128

Page 136: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドPostgreSQL のソースとしての使用

PostgreSQL のデータ型 AWS DMS データ型MONEY データ型は、SQL Server の FLOAT にマッピングされます。

CHAR WSTRING (1)

CHAR(N) WSTRING (n)

VARCHAR(N) WSTRING (n)

TEXT NCLOB

BYTEA BLOB

TIMESTAMP TIMESTAMP

TIMESTAMP (z) TIMESTAMP

TIMESTAMP (タイムゾーン付き) サポート外

DATE DATE

TIME TIME

TIME (z) TIME

INTERVAL STRING (128)—1 YEAR、2 MONTHS、3DAYS、4 HOURS、5 MINUTES、6 SECONDS

BOOLEAN CHAR (5) false または true

ENUM STRING (64)

CIDR STRING (50)

INET STRING (50)

MACADDR STRING (18)

BIT (n) STRING (n)

BIT VARYING (n) STRING (n)

UUID STRING

TSVECTOR CLOB

TSQUERY CLOB

XML CLOB

POINT STRING (255) "(x,y)"

LINE STRING (255) "(x,y,z)"

LSEG STRING (255) "((x1,y1),(x2,y2))"

BOX STRING (255) "((x1,y1),(x2,y2))"

PATH CLOB "((x1,y1),(xn,yn))"

POLYGON CLOB "((x1,y1),(xn,yn))"

API バージョン API Version 2016-01-01129

Page 137: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドソースとしての MySQL の使用

PostgreSQL のデータ型 AWS DMS データ型

CIRCLE STRING (255) "(x,y),r"

JSON NCLOB

JSONB NCLOB

ARRAY NCLOB

COMPOSITE NCLOB

HSTORE NCLOB

INT4RANGE STRING (255)

INT8RANGE STRING (255)

NUMRANGE STRING (255)

STRRANGE STRING (255)

PostgreSQL の列サイズは、PostgreSQL LOB データ型の AWS DMS データ型への変換に影響します。これを使用するには、次の AWS DMS データ型で以下の手順を実行します。

• BLOB – タスク作成で [Limit LOB size to (LOB サイズ制限)] 値を [Maximum LOB Size (KB) (最大 LOB サイズ (KB))] に設定します。

• CLOB – レプリケーションは各文字を UTF8 文字として処理します。次に、列で最長の文字テキストの長さを見つけ (ここでは、max_num_chars_text)、これを使用して [Limit LOB size to (LOB のサイズ制限)] の値を指定します。データに 4 バイト文字が含まれている場合には、2 倍にして [Limit LOB sizeto (LOB サイズ制限)] 値をバイト単位で指定します。この場合、[Limit LOB size to (LOB サイズ制限)] はmax_num_chars_text の 2 乗と等しくなります。

• NCLOB – レプリケーションは各文字を 2 バイト文字として処理します。次に、列で最長の文字テキストの長さを見つけ (max_num_chars_text)、2 倍にして [Limit LOB size to (LOB のサイズ制限)] の値を指定します。この場合、[Limit LOB size to (LOB サイズ制限)] は max_num_chars_text の 2 乗と等しくなります。データに 4 バイト文字が含まれている場合は、再度 2 倍にします。この場合、[Limit LOBsize to (LOB サイズ制限)] は max_num_chars_text の 4 乗と等しくなります。

MySQL 互換データベースの AWS DMS のソースとしての使用AWS Database Migration Service を使用すると、任意の MySQL 互換データベース (MySQL、MariaDB、または Amazon Aurora MySQL) からデータを移行できます。MySQL バージョン 5.5、5.6、5.7、MariaDBバージョン 10.0.24 から 10.0.28、10.1、10.2、および Amazon Aurora MySQL がオンプレミスでサポートされています。

SSL を使用して、MySQL 互換のエンドポイントとレプリケーションインスタンスとの接続を暗号化できます。MySQL 互換のエンドポイントで SSL を使用する方法の詳細については、「AWS DatabaseMigration Service で SSL を使用する (p. 49)」を参照してください。

以降のセクションでは、「自己管理型」という用語は、オンプレミスまたは Amazon EC2 にインストールされているあらゆるデータベースに当てはまります。「Amazon が管理する」という用語は、AmazonRDS、Amazon Aurora、または Amazon S3 上のあらゆるデータベースに当てはまります。

MySQL 互換データベースと AWS DMS の使用方法の詳細については、以下のセクションを参照してください。

API バージョン API Version 2016-01-01130

Page 138: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドソースとしての MySQL の使用

トピック• AWS DMS を使用した MySQL から MySQL への移行 (p. 131)• MySQL 互換データベースの AWS DMS のソースとしての使用 (p. 133)• 自己管理型 MySQL 互換データベースの AWS DMS のソースとしての使用 (p. 133)• Amazon が管理する MySQL 互換データベースの AWS DMS のソースとしての使用 (p. 134)• MySQL データベースを AWS DMS のソースとして使用する場合の制限 (p. 134)• AWS DMS のソースとして MySQL を使用する場合の追加の接続属性 (p. 135)• MySQL のソースデータ型 (p. 136)

AWS DMS を使用した MySQL から MySQL への移行MySQL 以外のデータベースエンジンから MySQL データベースに移行する異種移行では、ほとんどの場合AWS DMS が最適な移行ツールです。一方、MySQL データベースから MySQL データベースに移行する同種移行では、ネイティブツールがより効果的な場合があります。

以下の条件では、mysqldump などのネイティブ MySQL データベース移行ツールを使用することをお勧めします。

• ソース MySQL データベースからターゲット MySQL データベースに移行する同種移行である。• データベース全体を移行する。• ネイティブツールで最小のダウンタイムでデータを移行できる。

既存の MySQL や MariaDB データベースから Amazon RDS MySQL や MariaDB DB インスタンスにデータをインポートできます。これを行うには、mysqldump を使用してデータベースをコピーし、このコピーを Amazon RDS MySQL や MariaDB DB インスタンスに直接パイプします。mysqldump コマンドラインユーティリティは、データのバックアップや、別の MySQL または MariaDB サーバーへの転送のためによく使用されます。このユーティリティは MySQL および MariaDB クライアントソフトウェアに含まれています。

MySQL データベースを Amazon RDS for MySQL や Amazon Aurora (MySQL) にインポートする詳しい方法については、「MySQL DB インスタンスへのデータのインポート」と「MySQL や MariaDB DB からAmazon RDS MySQL や MariaDB DB インスタンスへのデータのインポート」を参照してください。

AWS DMS を使用した MySQL から MySQL へのデータの移行AWS DMS では、たとえば、オンプレミスのソース MySQL データベースからターゲットの Amazon RDSfor MySQL や Amazon Aurora (MySQL) インスタンスにデータを移行できます。通常、MySQL のコアまたは基本のデータ型は正常に移行されます。

ソースのデータベースではサポートされていても、ターゲットではサポートされていないデータタイプは、正常に移行されないことがあります。データタイプが不明な場合、AWS DMS は一部のデータタイプを文字列としてストリームします。XML や JSON などの一部のデータ型は、小さなファイルの場合は正常に移行されますが、大きなドキュメントの場合は失敗することがあります。

次の表は、ソース MySQL のデータ型と、これらのデータ型が正常に移行されるかどうかを示しています。

データ型 正常に移行 部分的に移行 移行されない コメント

INT X      

BIGINT X      

MEDIUMINT X      

API バージョン API Version 2016-01-01131

Page 139: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドソースとしての MySQL の使用

データ型 正常に移行 部分的に移行 移行されない コメント

TINYINT X      

DECIMAL(p,s) X      

BINARY X      

BIT (M) X      

BLOB X      

LONGBLOB X      

MEDIUMBLOB X      

TINYBLOB X      

DATE X      

DATETIME X      

TIME   X    

TIMESTAMP X      

YEAR X      

DOUBLE X      

FLOAT   X    

VARCHAR(N) X      

VARBINARY(N) X      

CHAR(N) X      

TEXT X      

LONGTEXT X      

MEDIUMTEXT X      

TINYTEXT X      

GEOMETRY     X  

POINT     X  

LINESTRING     X  

POLYGON     X  

MULTILINESTRING     X  

MULTIPOLYGON     X  

GEOMETRYCOLLECTION     X  

ENUM   X    

SET   X    

API バージョン API Version 2016-01-01132

Page 140: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドソースとしての MySQL の使用

MySQL 互換データベースの AWS DMS のソースとしての使用MySQL データベースを AWS DMS のソースとして使用し始める前に、次の前提条件を満たしていることを確認してください。これらの前提条件は、自己管理型または Amazon が管理するソースのいずれかに適用されます。

レプリケーション管理者ロールを持つ AWS DMS のアカウントを保有している必要があります。ロールには、次の権限が必要です。

• REPLICATION CLIENT – この権限は、変更データキャプチャ (CDC) タスクにのみ必要です。つまり、フルロードのみのタスクにはこの権限は必要ありません。

• REPLICATION SLAVE – この権限は、変更データキャプチャ (CDC) タスクにのみ必要です。つまり、フルロードのみのタスクにはこの権限は必要ありません。

• SUPER – この権限は、バージョン 5.6.6 より前の MySQL でのみ必要です。

AWS DMS ユーザーには、レプリケーション対象に指定されたソーステーブルに対する SELECT 権限も必要です。

自己管理型 MySQL 互換データベースの AWS DMS のソースとしての使用次の自己管理型 MySQL 互換データベースを AWS DMS のソースとして使用できます。

• MySQL Community Edition• MySQL Standard Edition• MySQL Enterprise Edition• MySQL Cluster Carrier Grade Edition• MariaDB Community Edition• MariaDB Enterprise Edition• MariaDB Column Store

変更データキャプチャ (CDC) を使用する予定の場合、バイナリロギングを有効にする必要があります。バイナリロギングを有効にするには、MySQL の my.ini (Windows) または my.cnf (UNIX) ファイルで以下のパラメータを設定する必要があります。

パラメータ 値

server_id このパラメータは、1 以上の値に設定します。

log-bin パスをバイナリログファイル (log-bin=E:\MySql_Logs\BinLog) に設定します。ファイル拡張子を含めないでください。

binlog_format このパラメータは ROW に設定します。

expire_logs_days このパラメータは、1 以上の値に設定します。ディスク容量の使いすぎを防ぐため、デフォルト値の 0 は使用しないことをお勧めします。

binlog_checksum このパラメータは NONE に設定します。

binlog_row_image このパラメータは FULL に設定します。

log_slave_updates MySQL または MariaDB リードレプリカをソースとして使用している場合は、このパラメータを TRUE に設定します。

API バージョン API Version 2016-01-01133

Page 141: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドソースとしての MySQL の使用

ソースで NDB (クラスター化) データベースエンジンを使用している場合、そのストレージエンジンを使用するテーブルで CDC を有効にするには以下のパラメータを設定する必要があります。これらの変更をMySQL の my.ini (Windows) または my.cnf (UNIX) ファイルに追加します。

パラメータ 値

ndb_log_bin このパラメータは ON に設定します。この値により、クラスター化されたテーブルでの変更が確実にバイナリログに記録されます。

ndb_log_update_as_writeこのパラメータは OFF に設定します。この値に設定すると、UPDATE ステートメントが INSERT ステートメントとしてバイナリログに書き込まれなくなります。

ndb_log_updated_onlyこのパラメータは OFF に設定します。この値に設定すると、バイナリログに変更された列だけでなく行全体が含められます。

Amazon が管理する MySQL 互換データベースの AWS DMS のソースとしての使用次の Amazon が管理する MySQL 互換データベースを AWS DMS のソースとして使用できます。

• MySQL Community Edition• MariaDB Community Edition• MySQL と互換性がある Amazon Aurora

Amazon が管理する MySQL 互換データベースを AWS DMS のソースとして使用する場合は、次の前提条件を満たしていることを確認してください。

• 自動バックアップを有効化します。自動バックアップの設定の詳細については、『Amazon RDS ユーザーガイド』の「自動バックアップの使用」を参照してください。

• 変更データキャプチャ (CDC) を使用する予定の場合、バイナリロギングを有効にします。Amazon RDSMySQL データベースのバイナリロギングの設定の詳細については、『Amazon RDS ユーザーガイド』の「自動バックアップの使用」を参照してください。

• バイナリログが AWS DMS で利用できることを確認します。Amazon が管理する MySQL 互換データベースはできるだけ早くバイナリログを消去するため、ログが利用可能な状態で保持される時間を長くする必要があります。たとえば、ログ保持を 24 時間に伸ばすには、次のコマンドを実行します。

call mysql.rds_set_configuration('binlog retention hours', 24);

• binlog_format パラメータを "ROW" に設定します。• binlog_checksum パラメータを "NONE" に設定します。Amazon RDS MySQL でのパラメータの設定

の詳細については、『Amazon RDS ユーザーガイド』の「自動バックアップの使用」を参照してください。

• Amazon RDS MySQL または Amazon RDS MariaDB リードレプリカをソースとして使用している場合、リードレプリカでバックアップを有効にします。

MySQL データベースを AWS DMS のソースとして使用する場合の制限MySQL データベースをソースとして使用する場合、AWS DMS では以下のものがサポートされません。

API バージョン API Version 2016-01-01134

Page 142: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドソースとしての MySQL の使用

• 変更データキャプチャ (CDC) は、Amazon RDS MySQL 5.5 以下ではサポートされていません。Amazon RDS MySQL の場合、CDC を有効にするにはバージョン 5.6 以降を使用する必要があります。

• データ定義言語 (DDL) ステートメントの DROP TABLE および RENAME TABLE はサポートされません。さらに、パーティション分割されたテーブルのすべての DDL ステートメントはサポートされません。

• ソースのパーティション分割されたテーブルで、[ターゲットテーブル作成モード] を [ターゲット上のテーブルを削除] に設定すると、AWS DMS は MySQL ターゲットにパーティションがないシンプルなテーブルを作成します。パーティション分割されたテーブルをターゲットのパーティション分割されたテーブルに移行するには、ターゲット MySQL データベースでパーティション分割されたテーブルを事前に作成します。

• ALTER TABLEtable_name ADD COLUMN column_name ステートメントを使用して、テーブルの先頭 (FIRST) または中間 (AFTER) に列を追加することはできません。列は常にテーブルの末尾に追加されます。

• テーブル名に大文字と小文字が含まれていて、大文字と小文字が区別されるオペレーティングシステムにソースエンジンがホストされている場合、CDC はサポートされません。たとえば、Windows や HFS+ を使用する OS X などです。

• AR_H_USER ヘッダー列はサポートされていません。• 列の AUTO_INCREMENT 属性は、ターゲットデータベース列に移行されません。• バイナリログが標準のブロックストレージに保存されている場合の変更のキャプチャはサポートされて

いません。たとえば、バイナリログが Amazon S3 に保存されていると、CDC は機能しません。• AWS DMS は、デフォルトで InnoDB ストレージエンジンを使用してターゲットテーブルを作成しま

す。InnoDB 以外のストレージエンジンを使用する必要がある場合、テーブルを手動で作成し、「DoNothing」モードを使用してそのテーブルに移行する必要があります。

• Aurora MySQL リードレプリカを AWS DMS のソースとして使用することはできません。• 全ロード時に MySQL 互換ソースが停止している場合、AWS DMS タスクはエラーで停止しません。タ

スクは正常に終了しますが、ターゲットとソースが同期しない可能性があります。この場合、タスクを再開するか、影響を受けたテーブルを再ロードしてください。

• 列の値の一部で作成されたインデックスは移行されません。たとえば、インデックス CREATE INDEXfirst_ten_chars ON customer (name(10)) はターゲットに作成されません。

• 場合によっては、タスクが LOB をレプリケートしないように設定されています (「SupportLobs」がタスク設定で false になっているか、タスクコンソールで「LOB 列を含めない」がオンになっている)。この場合、AWS DMS は MEDIUMBLOB、LONGBLOB、MEDIUMTEXT、および LONGTEXT 列をターゲットに移行しません。

BLOB、TINYBLOB、TEXT、および TINYTEXT 列は影響を受けず、ターゲットに移行されます。

AWS DMS のソースとして MySQL を使用する場合の追加の接続属性追加の接続属性を使用して MySQL ソースを設定できます。これらの設定は、ソースエンドポイントを作成するときに指定します。接続属性の設定が複数ある場合は、空白を追加せずにそれぞれをセミコロンで区切ります。

次の表に、Amazon RDS MySQL を AWS DMS のソースとして使用するときに使用できる追加の接続属性を示します。

名前 説明

eventsPollInterval データベースがアイドル状態のとき、バイナリログで新しい変更/イベントをチェックする頻度を指定します。

デフォルト値: 5

API バージョン API Version 2016-01-01135

Page 143: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドソースとしての MySQL の使用

名前 説明有効な値: 1 ~ 60

例: eventsPollInterval=5;

この例では、AWS DMS はバイナリログの変更を 5 秒ごと確認します。

initstmt=SET time_zone ソース MySQL データベースのタイムゾーンを指定します。タイムスタンプは、指定されたタイムゾーンに変換されます。

デフォルト値: UTC

有効な値: 使用するタイムゾーンの 3 文字の省略形(UTC、EST、GMT など)。有効な値は、ソース MySQL データベースをホストしているオペレーティングシステムにおけるタイムゾーンの標準の省略形です。

例: initstmt=SET time_zone=UTC;

afterConnectScript AWS DMS がエンドポイントに接続した直後に実行するスクリプトを指定します。移行タスクは、SQL ステートメントが成功するか失敗するかにかかわらず、引き続き実行されます。

有効な値: セミコロンで区切られた 1 つ以上の有効な SQL ステートメント。

例: afterConnectScript=ALTER SESSION SETCURRENT_SCHEMA = system;

CleanSrcMetadataOnMismatch 不一致が発生すると、レプリケーションインスタンスのテーブルメタデータ情報をクリーンアップして再作成します。たとえば、テーブルの DDL を変更すると、レプリケーションインスタンスにキャッシュされているテーブルに関する情報が変更される場合があります。Boolean.

デフォルト値: false

例: CleanSrcMetadataOnMismatch=false;

MySQL のソースデータ型次の表に、AWS DMS を使用する場合にサポートされる MySQL データベースのソースデータ型と、AWSDMS のデータ型からのデフォルトマッピングを示します。

ターゲットにマッピングされるデータ型を表示する方法については、使用しているターゲットエンドポイントのセクションを参照してください。

AWS DMS のデータ型の詳細については、「AWS Database Migration Service のデータ型 (p. 394)」を参照してください。

MySQL のデータ型 AWS DMS データ型

INT INT4

API バージョン API Version 2016-01-01136

Page 144: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドソースとしての MySQL の使用

MySQL のデータ型 AWS DMS データ型

MEDIUMINT INT4

BIGINT INT8

TINYINT INT1

DECIMAL(10) NUMERIC (10,0)

BINARY BYTES(1)

BIT BOOLEAN

BIT(64) BYTES(8)

BLOB BYTES(66535)

LONGBLOB BLOB

MEDIUMBLOB BLOB

TINYBLOB BYTES(255)

DATE DATE

DATETIME DATETIME

TIME STRING

TIMESTAMP DATETIME

YEAR INT2

DOUBLE REAL8

FLOAT REAL(DOUBLE)

サポートされる FLOAT の範囲は、-1.79E+308 ~-2.23E-308、0 および 2.23E-308 ~ 1.79E+308 です。

FLOAT 値がこの範囲に収まらない場合、FLOATデータ型を STRING データが型にマッピングします。

VARCHAR(45) WSTRING (45)

VARCHAR(2000) WSTRING (2000)

VARCHAR(4000) WSTRING (4000)

VARBINARY (4000) BYTES (4000)

VARBINARY (2000) BYTES (2000)

CHAR WSTRING

TEXT WSTRING (65535)

LONGTEXT NCLOB

MEDIUMTEXT NCLOB

API バージョン API Version 2016-01-01137

Page 145: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドSAP ASE のソースとしての使用

MySQL のデータ型 AWS DMS データ型

TINYTEXT WSTRING (255)

GEOMETRY BLOB

POINT BLOB

LINESTRING BLOB

POLYGON BLOB

MULTIPOINT BLOB

MULTILINESTRING BLOB

MULTIPOLYGON BLOB

GEOMETRYCOLLECTION BLOB

Note

値が「ゼロ」(つまり、0000-00-00) の DATETIME データ型と TIMESTAMP データ型が指定されている場合、レプリケーションタスクのターゲットデータベースにより DATETIME データ型とTIMESTAMP データ型で「ゼロ」値がサポートされていることを確認してください。サポートされていない場合、これらの値はターゲットで NULL として記録されます。

以下の MySQL データ型は全ロードでのみサポートされています。

MySQL のデータ型 AWS DMS データ型

ENUM STRING

SET STRING

SAP ASE データベースを AWS DMS のソースとして使用するAWS DMS を使用すると、SAP Adaptive Server Enterprise (ASE) データベース—旧 Sybase—からデータを移行できます。SAP ASE データベースをソースとして使用すると、サポートされている他のいずれかのAWS DMS ターゲットデータベースにデータを移行できます。AWS DMS は SAP ASE バージョン 12.5.3以上、および 15、15.5、15.7、16 以降をソースとしてサポートします。

SAP ASE データベースと AWS DMS の使用の詳細については、以下のセクションを参照してください。

トピック• SAP ASE データベースを AWS DMS のソースとして使用する場合の前提条件 (p. 139)• SAP ASE を AWS DMS のソースとして使用する場合の制限 (p. 139)• SAP ASE を AWS DMS のソースとして使用する場合に必要なアクセス許可 (p. 139)• 切り捨てポイントの削除 (p. 140)• SAP ASE のソースデータ型 (p. 140)

API バージョン API Version 2016-01-01138

Page 146: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドSAP ASE のソースとしての使用

SAP ASE データベースを AWS DMS のソースとして使用する場合の前提条件SAP ASE データベースを AWS DMS のソースにする場合、以下の操作を実行します。

• sp_setreptable コマンドを使用して、テーブルで SAP ASE レプリケーションを有効にします。• SAP ASE データベースの RepAgent を無効にします。• 非ラテン文字 (例: 中国語) 用に設定された、Microsoft Windows の Amazon EC2 インスタンスで、SAP

ASE バージョン 15.7 にレプリケートするには、ターゲットコンピュータに SAP ASE 15.7 SP121 をインストールします。

SAP ASE を AWS DMS のソースとして使用する場合の制限SAP ASE データベースを AWS DMS のソースとして使用する場合は、以下の制限が適用されます。

• SAP ASE データベースごとに AWS DMS タスクを 1 つのみ実行できます。• テーブルの名前を変更することはできません。たとえば、以下のコマンドは失敗します。

sp_rename 'Sales.SalesRegion', 'SalesReg;

• 列の名前を変更することはできません。たとえば、以下のコマンドは失敗します。

sp_rename 'Sales.Sales.Region', 'RegID', 'COLUMN';

• バイナリデータ型文字列の末尾にあるゼロ値は、ターゲットデータベースにレプリケートされるときに切り捨てられます。たとえば、ソーステーブル内の0x0000000000000000000000000100000100000000 はターゲットテーブルでは0x00000000000000000000000001000001 になります。

• データベースのデフォルトで NULL 値が許容されない場合、NULL 値を許容しない列を持つターゲットテーブルが AWS DMS により作成されます。そのため、全ロードまたは変更データキャプチャ (CDC)レプリケーションタスクに空の値が含まれる場合は、AWS DMS はエラーをスローします。以下のコマンドを使用してソースデータベースで NULL 値を許容することにより、これらのエラーを防ぐことができます。

sp_dboption database_name, 'allow nulls by default', 'true'gouse database_nameCHECKPOINTgo

• reorg rebuild インデックスコマンドはサポートされていません。• クラスターはサポートされません。

SAP ASE を AWS DMS のソースとして使用する場合に必要なアクセス許可SAP ASE データベースを AWS DMS タスクでソースとして使用するには、AWS DMS データベース定義で指定されたユーザーアカウントに、SAP ASE データベースのアクセス許可する必要があります。

• sa_role• replication_role

API バージョン API Version 2016-01-01139

Page 147: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドSAP ASE のソースとしての使用

• sybase_ts_role• SAP ASE ソースエンドポイントを作成したときに、[Automatically enable Sybase replication (Sybase

レプリケーションを自動的に有効にする)] オプション ([アドバンスド] タブ内) を有効にした場合は、AWS DMS にストアドプロシージャ sp_setreptable を実行するアクセス許可も付与します。

切り捨てポイントの削除タスクが開始すると、AWS DMS は、レプリケーションプロセスが進行中であることを示す$replication_truncation_point エントリを syslogshold システムビューで確立します。AWSDMS が動作している間、すでにターゲットにコピーされたデータの量に応じて、レプリケーション切り捨てポイントが定期的に進められます。

$replication_truncation_point エントリが確立されたら、データベースログが大きくなりすぎるのを防ぐため、AWS DMS タスクを実行したままにしておく必要があります。AWS DMS タスクを永続的に停止する場合、次のコマンドを発行してレプリケーション切り捨てポイントを削除します。

dbcc settrunc('ltm','ignore')

切り捨てポイントが削除されたら、AWS DMS タスクを再開することはできません。ログは、引き続きチェックポイントで自動的に切り捨てられます (自動切り捨てが設定されている場合)。

SAP ASE のソースデータ型AWS DMS を使用する際にサポートされる SAP ASE ソースデータ型と、AWS DMS のデータ型からのデフォルトマッピングについては、次のテーブルを参照してください。AWS DMS は、ユーザー定義型(UDT) のデータ型の列を持つ SAP ASE ソーステーブルをサポートしていません。このデータ型のレプリケートされた列は NULL として作成されます。

ターゲットにマッピングされるデータ型を表示する方法については、ターゲットエンドポイントの「データ移行のターゲット (p. 155)」セクションを参照してください。

AWS DMS のデータ型の詳細については、「AWS Database Migration Service のデータ型 (p. 394)」を参照してください。

SAP ASE のデータ型 AWS DMS データ型

BIGINT INT8

BINARY BYTES

BIT BOOLEAN

CHAR STRING

DATE DATE

DATETIME DATETIME

DECIMAL NUMERIC

DOUBLE REAL8

FLOAT REAL8

IMAGE BLOB

API バージョン API Version 2016-01-01140

Page 148: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドソースとしての MongoDB の使用

SAP ASE のデータ型 AWS DMS データ型

INT INT4

MONEY NUMERIC

NCHAR WSTRING

NUMERIC NUMERIC

NVARCHAR WSTRING

REAL REAL4

SMALLDATETIME DATETIME

SMALLINT INT2

SMALLMONEY NUMERIC

TEXT CLOB

TIME TIME

TINYINT UINT1

UNICHAR UNICODE CHARACTER

UNITEXT NCLOB

UNIVARCHAR UNICODE

VARBINARY BYTES

VARCHAR STRING

AWS DMS のソースとしての MongoDB の使用AWS DMS は、データベースソースとして MongoDB のバージョン 2.6.x 3.x をサポートします。

MongoDB を初めてお使いの方のために、以下の MongoDB データベースの概念について説明します。

• MongoDB のレコードは、フィールドと値のペアで構成されるデータ構造であるドキュメントです。フィールドの値には、他のドキュメント、配列、およびドキュメントの配列を含めることができます。ドキュメントは、リレーショナルデータベースのテーブルの行とほぼ同等です。

• MongoDB のコレクションはドキュメントのグループであり、リレーショナルデータベーステーブルとほぼ同等です。

• 内部的には、MongoDB ドキュメントは、ドキュメント内の各フィールドのタイプを含む、圧縮形式でバイナリ JSON (BSON) ファイルとして格納されます。各ドキュメントには一意の ID があります。

AWS DMS は、MongoDB をソースとして使用する場合、次の 2 つの移行モードをサポートしています。MongoDB エンドポイントを作成するときに、AWS マネジメントコンソールまたは追加の接続属性nestingLevel を使用して、[メタデータモード] パラメータを使用して移行モードを指定します。移行モードの選択は、以下に説明するように、ターゲットデータの結果の形式に影響します。

ドキュメントモード

ドキュメントモードでは、MongoDB ドキュメントは「現状のまま」移行されます。これは、その中のドキュメントデータが _doc という名前のターゲットテーブルの 1 つの列と見なされることを意

API バージョン API Version 2016-01-01141

Page 149: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドソースとしての MongoDB の使用

味します。MongoDB をソースエンドポイントとして使用する場合のデフォルト設定はドキュメントモードです。

たとえば、myCollection という MongoDB コレクションの次のドキュメントを考えてみましょう。

> db.myCollection.find(){ "_id" : ObjectId("5a94815f40bd44d1b02bdfe0"), "a" : 1, "b" : 2, "c" : 3 }{ "_id" : ObjectId("5a94815f40bd44d1b02bdfe1"), "a" : 4, "b" : 5, "c" : 6 }

ドキュメントモードを使用してデータをリレーショナルデータベーステーブルに移行した後、データは以下のように構成されます。MongoDB ドキュメントのデータフィールドは _doc 列に統合されています。

oid_id _doc

5a94815f40bd44d1b02bdfe0 { "a" : 1, "b" : 2, "c" : 3 }

5a94815f40bd44d1b02bdfe1 { "a" : 4, "b" : 5, "c" : 6 }

オプションで、追加の接続属性 extractDocID を true に設定して、プライマリキーとして動作する、"_id" という名前の 2 つ目の列を作成できます。変更データキャプチャ (CDC) を使用する場合、このパラメータを true に設定する必要があります。

ドキュメントモードでは、AWS DMS は、コレクションの作成と名前の変更を次のように管理します。• 新しいコレクションをソースデータベースに追加すると、AWS DMS はコレクションの新しいター

ゲットテーブルを作成し、すべてのドキュメントをレプリケートします。• ソースデータベースで既存のコレクションの名前を変更すると、AWS DMS はターゲットテーブル

の名前を変更しません。テーブルモード

テーブルモードでは、AWS DMS は MongoDB ドキュメントのそれぞれの最上位フィールドをターゲットテーブルの列に変換します。フィールドがネストされている場合、AWS DMS はネストされた値を 1 つの列にフラット化します。次に AWS DMS は、キーフィールドとデータ型をターゲットテーブルの列セットに追加します。

各 MongoDB ドキュメントについては、AWS DMS はターゲットテーブルの列セットに各キーとタイプを追加します。たとえば、テーブルモードを使用すると、AWS DMS は前の例を次のテーブルに移行します。

oid_id a b c

5a94815f40bd44d1b02bdfe01 2 3

5a94815f40bd44d1b02bdfe14 5 6

入れ子の値は、ドット区切りのキー名を含む列にフラット化されます。列は、ピリオドで区切られたフラット化されたフィールド名の連結と呼ばれます。たとえば、AWS DMS は、{"a" : {"b" :{"c": 1}}} のようなネストされた値のフィールドを持つ JSON ドキュメントを a.b.c. という名前の列に移行します。

ターゲット列を作成するため、AWS DMS は指定された数の MongoDB ドキュメントをスキャンして、すべてのフィールドおよびタイプのセットを作成します。次に AWS DMS は、このセットを使用

API バージョン API Version 2016-01-01142

Page 150: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドソースとしての MongoDB の使用

してターゲットテーブルの列を作成します。コンソールを使用して MongoDB ソースエンドポイントを作成または変更する場合は、スキャンするドキュメントの数を指定できます。デフォルト値は 1000ドキュメントです。AWS CLI を使用する場合は、追加の接続属性 docsToInvestigate を使用できます。

テーブルモードでは、AWS DMS は、ドキュメントとコレクションを次のように管理します。• 既存のコレクションにドキュメント (行) を追加する場合は、ドキュメントがレプリケートされま

す。ターゲットに存在しないフィールドがある場合、それらのフィールドはレプリケーションされません。

• ドキュメントを更新すると、更新されたドキュメントはレプリケートされます。ターゲットに存在しないフィールドがある場合、それらのフィールドはレプリケーションされません。

• ドキュメントの削除は完全にサポートされています。• CDC タスクの実行中に新しいコレクションを追加しても、ターゲット上に新しいテーブルは作成さ

れません。• コレクションの名前を変更することはできません。

AWS DMS のソースとして MongoDB を使用する場合に必要なアクセス許可MongoDB ソースを使用した AWS DMS の移行では、ルート権限を持つユーザーアカウントを作成するか、移行するデータベースに対してのみアクセス許可を持つユーザーを作成することができます。

次のコードは、ルートアカウントとなるユーザーを作成します。

use admindb.createUser( { user: "root", pwd: "password", roles: [ { role: "root", db: "admin" } ] })

次のコードは、移行するデータベースに対して最小限の権限を持つユーザーを作成します。

use database_to_migratedb.createUser( { user: "dms-user", pwd: "password", roles: [ { role: "read", db: "local" }, "read"] })

変更データキャプチャ (CDC) の MongoDB レプリカセットの設定MongoDB で継続的なレプリケーションまたは変更データキャプチャ (CDC) を使用するには、AWS DMSが MongoDB オペレーションログ (oplog) にアクセスする必要があります。レプリカセットが存在しない場合に oplog を作成するには、レプリカセットをデプロイする必要があります。詳細については、 MongoDB のドキュメントを参照してください。

ソースエンドポイントとして設定された MongoDB レプリカのプライマリまたはセカンダリノードを持つCDC を使用することができます。

API バージョン API Version 2016-01-01143

Page 151: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドソースとしての MongoDB の使用

スタンドアロンインスタンスをレプリカセットに変換するには

1. コマンドラインを使用して、mongo に接続します。

mongo localhost

2. mongod サービスを停止します。

service mongod stop

3. 次のコマンドを使用して、mongod を再起動します。

mongod --replSet "rs0" --auth -port port_number

4. 次のコマンドを使用して、レプリカセットへの接続をテストします。

mongo -u root -p password --host rs0/localhost:port_number --authenticationDatabase "admin"

ドキュメントモードの移行を実行する予定がある場合は、MongoDB エンドポイントを作成するときに_id as a separate column オプションを選択します。このオプションを選択すると、プライマリキーとして機能する _id という名前の 2 番目の列が作成されます。この 2 番目の列は、AWS DMS がデータ操作言語 (DML) オペレーションをサポートするために必要です。

AWS DMS のソースとして MongoDB を使用する場合のセキュリティ要件AWS DMS は、MongoDB で 2 つの認証方法をサポートしています。この 2 つの認証方法はパスワードを暗号化する際に使用するため、authType パラメータが PASSWORD に設定されているときにのみ使用されます。

MongoDB の認証方法は次のとおりです。

• MONOGODB-CR – MongoDB 2.x 認証を使用する場合のデフォルトです。• SCRAM-SHA-1 – MongoDB バージョン 3.x 認証を使用する場合のデフォルトです。

認証方法が指定されていない場合、AWS DMS は、MongoDB ソースのバージョンのデフォルトの方法を使用します。

MongoDB を AWS DMS のソースとして使用する場合の制限MongoDB を AWS DMS のソースとして使用する場合の制限は次のとおりです。

• _id オプションが別の列として設定されている場合、ID 文字列は 200 文字以下でなければなりません。• オブジェクト ID および配列タイプキーは、テーブルモードで oid および array というプレフィックス

が付けられた列に変換されます。

内部的には、これらの列はプレフィックスが付けられた名前で参照されます。これらの列を参照する変換ルールを AWS DMS で使用する場合は、プレフィックス列を指定する必要があります。たとえば、${_id} ではなく ${oid__id} を指定するか、${_addresses} ではなく${array__addresses} を指定します。

• コレクション名にドル記号 ($) を含めることはできません。• 前述のように、テーブルモードとドキュメントモードには制限があります。

API バージョン API Version 2016-01-01144

Page 152: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドソースとしての MongoDB の使用

AWS DMS のソースとして MongoDB を使用する場合の追加の接続属性ソースエンドポイントとして MongoDB を設定した場合、追加の接続属性を指定できます。追加の接続属性は、キーと値のペアで指定します。接続属性の設定が複数ある場合は、空白を追加せずにそれぞれをセミコロンで区切ります。

次のテーブルで、AWS DMS のソースとして MongoDB データベースを使用する場合に利用可能な追加の接続属性について説明します。

属性名 有効な値 デフォルト値と説明

authType NO

PASSWORD

PASSWORD – NO が選択される場合、ユーザー名およびパスワードのパラメータは使用されず、空白にできます。

authMechanismDEFAULT

MONGODB_CR

SCRAM_SHA_1

DEFAULT – MongoDB バージョン 2.x では、MONGODB_CR を使用します。MongoDB バージョン 3.x では、SCRAM_SHA_1 を使用します。この属性は、authType=NO の場合使用されません。

nestingLevel なし

1

NONE –ドキュメントモードを使用するには NONE を指定します。テーブルモードを使用するには、ONE を指定します。

extractDocID true

false

false – nestingLevel が NONE に設定されている場合、この属性を使用します。

docsToInvestigate0 より大きい正の整数。 1000 – nestingLevel が ONE に設定されている場合、この属性を使用します。

authSource 有効な MongoDB データベース名を指定してください。

admin – この属性は、authType=NO の場合使用されません。

Note

ターゲットエンドポイントが DocumentDB の場合は、次の MongoDB ソース用の追加接続属性が次のように設定されていることを確認してください。

• nestingLevel=NONE

• extractDocID=false

詳細については、「AWS Database Migration Service のターゲットとしての AmazonDocumentDB の使用 (p. 232)」を参照してください。

MongoDB のソースデータ型AWS DMS のソースとして MongoDB を使用するデータ移行では、ほとんどの MongoDB データ型がサポートされます。次のテーブルに、AWS DMS を使用する場合にサポートされる MongoDB のソースデータ型と、AWS DMS のデータ型からのデフォルトマッピングを示します。MongoDB データ型の詳細については、『MongoDB のドキュメント』の「BSON 型」を参照してください。

ターゲットにマッピングされるデータ型を表示する方法については、使用しているターゲットエンドポイントのセクションを参照してください。

API バージョン API Version 2016-01-01145

Page 153: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドAmazon S3 のソースとしての使用

AWS DMS のデータ型の詳細については、「AWS Database Migration Service のデータ型 (p. 394)」を参照してください。

MongoDB データ型 AWS DMS データ型

Boolean Bool

バイナリ BLOB

日付 日付

タイムスタンプ 日付

Int INT4

Long INT8

Double REAL8

String (UTF-8) CLOB

配列 CLOB

OID 文字列

REGEX CLOB

CODE CLOB

AWS DMS のソースとしての Amazon S3 の使用Amazon S3 を使用して AWS DMS バケットからデータを移行できます。これを行うには、1 つ以上のデータファイルを含む Amazon S3 バケットへのアクセス権を提供します。その S3 バケットに、データおよびそれらのファイルのデータのデータベーステーブル間のマッピングを記述する JSON ファイルを含めます。

全ロードを開始する前に、ソースデータファイルが Amazon S3 バケットに存在している必要があります。バケット名は、bucketName パラメータを使用して指定します。

ソースデータファイルはカンマ区切り値 (.csv) 形式である必要があります。次に示す命名規則を使用して名前を付けます。この規則では、schemaName がソーススキーマで、tableName がそのスキーマ内のテーブルの名前です。

/schemaName/tableName/LOAD001.csv/schemaName/tableName/LOAD002.csv/schemaName/tableName/LOAD003.csv...

たとえば、データファイルが次の Amazon S3 パスの mybucket にあるとします。

s3://mybucket/hr/employee

ロード時に、AWS DMS はソーススキーマ名が hr で、ソーステーブル名が employee であると想定します。

bucketName (必須) に加えて、オプションで bucketFolder パラメータを提供し、AWS DMS がAmazon S3 バケットでデータファイルを探す場所を指定します。前の例を続けると、bucketFolder をsourcedata に設定した場合、AWS DMS は次のパスでデータファイルを読み取ります。

API バージョン API Version 2016-01-01146

Page 154: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドAmazon S3 のソースとしての使用

s3://mybucket/sourcedata/hr/employee

追加の接続属性を使用して、列の区切り文字、行の区切り文字、null 値のインジケータ、およびその他のパラメータを指定できます。詳細については、「AWS DMS のソースとしての Amazon S3 の追加の接続属性 (p. 150)」を参照してください。

AWS DMS のソースとしての Amazon S3 用の外部テーブルの定義データファイルに加えて、外部テーブル定義も指定する必要があります。外部テーブル定義は、AWSDMS が Amazon S3 からのデータを解釈する方法について説明する JSON ドキュメントです。このドキュメントの最大サイズは 2 MB です。AWS DMS マネジメントコンソールを使用してソースエンドポイントを作成する場合、JSON を直接テーブルマッピングボックスに入力できます。AWS Command LineInterface (AWS CLI) または AWS DMS API を使用して移行を実行する場合は、JSON ファイルを作成して外部テーブル定義を指定することができます。

以下のものが含まれるデータファイルがあるとします。

101,Smith,Bob,2014-06-04,New York102,Smith,Bob,2015-10-08,Los Angeles103,Smith,Bob,2017-03-13,Dallas104,Smith,Bob,2017-03-13,Dallas

このデータ用の外部テーブル定義の例を次に示します。

{ "TableCount": "1", "Tables": [ { "TableName": "employee", "TablePath": "hr/employee/", "TableOwner": "hr", "TableColumns": [ { "ColumnName": "Id", "ColumnType": "INT8", "ColumnNullable": "false", "ColumnIsPk": "true" }, { "ColumnName": "LastName", "ColumnType": "STRING", "ColumnLength": "20" }, { "ColumnName": "FirstName", "ColumnType": "STRING", "ColumnLength": "30" }, { "ColumnName": "HireDate", "ColumnType": "DATETIME" }, { "ColumnName": "OfficeLocation", "ColumnType": "STRING", "ColumnLength": "20" } ], "TableColumnsTotal": "5"

API バージョン API Version 2016-01-01147

Page 155: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドAmazon S3 のソースとしての使用

} ]}

この JSON ドキュメントの要素は次のとおりです。

TableCount – ソーステーブルの数。この例では、テーブルは 1 つしかありません。

Tables – ソーステーブルあたり 1 つの JSON マップで構成される配列。この例では、マップは 1 つしかありません。各マップは以下の要素で構成されています。

• TableName – ソーステーブルの名前。• TablePath – AWS DMS が全データロードファイルを見つけることができる Amazon S3 バケット内の

パス。bucketFolder の値を指定した場合、この値がパスの先頭に付加されます。• TableOwner – このテーブルのスキーマ名。• TableColumns – 1 つ以上のマップの配列。それぞれがソーステーブルの列について説明します。

• ColumnName – ソーステーブルの列の名前。• ColumnType – 列のデータ型。有効なデータ型については、「Amazon S3 のソースデータ

型 (p. 151)」を参照してください。• ColumnLength – この列のバイト数。• ColumnNullable – (オプション) この列に NULL 値を含めることができる場合、true であるブール

値。• ColumnIsPk – (オプション) この列がプライマリキーの一部である場合、true であるブール値。

• TableColumnsTotal – 列のリクエストの総数。この番号は、TableColumns 配列内の要素数と一致している必要があります。

Note

DMS バージョン 3.1.4 以降では、S3 ソースデータには、TableName 列値の前の最初の列としてオプションのオペレーション列を含めることもできます。このオペレーション列は、フルロード時にデータを S3 ターゲットエンドポイントに移行するために使用されるオペレーション(INSERT) を識別します。存在する場合、この列の値は INSERT オペレーションキーワードの最初の文字 (I) です。指定されている場合、この列は通常、S3 ソースが以前の移行中に S3 ターゲットとして DMS によって作成されたことを示します。以前の DMS バージョンでは、この列は以前の DMS 全ロードから作成された S3 ソースデータにはありませんでした。この列を S3 ターゲットデータに追加すると、S3 ターゲットに書き込まれるすべての行の形式を、全ロード中に書き込まれたか、CDC ロード中に書き込まれたかにかかわらず一貫させることができます。S3 ターゲットデータをフォーマットするオプションの詳細については、「移行済み S3 データでのソース DB オペレーションの表示 (p. 207)」を参照してください。

ColumnLength は、以下のデータ型に適用されます。

• BYTE• STRING

他に指定がない限り、AWS DMS では ColumnLength がゼロであることが想定されます。

NUMERIC 型の列の場合は、精度とスケールを指定します。精度は数値の桁の合計数であり、スケールは小数点以下の桁数です。次に示すように、これには ColumnPrecision および ColumnScale 要素を使用します。

...

API バージョン API Version 2016-01-01148

Page 156: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドAmazon S3 のソースとしての使用

{ "ColumnName": "HourlyRate", "ColumnType": "NUMERIC", "ColumnPrecision": "5" "ColumnScale": "2" }...

Amazon S3 のソースとしての CDC と AWS DMS の使用AWS DMS による全データロードの後で、オプションでターゲットエンドポイントにデータの変更をレプリケートできます。これを行うには、Amazon S3 バケットに変更データキャプチャファイル (CDC ファイル) をアップロードします。AWS DMS は、アップロード時にこれらの CDC ファイルを読み取り、ターゲットエンドポイントで変更を適用します。

CDC ファイルは次のように名前が付けられます。

CDC00001.csvCDC00002.csvCDC00003.csv...

AWS DMS がファイルを見つけることができる場所を示すには、cdcPath パラメータを指定する必要があります。前の例を続けると、cdcPath を changedata に設定した場合、AWS DMS は次のパスで CDCファイルを読み取ります。

s3://mybucket/changedata

CDC ファイル内のレコードは次のような形式になります。

• Operation – 実行する変更オペレーション: INSERT または I、UPDATE または U、DELETE または D。これらのキーワードと文字値では大文字と小文字は区別されません。

Note

AWS DMS バージョン 3.1.4 以降では、DMS は各ロードレコードに対して実行するオペレーシを 2 つの方法で識別できます。DMS は、レコードのキーワード値 (INSERT など) またはキーワードの先頭文字 (I など) からこれを実行できます。以前のバージョンでは、DMS は完全なキーワード値からのみロードオペレーションを認識しました。DMS の以前のバージョンでは、CDC データを記録するために完全なキーワード値が書き込まれていました以前のバージョンでは、キーワード initial のみを使用して、S3 ターゲットにオペレーション値を書き込みました。両方の形式を認識することにより、S3 ソースデータを作成するためのオペレーション列の記述方法に関係なく、DMS はオペレーションを処理できます。このアプローチでは、laterf 移行のソースとして S3 ターゲットデータを使用できますこのアプローチでは、後の S3 ソースのオペレーション列に表示されるキーワードの初期値の形式を変更する必要はありません。

• テーブル名 – ソーステーブルの名前。• スキーマ名 – ソーススキーマの名前。• データ – 変更するデータを表す 1 つまたは複数の列。

employee という名前のテーブルの CDC ファイルの例を次に示します。

INSERT,employee,hr,101,Smith,Bob,2014-06-04,New YorkUPDATE,employee,hr,101,Smith,Bob,2015-10-08,Los AngelesUPDATE,employee,hr,101,Smith,Bob,2017-03-13,DallasDELETE,employee,hr,101,Smith,Bob,2017-03-13,Dallas

API バージョン API Version 2016-01-01149

Page 157: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドAmazon S3 のソースとしての使用

AWS DMS のソースとして Amazon S3 を使用する場合の前提条件Amazon S3 を AWS DMS のソースとして使用する場合、ソース S3 バケットはデータを移行する DMS レプリケーションインスタンスと同じ AWS リージョンにある必要があります。また、移行に使用する AWSアカウントには、ソースバケットへの読み取りアクセス権も必要です。

移行タスクを作成するために使用されるユーザーアカウントに割り当てられる AWS Identity and AccessManagement (IAM) ロールは、次の一連のアクセス許可が必要です。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::mybucket*" ] }, { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::mybucket*" ] } ]}

AWS DMS のソースとしての Amazon S3 の追加の接続属性追加の接続属性として次のオプションを指定できます。

オプション 説明

bucketFolder (オプション) S3 バケットのフォルダ名。この属性を指定すると、ソースデータファイルおよび CDC ファイルがパス bucketFolder/schemaName/tableName/ から読み取られます。この属性が指定されない場合、使用されるパスは schemaName/tableName/ となります。以下に例を示します。

bucketFolder=testFolder;

bucketName S3 バケットの名前。以下に例を示します。

bucketName=buckettest;

cdcPath 変更データキャプチャ (CDC) ファイルの場所。タスクで変更データをキャプチャする場合、この属性が必須です。それ以外の場合はオプションです。cdcPath が存在する場合、AWS DMS はこのパスから CDC ファイルを読み取り、データ変更をターゲットエンドポイントにレプリケートします。詳細については、「Amazon S3 のソースとしての CDC と AWS DMS の使用 (p. 149)」を参照してください。以下に例を示します。

API バージョン API Version 2016-01-01150

Page 158: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドAmazon S3 のソースとしての使用

オプション 説明cdcPath=dataChanges;

csvDelimiter ソースファイル内の列を分離するために使用される区切り文字。デフォルトではカンマを使用します。以下に例を示します。

csvDelimiter=,;

csvRowDelimiter ソースファイル内の行を分離するために使用される区切り文字。デフォルトでは、改行 (\n) です。以下に例を示します。

csvRowDelimiter=\n;

externalTableDefinitionAWS DMS が移行中に Amazon S3 バケットのデータを解釈する方法を説明する JSON オブジェクト。詳細については、「AWS DMS のソースとしてのAmazon S3 用の外部テーブルの定義 (p. 147)」を参照してください。以下に例を示します。

externalTableDefinition=json_object;

ignoreHeaderRows この値を 1 に設定すると、AWS DMS は .csv ファイルの最初の行ヘッダーを無視します。値が 1 の場合は機能が有効になり、値が 0 の場合は機能が無効になります。デフォルトは 0 です。

ignoreHeaderRows=1;

rfc4180 この値を true あるいは y に設定する場合、先頭の二重引用符にはそれぞれ終了の二重引用符が続く必要があります。このフォーマットは、RFC 4180 に準拠しています。この値を false に設定すると、文字列リテラルはターゲットにそのままコピーされます。この場合、区切り文字 (行または列) はフィールドの末尾を表します。したがって、区切り文字は値の末尾を示すため、これを文字列の一部とすることはできません。

デフォルト: true。

有効な値: true、false、y、n

例:

rfc4180=false;

Amazon S3 のソースデータ型AWS DMS のソースとして Amazon S3 を使用するデータ移行では、Amazon S3 から AWS DMS データ型にデータをマッピングする必要があります。詳細については、「AWS DMS のソースとしての Amazon S3用の外部テーブルの定義 (p. 147)」を参照してください。

ターゲットにマッピングされるデータ型を表示する方法については、使用しているターゲットエンドポイントのセクションを参照してください。

AWS DMS のデータ型の詳細については、「AWS Database Migration Service のデータ型 (p. 394)」を参照してください。

以下の AWS DMS データ型はソースとして Amazon S3 で使用されます。

• BYTE – ColumnLength が必要です。詳細については、「AWS DMS のソースとしての Amazon S3 用の外部テーブルの定義 (p. 147)」を参照してください。

• DATE

API バージョン API Version 2016-01-01151

Page 159: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドIBM Db2 LUW をソースとして使用する

• TIME• DATETIME• TIMESTAMP• INT1• INT2• INT4• INT8• NUMERIC – ColumnPrecision および ColumnScale が必要です。詳細については、「AWS DMS の

ソースとしての Amazon S3 用の外部テーブルの定義 (p. 147)」を参照してください。• REAL4• REAL8• STRING – ColumnLength が必要です。詳細については、「AWS DMS のソースとしての Amazon S3

用の外部テーブルの定義 (p. 147)」を参照してください。• UINT1• UINT2• UINT4• UINT8• BLOB• CLOB• BOOLEAN

AWS DMS のソースとして IBM Db2 for Linux、Unix、および Windows データベース (Db2 LUW) を使用するAWS Database Migration Service (AWS DMS) を使用して、IBM Db2 for Linux、Unix、および Windows(Db2 LUW) データベースから、サポートされているすべてのターゲットデータを移行できます。AWSDMS は、次の Db2 LUW バージョンを移行ソースとしてサポートしています。

• バージョン 9.7 とすべての Fix Pack がサポートされています。• バージョン 10.1 とすべての Fix Pack がサポートされています。• Version 10.5 と Fix Pack 5 を除くすべての Fix Pack がサポートされています。• バージョン 11.1 とすべての Fix Pack がサポートされています。

Secure Sockets Layer (SSL) を使用して、Db2 LUW エンドポイントとレプリケーションインスタンスとの接続を暗号化できます。SSL を使用するには、AWS DMS エンジンバージョン 2.4.2 以降が必要です。Db2 LUW エンドポイントで SSL を使用する方法の詳細については、「AWS Database MigrationService で SSL を使用する (p. 49)」を参照してください。

AWS DMS のソースとして Db2 LUW を使用する場合の前提条件Db2 LUW データベースをソースとして使用する前に、次の前提条件が必要です。

変更データキャプチャ (CDC) とも呼ばれる継続的なレプリケーションを有効にするには、次を実行します。

• データベースを AWS DMS で変更をキャプチャするために必要となる復元可能に設定します。データベース設定パラメータの LOGARCHMETH1 および LOGARCHMETH2 のいずれかまたは両方が ON に設定されている場合、データベースは回復可能です。

• ユーザーアカウントに次のアクセス権限を付与します。

API バージョン API Version 2016-01-01152

Page 160: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドIBM Db2 LUW をソースとして使用する

SYSADM または DBADM

DATAACCESS

Db2 LUW を AWS DMS のソースとして使用する場合の制限AWS DMS は、クラスター化データベースをサポートしていません。ただし、クラスターの各エンドポイントに個別の Db2 LUW を定義することができます。詳細については、Db2 LUW ドキュメントを参照してください。

継続的なレプリケーション (CDC) を使用する場合は、次の制限が適用されます。

• 複数のパーティションを持つテーブルが切り捨てられると、AWS DMS コンソールに表示される DDL イベントの数は、パーティションの数に等しくなります。これは、Db2 LUW がパーティションごとに個別の DDL を記録するためです。

• 次の DDL アクションは、分割されたテーブルではサポート外です。• ALTER TABLE ADD PARTITION• ALTER TABLE DETACH PARTITION• ALTER TABLE ATTACH PARTITION

• DECFLOAT データ型はサポート外です。したがって、DECFLOAT 列への変更は、継続的なレプリケーション中は無視されます。

• RENAME COLUMN ステートメントはサポート外です。• 多次元クラスタリング (MDC) テーブルの更新を実行すると、それぞれの更新は AWS DMS コンソール

に INSERT + DELETE として表示されます。• タスクの設定 [レプリケーションに LOB 列を含める] が有効でない場合、LOB 列を持つテーブルは、継

続的なレプリケーション中に中断されます。• 監査テーブルオプションが有効な場合、監査テーブルの最初のタイムスタンプレコードは NULL になり

ます。• テーブルを変更するオプションを有効にすると、テーブルの最初のタイムスタンプレコードはゼロにな

ります (1970-01-01 00:00:00.000000)。• Db2 LUW バージョン 10.5 以上の場合: 行外に格納されたデータを含む可変長文字列は無視されます。

この制限は、行サイズを拡張して作成されたテーブルにのみ適用されます。

AWS DMS のソースとして Db2 LUW を使用する場合の追加の接続属性追加の接続属性を使用して Db2 LUW ソースを設定できます。これらの設定は、ソースエンドポイントを作成するときに指定します。接続属性の設定が複数ある場合は、空白を追加せずにそれぞれをセミコロンで区切ります。

次の表に、Db2 LUW でソースとして使用できる追加の接続属性を示します。

名前 説明

CurrentLSN 継続的なレプリケーション (CDC) では、CurrentLSN を使用してレプリケーションを開始するログシーケンス番号(LSN) を指定します。

MaxKBytesPerRead 読み取りあたりの最大バイト数。NUMBER 値です。デフォルトは 64 KB です。

API バージョン API Version 2016-01-01153

Page 161: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドIBM Db2 LUW をソースとして使用する

名前 説明

SetDataCaptureChanges 継続的なレプリケーション (CDC) を BOOLEAN 値として有効にします。デフォルトは true です。

IBM Db2 LUW のソースデータ型Db2 LUW を AWS DMS のソースとして使用するデータ移行では、ほとんどの Db2 LUW データ型がサポートされます。次の表に、AWS DMS を使用する場合にサポートされる Db2 LUW のソースデータ型と、AWS DMS のデータ型からのデフォルトマッピングを示します。Db2 LUW データ型の詳細については、「Db2 LUW のドキュメント」を参照してください。

ターゲットにマッピングされるデータ型を表示する方法については、使用しているターゲットエンドポイントのセクションを参照してください。

AWS DMS のデータ型の詳細については、「AWS Database Migration Service のデータ型 (p. 394)」を参照してください。

Db2 LUW データ型 AWS DMS データ型

INTEGER INT4

SMALLINT INT2

BIGINT INT8

DECIMAL (p,s) NUMERIC (p,s)

FLOAT REAL8

DOUBLE REAL8

REAL REAL4

DECFLOAT (p) 精度が 16 の場合は REAL8 で、精度が 34 の場合は STRING

GRAPHIC (n) WSTRING、長さが 0 より大きく 127 以下の 2 バイト文字の固定長グラフィック文字列用

VARGRAPHIC (n) WSTRING、長さが 0 より大きく 16,352 以下の 2バイト文字の可変長グラフィック文字列用

LONG VARGRAPHIC (n) CLOB、長さが 0 より大きく 16,352 以下の 2 バイト文字の可変長グラフィック文字列用

CHARACTER (n) STRING、長さが 0 より大きく 255 以下の 2 バイト文字の固定長文字列用

VARCHAR(n) STRING、長さが 0 より大きく 32,704 以下の 2 バイト文字の可変長文字列用

LONG VARCHAR (n) CLOB、長さが 0 より大きく 32,704 以下の 2 バイト文字の可変長文字列用

CHAR (n) FOR BIT DATA BYTES

VARCHAR (n) FOR BIT DATA BYTES

API バージョン API Version 2016-01-01154

Page 162: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドデータ移行のターゲット

Db2 LUW データ型 AWS DMS データ型

LONG VARCHAR FOR BIT DATA BYTES

DATE DATE

TIME TIME

TIMESTAMP DATETIME

BLOB (n) BLOB

最大長は 2,147,483,647 バイト

CLOB (n) CLOB

最大長は 2,147,483,647 バイト

DBCLOB (n) CLOB

最大サイズは 1,073,741,824 の 2 バイト文字

XML CLOB

データ移行のターゲットAWS Database Migration Service (AWS DMS) では、最もよく利用されているデータベースの多くをデータレプリケーションのターゲットとして使用できます。ターゲットには、Amazon Elastic Compute Cloud(Amazon EC2) インスタンス、Amazon Relational Database Service (Amazon RDS) インスタンス、またはオンプレミスデータベースを使用できます。

データベースには次のものが含まれます。

オンプレミスおよび Amazon EC2 インスタンスデータベース

• Enterprise、Standard、Standard One、および Standard Two エディションの Oracle バージョン10g、11g、12c、18c。

Note

ターゲットとして Oracle バージョン 18c のサポートは、AWS DMS バージョン 3.3.0 以降で利用できます。

• Microsoft SQL Server バージョン 2005、2008、2008R2、2012、2014、および2017。Enterprise、Standard、Workgroup、および Developer エディションがサポートされます。Webおよび Express エディションは AWS DMS ではサポートされていません。

• MySQL バージョン 5.5、5.6、5.7.• MariaDB (MySQL 互換データターゲットとしてサポート) バージョン 10.0.24 から

10.0.28、10.1、10.2、10.3。

Note

ターゲットとしての MariaDB のサポートは、MySQL がサポートされているすべての AWSDMS バージョンで利用できます。

• PostgreSQL バージョン 9.4 以降 (バージョン 9.x 用)、10.x、11.x。

API バージョン API Version 2016-01-01155

Page 163: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドデータ移行のターゲット

Note

PostgreSQL バージョン 11.x は AWS DMS バージョン 3.3.0 以降でのみターゲットとしてサポートされています。PostgreSQL バージョン 9.4 以降 (バージョン 9.x 用) および 10.x を任意の DMS バージョンのターゲットとして使用できます。

• SAP Adaptive Server Enterprise (ASE) バージョン 15、15.5、15.7、16 以降。

Amazon RDS インスタンスのデータベース、Amazon Redshift、Amazon S3、AmazonDynamoDB、Amazon Elasticsearch Service、Amazon Kinesis Data Streams、および AmazonDocumentDB

• Oracle バージョン 11g (バージョン 11.2.0.3.v1 以降) 向け Amazon RDS およびEnterprise、Standard、Standard One、Standard Two エディション向け 12c、18c。

Note

ターゲットとして Oracle バージョン 18c のサポートは、AWS DMS バージョン 3.3.0 以降で利用できます。

• Amazon RDS for Microsoft SQL Server バージョン 2008R2、2012、2014、および2017。Enterprise、Standard、Workgroup、および Developer エディションがサポートされます。Webおよび Express エディションは AWS DMS ではサポートされていません。

• MySQL バージョン 5.5、5.6、5.7 向け Amazon RDS。• MariaDB (MySQL 互換データターゲットとしてサポート) バージョン 10.0.24 から

10.0.28、10.1、10.2、10.3。

Note

ターゲットとしての MariaDB のサポートは、MySQL がサポートされているすべての AWSDMS バージョンで利用できます。

• PostgreSQL バージョン 9.4 以降 (バージョン 9.x 用)、10.x、11.x。

Note

PostgreSQL バージョン 11.x は AWS DMS バージョン 3.3.0 以降でのみターゲットとしてサポートされています。PostgreSQL バージョン 9.4 以降 (バージョン 9.x 用) および 10.x を任意の DMS バージョンのターゲットとして使用できます。

• MySQL と互換性がある Amazon Aurora。• PostgreSQL との互換性がある Amazon Aurora。• Amazon Redshift。• Amazon S3。• Amazon DynamoDB。• Amazon Elasticsearch Service。• Amazon Kinesis Data Streams。• Amazon DocumentDB (MongoDB 互換)。

Note

AWS DMS は、以下のターゲットエンドポイントタイプについては、クロスリージョンの移行をサポートしていません。

• Amazon DynamoDB• Amazon Elasticsearch Service

API バージョン API Version 2016-01-01156

Page 164: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドOracle のターゲットとしての使用

• Amazon Kinesis Data Streams

トピック• AWS Database Migration Service のターゲットとしての Oracle データベースの使用 (p. 157)• AWS Database Migration Service のターゲットとしての Microsoft SQL Server データベースの使

用 (p. 162)• AWS Database Migration Service のターゲットとしての PostgreSQL データベースの使用 (p. 166)• AWS Database Migration Service のターゲットとしての MySQL 互換データベースの使用 (p. 169)• AWS Database Migration Service のターゲットとしての Amazon Redshift データベースの使

用 (p. 174)• AWS Database Migration Service のターゲットとしての SAP ASE データベースの使用 (p. 185)• AWS Database Migration Service のターゲットとしての Amazon S3 の使用 (p. 187)• AWS Database Migration Service のターゲットとしての Amazon DynamoDB データベースの使

用 (p. 208)• AWS Database Migration Service のターゲットとしての Amazon Kinesis Data Streams の使

用 (p. 222)• AWS Database Migration Service のターゲットとしての Amazon Elasticsearch Service クラスターの

使用 (p. 229)• AWS Database Migration Service のターゲットとしての Amazon DocumentDB の使用 (p. 232)

AWS Database Migration Service のターゲットとしての Oracle データベースの使用AWS DMS を使用して別の Oracle データベースまたはサポートされている他のいずれかのデータベースから、Oracle データベースターゲットにデータを移行できます。Secure Sockets Layer (SSL) を使用して、Oracle エンドポイントとレプリケーションインスタンスとの接続を暗号化できます。Oracle エンドポイントで SSL を使用する方法の詳細については、「AWS Database Migration Service で SSL を使用する (p. 49)」を参照してください。

AWS DMS では、オンプレミスおよび EC2 インスタンスにおいて、Enterprise、Standard、StandardOne、および Standard Two エディションの Oracle バージョン 10g、11g、12c、および 18c がターゲットとしてサポートされています。AWS DMS では、Amazon RDS インスタンスデータベース用のEnterprise、Standard、Standard One、および Standard Two エディションの Oracle バージョン 11g(バージョン 11.2.0.3.v1 以降) 12c、および 18c がサポートされています。

Note

ターゲットとして Oracle バージョン 18c のサポートは、AWS DMS バージョン 3.3.0 以降で利用できます。

Oracle をターゲットとして使用するときは、ターゲット接続に使用されるスキーマまたはユーザーにデータを移行することを前提とします。別のスキーマにデータを移行する場合は、スキーマ変換を使用します。たとえば、ターゲットエンドポイントがユーザー RDSMASTER に接続しており、ユーザー PERFDATAから PERFDATA に移行したいとします。この場合、次のように変換を作成します。

{ "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "rename", "rule-target": "schema",

API バージョン API Version 2016-01-01157

Page 165: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドOracle のターゲットとしての使用

"object-locator": { "schema-name": "PERFDATA"},"value": "PERFDATA"}

また、ソースのエンドポイントも Oracle である場合、すべての既存のテーブルあるいはインデックステーブルスペースの割り当てはターゲットで保持されます。ソースのエンドポイントが Oracle 以外の場合には、デフォルトのテーブルおよびインデックステーブルスペースがターゲットで使用されます。テーブルとインデックスを別のテーブルとインデックスの名前空間に移行する場合は、テーブルスペース変換を使用してこれを実行します。たとえば、Oracle ソース内の一部のテーブルスペースに割り当てられたINVENTORY スキーマに一連のテーブルがあるとします。移行については、このすべてのテーブルをターゲットの単一の INVENTORYSPACE テーブルスペースに割り当てるとします。この場合、次のように変換を作成します。

{ "rule-type": "transformation", "rule-id": "3", "rule-name": "3", "rule-action": "rename", "rule-target": "table-tablespace", "object-locator": { "schema-name": "INVENTORY", "table-name": "%", "table-tablespace-name": "%" }, "value": "INVENTORYSPACE"}

変換の詳細については、「 JSON を使用するテーブルマッピングによりテーブル選択および変換を指定する (p. 291)」を参照してください。

AWS DMS のターゲットとしての Oracle データベースの使用の詳細については、以下のセクションを参照してください。

トピック• AWS Database Migration Service のターゲットとして Oracle を使用する場合の制限 (p. 158)• ターゲットとして Oracle を使用する場合に必要なユーザーアカウント権限 (p. 159)• AWS Database Migration Service のターゲットとしての Oracle データベースの設定 (p. 160)• AWS DMS のターゲットとして Oracle を使用する場合の追加の接続属性 (p. 160)• Oracle のターゲットデータ型 (p. 161)

AWS Database Migration Service のターゲットとして Oracle を使用する場合の制限データ移行のターゲットとして Oracle を使用する場合の制限は、以下のとおりです。

• AWS DMS は、ターゲット Oracle データベースにスキーマを作成しません。必要なすべてのスキーマをターゲット Oracle データベースで作成する必要があります。Oracle ターゲットのスキーマ名がすでに存在している必要があります。ソーススキーマのテーブルは、AWS DMS がターゲットインスタンスへの接続に使用するユーザーまたはスキーマにインポートされます。複数のスキーマを移行するには、複数のレプリケーションタスクを作成します。

• AWS DMS では、テーブルに INDEXTYPE CONTEXT を使用する場合に Use direct path fullload オプションがサポートされていません。回避策として、配列ロードを使用できます。

API バージョン API Version 2016-01-01158

Page 166: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドOracle のターゲットとしての使用

• バッチ最適化適用オプションでは、差分変更テーブルへのロードに直接パスが使用されるため、XML タイプはサポートされていません。回避策として、トランザクション適用モードを使用できます。

ターゲットとして Oracle を使用する場合に必要なユーザーアカウント権限Oracle ターゲットを AWS Database Migration Service タスクで使用するには、Oracle データベースに次の権限を付与します。AWS DMS への Oracle データベース定義で指定されたユーザーアカウントにこの権限を付与します。

• SELECT ANY TRANSACTION• V$NLS_PARAMETERS での SELECT• V$TIMEZONE_NAMES での SELECT• ALL_INDEXES での SELECT• ALL_OBJECTS での SELECT• DBA_OBJECTS での SELECT• ALL_TABLES での SELECT• ALL_USERS での SELECT• ALL_CATALOG での SELECT• ALL_CONSTRAINTS での SELECT• ALL_CONS_COLUMNS での SELECT• ALL_TAB_COLS での SELECT• ALL_IND_COLUMNS での SELECT• DROP ANY TABLE• SELECT ANY TABLE• INSERT ANY TABLE• UPDATE ANY TABLE• CREATE ANY VIEW• DROP ANY VIEW• CREATE ANY PROCEDURE• ALTER ANY PROCEDURE• DROP ANY PROCEDURE• CREATE ANY SEQUENCE• ALTER ANY SEQUENCE• DROP ANY SEQUENCE

上記の権限は、以下に指定された要件のために付与します。

• 特定のテーブルリストを使用するには、レプリケートされたすべてのテーブルに SELECT を付与し、ALTER も付与します。

• ユーザーがデフォルトテーブルスペースにテーブルを作成することを許可するには、GRANTUNLIMITED TABLESPACE 権限を付与します。

• ログオンのために、CREATE SESSION 権限を付与します。• 直接パスを使用している場合、LOCK ANY TABLE 権限を付与します。• 全ロード設定で [DROP and CREATE table] オプションまたは [TRUNCATE before loading] オプション

が選択されており、ターゲットテーブルスキーマが AWS DMS ユーザーのものと異なる場合、DROPANY TABLE 権限を付与します。

API バージョン API Version 2016-01-01159

Page 167: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドOracle のターゲットとしての使用

• ターゲットテーブルスキーマが AWS DMS ユーザーのものと異なる場合に変更を変更テーブルまたは監査テーブルに保存するには、CREATE ANY TABLE 権限と CREATE ANY INDEX 権限を付与します。

ターゲットデータベース上の AWS Database Migration Service に必要な読み取り権限

AWS DMS ユーザーアカウントには、以下の DBA テーブルの読み取り権限を付与する必要があります。

• DBA_USERS での SELECT• DBA_TAB_PRIVS での SELECT• DBA_OBJECTS での SELECT• DBA_SYNONYMS での SELECT• DBA_SEQUENCES での SELECT• DBA_TYPES での SELECT• DBA_INDEXES での SELECT• DBA_TABLES での SELECT• DBA_TRIGGERS での SELECT

必要な権限のいずれかを V$xxx に付与できない場合は、V_$xxx に付与します。

AWS Database Migration Service のターゲットとしての Oracleデータベースの設定データ移行ターゲットとして Oracle データベースを使用するには、AWS DMS に Oracle ユーザーアカウントを提供する必要があります。ユーザーアカウントには、「ターゲットとして Oracle を使用する場合に必要なユーザーアカウント権限 (p. 159)」で指定されているように、Oracle データベースでの読み取り/書き込み権限が必要です。

AWS DMS のターゲットとして Oracle を使用する場合の追加の接続属性追加の接続属性を使用して Oracle ターゲットを設定できます。これらの設定は、ターゲットエンドポイントを作成するときに指定します。接続属性の設定が複数ある場合は、空白を追加せずにそれぞれをセミコロンで区切ります。

次の表に、Oracle をターゲットとして使用するときに利用できる追加の接続属性を示します。

名前 説明

useDirectPathFullLoad 直接パスの完全ロードを使用します。これを指定して Oracleテーブルを一括ロードするための Oracle Cloud Infrastructure(OCI) 直接パスプロトコルを有効あるいは無効にします。

デフォルト値: Y

有効な値: Y/N

例: useDirectPathFullLoad=N

charLengthSemantics 列の長さのセマンティクスは、列の長さがバイト単位であるか文字数単位であるかを指定します。この値は CHAR に設定します。

API バージョン API Version 2016-01-01160

Page 168: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドOracle のターゲットとしての使用

名前 説明例: charLengthSemantics=CHAR

Oracle のターゲットデータ型AWS DMS で使用されるターゲット Oracle データベースでは、Oracle のほとんどのデータ型がサポートされます。以下の表に、AWS DMS を使用する場合にサポートされる Oracle のターゲットデータ型と、AWS DMS のデータ型からのデフォルトマッピングを示します。ソースからマッピングされるデータ型を表示する方法の詳細については、使用しているソースのセクションを参照してください。

AWS DMS データ型 Oracle のデータ型

BOOLEAN NUMBER (1)

BYTES RAW (長さ)

DATE DATETIME

TIME TIMESTAMP (0)

DATETIME TIMESTAMP (スケール)

INT1 NUMBER (3)

INT2 NUMBER (5)

INT4 NUMBER (10)

INT8 NUMBER (19)

NUMERIC NUMBER (p,s)

REAL4 FLOAT

REAL8 FLOAT

STRING date を指定: DATE

time を指定: TIMESTAMP

timestamp を指定: TIMESTAMP

timestamp_with_timezone を指定: TIMESTAMP WITH TIMEZONE

timestamp_with_local_timezone を指定: TIMESTAMP WITH LOCALTIMEZONE interval_year_to_month を指定: INTERVAL YEAR TOMONTH

interval_day_to_second を指定: INTERVAL DAY TO SECOND

長さ > 4000 の場合: CLOB

他のすべての場合: VARCHAR2 (長さ)

UINT1 NUMBER (3)

UINT2 NUMBER (5)

UINT4 NUMBER (10)

API バージョン API Version 2016-01-01161

Page 169: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての SQL Server の使用

AWS DMS データ型 Oracle のデータ型

UINT8 NUMBER (19)

WSTRING 長さ > 2000 の場合: NCLOB

他のすべての場合: NVARCHAR2 (長さ)

BLOB BLOB

AWS DMS でこのデータ型を使用する場合は、特定のタスク用に BLOBの使用を有効にする必要があります。BLOB データ型は、プライマリキーを含むテーブルでのみサポートされます。

CLOB CLOB

AWS DMS でこのデータ型を使用する場合は、特定のタスク用に CLOBの使用を有効にする必要があります。CDC 中、CLOB データ型は、プライマリキーを含むテーブルでのみサポートされます。

NCLOB NCLOB

AWS DMS でこのデータ型を使用する場合は、特定のタスク用にNCLOB の使用を有効にする必要があります。CDC 中、プライマリキーを含むテーブルでのみ NCLOB データ型がサポートされます。

XMLTYPE XMLTYPE ターゲットデータ型は、Oracle 間レプリケーションタスクにのみ関連しています。

ソースデータベースが Oracle の場合、ソースデータ型はそのままの状態で Oracle ターゲットにレプリケートされます。たとえば、ソースにおける XMLTYPE データ型は、ターゲットでは XMLTYPE データ型として作成されます。

AWS Database Migration Service のターゲットとしての Microsoft SQL Server データベースの使用AWS DMS を使用して、Microsoft SQL Server データベースにデータを移行できます。SQL Server データベースをターゲットとして使用すると、別の SQL Server データベースまたはサポートされている他のデータベースのいずれかからデータを移行できます。

オンプレミスデータベースと Amazon EC2 インスタンスデータベースの場合、 AWS DMS は SQLServer バージョン 2005、2008、2008R2、2012、2014、2016、2017 をターゲットとしてサポートします。Enterprise、Standard、Workgroup、および Developer エディションがサポートされます。Web および Express エディションは AWS DMS ではサポートされていません。

Amazon RDS インスタンスデータベースの場合、AWS DMS は SQL Server バージョン 2008R2、2012、2014、2016、2017 をターゲットとしてサポートします。Enterprise、Standard、Workgroup、および Developer エディションがサポートされます。Web および Express エディションは AWS DMS ではサポートされていません。

AWS DMS および SQL Server ターゲットデータベースを使用する方法の詳細については、以下を参照してください。

トピック• AWS Database Migration Service のターゲットとして SQL Server を使用する場合の制限 (p. 163)

API バージョン API Version 2016-01-01162

Page 170: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての SQL Server の使用

• AWS Database Migration Service のターゲットとして SQL Server を使用する場合のセキュリティ要件 (p. 163)

• AWS DMS のターゲットとして SQL Server を使用する場合の追加の接続属性 (p. 163)• Microsoft SQL Server のターゲットデータ型 (p. 164)

AWS Database Migration Service のターゲットとして SQLServer を使用する場合の制限AWS DMS のターゲットとして SQL Server データベースを使用する場合は、以下の制限が適用されます。

• 計算列を含む SQL Server ターゲットテーブルを手動で作成する場合、BCP 一括コピーユーティリティを使用する全ロードレプリケーションがサポートされません。全ロードレプリケーションを使用するには、コンソールの [Advanced] タブで [Use BCP for loading tables] オプションを無効にします。BCP の詳細な操作方法については、「Microsoft SQL Server ドキュメント」を参照してください。

• SQL Server 空間データ型 (GEOMETRY と GEOGRAPHY) を含むテーブルをレプリケートすると、挿入した空間参照識別子 (SRID) がすべて AWS DMS によりデフォルトの SRID に置き換えられます。デフォルトの SRID は、GEOMETRY は 0、GEOGRAPHY は 4326 です。

• 一時テーブルはサポートされていません。ターゲット上に手動で作成されている場合に、一時テーブルを移行すると、トランザクション適用モードのレプリケーションのみのタスクで動作することがあります。

AWS Database Migration Service のターゲットとして SQLServer を使用する場合のセキュリティ要件以下では、Microsoft SQL Server ターゲットと共に AWS DMS を使用する場合のセキュリティ要件について説明します。

• AWS DMS ユーザーアカウントには、接続先の SQL Server データベースに対する db_owner ユーザーロールが最低限必要です。

• SQL Server システム管理者は、すべての AWS DMS ユーザーアカウントにこのアクセス権限を付与する必要があります。

AWS DMS のターゲットとして SQL Server を使用する場合の追加の接続属性追加の接続属性を使用して SQL Server ターゲットを設定できます。これらの設定は、ターゲットエンドポイントを作成するときに指定します。接続属性の設定が複数ある場合は、空白を追加せずにそれぞれをセミコロンで区切ります。

次の表に、SQL Server がターゲットである場合に使用できる追加の接続属性を示します。

名前 説明

useBCPFullLoad BCP を使用して全ロードオペレーション用のデータを転送するには、この属性を使用します。 ターゲットテーブルに、ソーステーブル内に存在しない IDENTITY 列が含まれている場合、[use BCP for loading table (テーブルのロードに BCPを使用)] オプションを無効にする必要があります。

デフォルト値: Y

API バージョン API Version 2016-01-01163

Page 171: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての SQL Server の使用

名前 説明有効な値: Y/N

例: useBCPFullLoad=Y

BCPPacketSize BCP を使用したデータの転送に使用されるパケットの最大サイズ (バイト単位)。

デフォルト値: 16384

有効な値: 1 ~ 100000

例: BCPPacketSize=16384

controlTablesFileGroup AWS DMS 内部テーブルのファイルグループを指定します。レプリケーションタスクが開始されると、すべての内部 AWS DMS 制御テーブル (awsdms_apply_exception、awsdms_apply、awsdms_changes) が、指定したファイルグループで作成されます。

デフォルト値: 該当なし

有効な値: 文字列

例: controlTablesFileGroup=filegroup1  

ファイルグループを作成するコマンドの例を次に示します。

ALTER DATABASE replicate ADD FILEGROUP Test1FG1; GO ALTER DATABASE replicate ADD FILE (        NAME = test1dat5,        FILENAME = 'C:\temp\DATA\t1dat5.ndf',        SIZE = 5MB,        MAXSIZE = 100MB,        FILEGROWTH = 5MB    )    TO FILEGROUP Test1FG1;    GO

Microsoft SQL Server のターゲットデータ型以下の表に、AWS DMS を使用する場合にサポートされる Microsoft SQL Server のターゲットデータ型と、AWS DMS のデータ型からのデフォルトマッピングを示します。AWS DMS のデータ型の詳細については、「AWS Database Migration Service のデータ型 (p. 394)」を参照してください。

AWS DMS データ型 SQL Server のデータ型

BOOLEAN TINYINT

BYTES VARBINARY(長さ)

DATE SQL Server 2008 以降の場合、DATE を使用します。

それより前のバージョンでは、スケールが 3 以下の場合は DATETIMEを使用します。他のすべての場合は、VARCHAR (37) を使用します。

API バージョン API Version 2016-01-01164

Page 172: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての SQL Server の使用

AWS DMS データ型 SQL Server のデータ型

TIME SQL Server 2008 以降の場合、DATETIME2 (%d) を使用します。

それより前のバージョンでは、スケールが 3 以下の場合は DATETIMEを使用します。他のすべての場合は、VARCHAR (37) を使用します。

DATETIME SQL Server 2008 以降では、DATETIME2 (scale) を使用します。

それより前のバージョンでは、スケールが 3 以下の場合は DATETIMEを使用します。他のすべての場合は、VARCHAR (37) を使用します。

INT1 SMALLINT

INT2 SMALLINT

INT4 INT

INT8 BIGINT

NUMERIC NUMBER (p,s)

REAL4 REAL

REAL8 FLOAT

STRING 列が日付または時刻列の場合、次の操作を行います。

• SQL Server 2008 以降の場合、DATETIME2 を使用します。• それより前のバージョンでは、スケールが 3 以下の場合は

DATETIME を使用します。他のすべての場合は、VARCHAR (37) を使用します。

列が日付または時刻列ではない場合、VARCHAR (長さ) を使用します。

UINT1 TINYINT

UINT2 SMALLINT

UINT4 INT

UINT8 BIGINT

WSTRING NVARCHAR (長さ)

BLOB VARBINARY(最大)

IMAGE

AWS DMS でこのデータ型を使用する場合は、特定のタスク用に BLOBの使用を有効にする必要があります。AWS DMS では、プライマリキーを含むテーブルでのみ BLOB データ型がサポートされます。

CLOB VARCHAR(max)

AWS DMS でこのデータ型を使用する場合は、特定のタスク用に CLOBの使用を有効にする必要があります。CDC 中、AWS DMS はプライマリキーを含むテーブルでのみ CLOB データ型をサポートします。

API バージョン API Version 2016-01-01165

Page 173: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての PostgreSQL の使用

AWS DMS データ型 SQL Server のデータ型

NCLOB NVARCHAR(最大)

AWS DMS でこのデータ型を使用する場合は、特定のタスク用にNCLOB の使用を有効にする必要があります。CDC の実行中、AWSDMS ではプライマリキーを含むテーブルでのみ NCLOB データ型がサポートされます。

AWS Database Migration Service のターゲットとしての PostgreSQL データベースの使用AWS DMS を使用して、別の PostgreSQL データベースまたはサポートされている他のいずれかのデータベースから PostgreSQL データベースにデータを移行できます。ターゲットとしての PostgreSQL バージョン 9.4 以降 (9.x 用)、10.x、11.x は、これらのタイプのデータベースでサポートされています。

• オンプレミスのデータベース• EC2 インスタンスでのデータベース• Amazon RDS DB インスタンスでのデータベース• PostgreSQL との互換性を持つ Amazon Aurora DB インスタンスでのデータベース

Note

PostgreSQL バージョン 11.x は AWS DMS バージョン 3.3.0 以降でのみターゲットとしてサポートされています。PostgreSQL バージョン 9.4 以降 (バージョン 9.x 用) および 10.x を任意のDMS バージョンのターゲットとして使用できます。

AWS DMS は、全ロードフェーズでソースからターゲットにデータを移行するときに、テーブル手法によりテーブルを受け取ります。全ロードフェーズ中のテーブルの順序は保証されません。テーブル全ロードフェーズ中、および個々のテーブルのキャッシュしたトランザクションが適用されている間は、テーブルは同期されません。その結果、アクティブな参照整合性制約により、全ロードフェーズ中にタスクが失敗する可能性があります。

PostgreSQL では、外部キー (参照整合性制約) はトリガーを使用して実装されます。全ロードフェーズ中に、AWS DMS は各テーブルを一度に 1 つずつロードします。次のいずれかの方法を使用して、全ロード中に外部キーの制約を無効にすることを強くお勧めします。

• インスタンスからすべてのトリガーを一時的に無効にして、全ロードを終了します。• PostgreSQL では、session_replication_role パラメータを使用します。

特定の時間において、トリガーは origin、replica、always、または disabled のいずれかの状態になります。session_replication_role パラメータが replica に設定されている場合、replica 状態のトリガーのみがアクティブになり、呼び出されると実行されます。それ以外の場合、トリガーは非アクティブなままです。

PostgreSQL には、session_replication_role が設定されている場合でも、テーブルの切り捨てを防止するフェールセーフメカニズムが備わっています。これをトリガーを無効にする代わりに使用して、全ロードの完了を支援できます。これを行うには、ターゲットテーブルの準備モードを DO_NOTHING に設定しますそれ以外の場合、外部キーの制約があると DROP および TRUNCATE オペレーションは失敗します。

Amazon RDS では、パラメータグループを使用してこのパラメータの設定を管理できます。Amazon EC2で実行されている PostgreSQL インスタンスの場合、直接パラメータを設定できます。

API バージョン API Version 2016-01-01166

Page 174: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての PostgreSQL の使用

AWS DMS のターゲットとしての PostgreSQL データベースの使用の詳細については、以下のセクションを参照してください。

トピック• AWS Database Migration Service のターゲットとして PostgreSQL を使用する場合の制限 (p. 167)• AWS Database Migration Service のターゲットとして PostgreSQL データベースを使用する場合のセ

キュリティ要件 (p. 167)• AWS DMS のターゲットとして PostgreSQL を使用する場合の追加の接続属性 (p. 167)• PostgreSQL のターゲットデータ型 (p. 168)

AWS Database Migration Service のターゲットとしてPostgreSQL を使用する場合の制限AWS DMS のターゲットとして PostgreSQL データベースを使用する場合、以下の制限が適用されます。

• JSON データ型はネイティブ CLOB データ型に変換されます。• Oracle から PostgreSQL への移行で、Oracle の列に NULL 文字 (16 進数値 U + 0000) が含まれている場

合、AWS DMS は NULL 文字をスペース (16 進数値 U + 0020) に変換します。これは、PostgreSQL の制限によるものです。

AWS Database Migration Service のターゲットとしてPostgreSQL データベースを使用する場合のセキュリティ要件セキュリティ上の観点から、データ移行に使用されるユーザーアカウントは、ターゲットとして使用するPostgreSQL データベースにおける登録済みユーザーにする必要があります。

AWS DMS のターゲットとして PostgreSQL を使用する場合の追加の接続属性追加の接続属性を使用して PostgreSQL ターゲットを設定できます。これらの設定は、ターゲットエンドポイントを作成するときに指定します。接続属性の設定が複数ある場合は、空白を追加せずにそれぞれをセミコロンで区切ります。

以下の表に、AWS DMS のターゲットとして PostgreSQL を設定するときに使用できる追加の接続属性を示します。

名前 説明

maxFileSize PostgreSQL へのデータ転送に使用される .csv ファイルの最大サイズ (KB 単位) を指定します。

デフォルト値: 32768 KB (32 MB)

有効な値: 1 ~ 1048576

例: maxFileSize=512

executeTimeout PostgreSQL インスタンスのクライアントステートメントタイムアウト (秒単位) を設定します。デフォルト値は 60 秒です。

例: executeTimeout=100

API バージョン API Version 2016-01-01167

Page 175: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての PostgreSQL の使用

名前 説明

afterConnectScript=SETsession_replication_role='replica'

この属性を追加して、AWS DMS ですべての外部キーとユーザートリガーをバイパスします。このアクションにより、全ロードモードを使用するときに、データをバルクロードするためにかかる時間が大幅に減ります。

Note

Amazon Aurora PostgreSQL ターゲットの場合、設定 afterConnectScript は変更データキャプチャ(CDC) モードでのみ有効になります。

例: afterConnectScript=SETsession_replication_role='replica'

PostgreSQL のターゲットデータ型AWS DMS の PostgreSQL データベースエンドポイントでは、PostgreSQL データベースのほとんどのデータ型がサポートされています。以下の表に、AWS DMS を使用する場合にサポートされるPostgreSQL データベースのターゲットデータ型と、AWS DMS のデータ型からのデフォルトマッピングを示します。サポートされていないデータ型は、表の後にリストされています。

AWS DMS のデータ型の詳細については、「AWS Database Migration Service のデータ型 (p. 394)」を参照してください。

AWS DMS データ型 PostgreSQL のデータ型

BOOL BOOL

BYTES BYTEA

DATE DATE

TIME TIME

TIMESTAMP スケールが 0 ~ 6 の場合、TIMESTAMP を使用します。

スケールが 7 ~ 9 の場合、VARCHAR (37) を使用します。

INT1 SMALLINT

INT2 SMALLINT

INT4 INTEGER

INT8 BIGINT

NUMERIC DECIMAL (P,S)

REAL4 FLOAT4

REAL8 FLOAT8

STRING 長さが 1 ~ 21,845 の場合、VARCHAR (バイト単位の長さ) を使用します。

長さが 21,846 ~ 2,147,483,647 の場合、VARCHAR (65535) を使用します。

API バージョン API Version 2016-01-01168

Page 176: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての MySQL の使用

AWS DMS データ型 PostgreSQL のデータ型

UINT1 SMALLINT

UINT2 INTEGER

UINT4 BIGINT

UINT8 BIGINT

WSTRING 長さが 1 ~ 21,845 の場合、VARCHAR (バイト単位の長さ) を使用します。

長さが 21,846 ~ 2,147,483,647 の場合、VARCHAR (65535) を使用します。

BCLOB BYTEA

NCLOB TEXT

CLOB TEXT

Note

PostgreSQL ソースからレプリケートする場合、AWS DMS はユーザー定義のデータ型を含む列とは別に、すべての列に対して同じデータ型のターゲットテーブルを作成します。このような場合、データ型はターゲットで「character varying」として作成されます。

AWS Database Migration Service のターゲットとしての MySQL 互換データベースの使用AWS DMS を使用して、AWS DMS がサポートするソースデータエンジンのいずれかから、どの MySQL互換データベースにもデータを移行できます。オンプレミス MySQL 互換データベースに移行する場合、AWS DMS では、ソースエンジンが AWS エコシステム内に存在することが必要です。エンジンは、Amazon RDS、Amazon Aurora、Amazon S3 などの Amazon マネージド型サービス上に存在できます。または、エンジンは Amazon EC2 の自己マネージド型データベース上に存在していてもかまいません。

SSL を使用して、MySQL 互換のエンドポイントとレプリケーションインスタンスとの接続を暗号化できます。MySQL 互換のエンドポイントで SSL を使用する方法の詳細については、「AWS DatabaseMigration Service で SSL を使用する (p. 49)」を参照してください。

AWS DMS は MySQL のバージョン 5.5、5.6、5.7 と Aurora MySQL をサポートしています。さらに、AWS DMS は MariaDB のバージョン 10.0.24 から 10.0.28、10.1、10.2、10.3 をサポートしています。

AWS DMS のターゲットとして以下の MySQL 互換データベースを使用できます。

• MySQL Community Edition• MySQL Standard Edition• MySQL Enterprise Edition• MySQL Cluster Carrier Grade Edition• MariaDB Community Edition• MariaDB Enterprise Edition• MariaDB Column Store

API バージョン API Version 2016-01-01169

Page 177: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての MySQL の使用

• Amazon Aurora MySQL

Note

ソースストレージエンジン (MyISAM、MEMORY など) にかかわらず、AWS DMS によってデフォルトで InnoDB テーブルとして MySQL 互換のターゲットテーブルが作成されます。InnoDB以外のストレージエンジンを使用するテーブルが必要な場合は、手動でテーブルを MySQL 互換のターゲットで作成し、"Do Nothing" モードで移行できます。"Do Nothing" モードの詳細については、「全ロードタスク設定 (p. 264)」を参照してください。

AWS DMS のターゲットとしての MySQL 互換データベースの使用の詳細については、以下のセクションを参照してください。

トピック• AWS Database Migration Service のターゲットとしての任意の MySQL 互換データベースの使

用 (p. 170)• AWS Database Migration Service のターゲットとして MySQL 互換データベースを使用する場合の制

限 (p. 170)• AWS DMS のターゲットとして MySQL 互換データベースを使用する場合の追加の接続属性 (p. 171)• MySQL のターゲットデータ型 (p. 172)

AWS Database Migration Service のターゲットとしての任意のMySQL 互換データベースの使用MySQL 互換データベースを AWS DMS のターゲットとして使用し始める前に、次の前提条件を満たしていることを確認してください。

• MySQL 互換データベースに対して読み取り/書き込み権限を持つユーザーアカウントを AWS DMS に指定します。必要なアクセス権限を作成するには、以下のコマンドを実行します。

CREATE USER '<user acct>'@'%' IDENTIFIED BY '<user password>';GRANT ALTER, CREATE, DROP, INDEX, INSERT, UPDATE, DELETE, SELECT ON <schema>.* TO '<user acct>'@'%';GRANT ALL PRIVILEGES ON awsdms_control.* TO '<user acct>'@'%';

• 全ロード移行フェーズ中、ターゲットテーブルで外部キーを無効にする必要があります。全ロード中に MySQL 互換データベースで外部キーチェックを無効にするには、ターゲットエンドポイントの[Advanced] セクションで [Extra Connection Attributes] に次のコマンドを追加します。

initstmt=SET FOREIGN_KEY_CHECKS=0

• データベースパラメータ local_infile = 1 を設定して、AWS DMS がターゲットデータベースにデータをロードできるようにします。

AWS Database Migration Service のターゲットとして MySQL 互換データベースを使用する場合の制限ターゲットとして MySQL データベースを使用する場合、AWS DMS では以下のものがサポートされません。

API バージョン API Version 2016-01-01170

Page 178: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての MySQL の使用

• データ定義言語 (DDL) ステートメント: TRUNCATE PARTITION、DROP TABLE、RENAME TABLE。• ALTER TABLE <table_name> ADD COLUMN <column_name> ステートメントを使用して、テーブ

ルの先頭または中間に列を追加します。• ソーステーブルの LOB 列のみが更新されると、AWS DMS は対応するターゲット列を更新しません。

ターゲット LOB は、少なくとも他の 1 つの列が同じトランザクションで更新された場合にのみ更新されます。

• 全ロードタスク時に MySQL 互換ターゲットにデータをロードすると、AWS DMS はタスクログで重複するキーエラーを報告しません。

• 列の値を既存の値に更新すると、MySQL 互換データベースにより 0 rows affected 警告が返されます。この動作は技術的にはエラーではありませんが、他のデータベースエンジンによって状況が処理される方法とは異なります。たとえば、Oracle は 1 行の更新を実行します。MySQL 互換データベースの場合、AWS DMS は awsdms_apply_exceptions 制御テーブルにエントリが生成され、以下の警告がログ記録されます。

Some changes from the source database had no impact when applied tothe target database. See awsdms_apply_exceptions table for details.

AWS DMS のターゲットとして MySQL 互換データベースを使用する場合の追加の接続属性追加の接続属性を使用して MySQL 互換ターゲットを設定できます。これらの設定は、ターゲットエンドポイントを作成するときに指定します。接続属性の設定が複数ある場合は、空白を追加せずにそれぞれをセミコロンで区切ります。

以下の表は、AWS DMS の MySQL 互換ターゲットを作成するときに使用できる、追加の構成設定を示しています。

名前 説明

targetDbType ソーステーブルを移行するターゲット上の場所 (1 つのデータベースか複数のデータベースか) を指定します。

デフォルト値: MULTIPLE_DATABASES

有効な値: {SPECIFIC_DATABASE, MULTIPLE_DATABASES}

例: targetDbType=MULTIPLE_DATABASES

parallelLoadThreads データを MySQL 互換ターゲットデータベースにロードする際のパフォーマンスが向上します。データを MySQL 互換ターゲットデータベースにロードする際に使用するスレッドの数を指定します。スレッドごとに別個の接続が必要になるため、スレッド数を大きく設定するとデータベースのパフォーマンスに悪影響を生じる場合があります。

デフォルト値: 1

有効な値: 1 ~ 5

例: parallelLoadThreads=1

initstmt=SETFOREIGN_KEY_CHECKS=0

外部キーチェックを無効にします。

API バージョン API Version 2016-01-01171

Page 179: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての MySQL の使用

名前 説明

initstmt=SET time-zone ターゲット MySQL 互換データベースのタイムゾーンを指定します。

デフォルト値: UTC

有効な値: 使用するタイムゾーンの 3 ~ 4 文字の省略形。有効な値は、ターゲット MySQL 互換データベースをホストしているオペレーティングシステムにおけるタイムゾーンの標準の省略形です。

例: initstmt=SET time_zone=UTC

afterConnectScript=SETcharacter_set_connection='latin1'

MySQL 互換ターゲットが受け取ったステートメントを latin1文字セット (データベースのデフォルトでコンパイルされる文字セット) に変換する必要があることを指定します。このパラメータでは通常、UTF8 クライアントからの変換時にパフォーマンスが向上します。

maxFileSize MySQL 互換データベースへのデータ転送に使用される .csvファイルの最大サイズ (KB 単位) を指定します。

デフォルト値: 32768 KB (32 MB)

有効な値: 1 ~ 1048576

例: maxFileSize=512

CleanSrcMetadataOnMismatch 不一致が発生すると、レプリケーションインスタンスのテーブルメタデータ情報をクリーンアップして再作成します。たとえば、テーブルの DDL を変更すると、レプリケーションインスタンスにキャッシュされているテーブルに関する情報が変更される場合があります。Boolean.

デフォルト値: false

例: CleanSrcMetadataOnMismatch=false

MySQL のターゲットデータ型以下の表に、AWS DMS を使用する場合にサポートされる MySQL データベースのターゲットデータ型と、AWS DMS のデータ型からのデフォルトマッピングを示します。

AWS DMS のデータ型の詳細については、「AWS Database Migration Service のデータ型 (p. 394)」を参照してください。

AWS DMS データ型 MySQL のデータ型

BOOLEAN BOOLEAN

BYTES 長さが 1 〜 65,535 の場合、VARBINARY (長さ) を使用します。

長さが 65,536 〜 2,147,483,647 の場合、LONGLOB を使用します。

DATE DATE

API バージョン API Version 2016-01-01172

Page 180: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての MySQL の使用

AWS DMS データ型 MySQL のデータ型

TIME TIME

TIMESTAMP "スケールが 0 以上、6 以下の場合: DATETIME(Scale)

スケールが 7 以上、9 以下の場合: VARCHAR (37)"

INT1 TINYINT

INT2 SMALLINT

INT4 INTEGER

INT8 BIGINT

NUMERIC DECIMAL (p,s)

REAL4 FLOAT

REAL8 DOUBLE PRECISION

STRING 長さが 1 ~ 21,845 の場合、VARCHAR (長さ) を使用します。

長さが 21,846 ~ 2,147,483,647 の場合、LONGTEXT を使用します。

UINT1 UNSIGNED TINYINT

UINT2 UNSIGNED SMALLINT

UINT4 UNSIGNED INTEGER

UINT8 UNSIGNED BIGINT

WSTRING 長さが 1 ~ 32,767 の場合、VARCHAR (長さ) を使用します。

長さが 32,768 ~ 2,147,483,647 の場合、LONGTEXT を使用します。

BLOB 長さが 1 ~ 65,535 の場合、BLOB を使用します。

長さが 65,536 ~ 2,147,483,647 の場合、LONGBLOB を使用します。

長さが 0 の場合、LONGBLOB (LOB を完全にサポート) を使用します。

NCLOB 長さが 1 ~ 65,535 の場合、TEXT を使用します。

長さが 65,536 ~ 2,147,483,647 の場合、CHARACTER SET が ucs2 の LONGTEXT を使用します。

長さが 0 の場合、ucs2 が CHARACTER SET のLONGTEXT (LOB を完全にサポート) を使用します。

API バージョン API Version 2016-01-01173

Page 181: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon Redshift の使用

AWS DMS データ型 MySQL のデータ型

CLOB 長さが 1 ~ 65,535 の場合、TEXT を使用します。

長さが 65,536 ~ 2147483647 の場合、LONGTEXT を使用します。

長さが 0 の場合、LONGTEXT (LOB を完全にサポート) を使用します。

AWS Database Migration Service のターゲットとしての Amazon Redshift データベースの使用AWS Database Migration Service を使用して Amazon Redshift データベースにデータを移行できます。Amazon Redshift は、クラウド内での完全マネージド型、ペタバイトスケールのデータウェアハウスサービスです。ターゲットとして Amazon Redshift データベースを使用すると、サポートされている他のすべてのソースデータベースからデータを移行できます。

Amazon Redshift クラスターは、レプリケーションインスタンスと同じ AWS アカウントと同じ AWS リージョンに存在している必要があります。

Amazon Redshift へのデータベース移行中、AWS DMS はまずデータを Amazon S3 バケットに移動します。ファイルが Amazon S3 バケットに移動されると、AWS DMS はそれらのファイルを AmazonRedshift データウェアハウス内の適切なテーブルに転送します。AWS DMS は S3 バケットを AmazonRedshift データベースと同じ AWS リージョンに作成します。AWS DMS レプリケーションインスタンスはその同じリージョンに存在している必要があります。

AWS Command Line Interface (AWS CLI) または DMS API を使用してデータを Amazon Redshift に移行する場合、S3 アクセスを許可するように AWS Identity and Access Management (IAM) ロールを設定する必要があります。この IAM ロールの作成に関する詳細については、「AWS CLI と AWS DMS API で使用する IAM ロールを作成する (p. 36)」を参照してください。

Amazon Redshift エンドポイントは、以下の完全なオートメーションを行います。

• スキーマ生成およびデータ型マッピング• ソースデータベーステーブルの全ロード• ソーステーブルに加えられた変更の増分ロード• ソーステーブルに加えられたスキーマ変更のデータ定義言語 (DDL) での適用• 全ロードプロセスと変更データキャプチャ (CDC) プロセスの間の同期

AWS Database Migration Service では、全ロードオペレーションと変更処理オペレーションの両方がサポートされています。AWS DMS は、ソースデータベースからデータを読み取り、一連のカンマ区切り値(.csv) ファイルを作成します。全ロードオペレーションの場合、AWS DMS はテーブルごとにファイルを作成します。次に、AWS DMS は各テーブルのテーブルファイルを Amazon S3 内の別個のフォルダにコピーします。ファイルが Amazon S3 にアップロードされると、AWS DMS がコピーコマンドを送信し、ファイル内のデータが Amazon Redshift にコピーされます。変更処理オペレーションの場合、AWS DMSは差分変更を .csv ファイルにコピーします。その後、AWS DMS は差分変更ファイルを Amazon S3 にアップロードし、データを Amazon Redshift にコピーします。

AWS DMS のターゲットとしての Amazon Redshift の使用の詳細については、以下のセクションを参照してください。

トピック

API バージョン API Version 2016-01-01174

Page 182: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon Redshift の使用

• AWS Database Migration Service のターゲットとして Amazon Redshift データベースを使用する場合の前提条件 (p. 175)

• AWS Database Migration Service のターゲットとして Amazon Redshift を使用する場合の制限 (p. 175)

• AWS Database Migration Service のターゲットとしての Amazon Redshift データベースの設定 (p. 176)

• Amazon Redshift で拡張された VPC ルーティングを AWS Database Migration Service のターゲットとして使用する (p. 176)

• Amazon Redshift ターゲットデータを暗号化する AWS KMS キーの作成と使用 (p. 177)• AWS DMS のターゲットとして Amazon Redshift を使用する場合のエンドポイントの設定 (p. 180)• AWS DMS のターゲットとして Amazon Redshift を使用する場合の追加の接続属性 (p. 181)• Amazon Redshift のターゲットデータ型 (p. 184)

AWS Database Migration Service のターゲットとして AmazonRedshift データベースを使用する場合の前提条件以下のリストでは、データ移行のターゲットとして Amazon Redshift を使用する場合に必要な前提条件について説明します。

• Amazon Redshift クラスターを起動するには、AWS マネジメントコンソールを使用します。AWS アカウントと Amazon Redshift クラスターに関する基本的な情報 (パスワード、ユーザー名、データベース名など) を記録してください。これらの値は、Amazon Redshift ターゲットエンドポイントを作成するときに必要になります。

• Amazon Redshift クラスターは、レプリケーションインスタンスと同じ AWS アカウントと同じ AWSリージョンに存在している必要があります。

• AWS DMS レプリケーションインスタンスには、クラスターで使用される Amazon Redshift エンドポイント (ホスト名とポート) へのネットワーク接続が必要です。

• AWS DMS は Amazon S3 バケットを使用してデータを Amazon Redshift データベースに転送します。AWS DMS がバケットを作成できるようにするため、DMS コンソールは IAM ロール dms-access-for-endpoint を使用します。AWS CLI または DMS API を使用して、ターゲットデータベースとして Amazon Redshift を使用したデータベース移行を作成する場合、この IAM ロールを作成する必要があります。このロールの作成に関する詳細については、「AWS CLI と AWS DMS API で使用する IAM ロールを作成する (p. 36)」を参照してください。

• AWS DMS は BLOB、CLOB、NCLOB をターゲットの Amazon Redshift インスタンスで VARCHAR に変換します。Amazon Redshift は 64 KB を超える VARCHAR をサポートしないため、従来の LOB をAmazon Redshift おに保存することはできません。

AWS Database Migration Service のターゲットとして AmazonRedshift を使用する場合の制限ターゲットとして Amazon Redshift データベースを使用する場合、AWS DMS では以下のものがサポートされません。

• 以下の DDL はサポートされていません。

ALTER TABLE <table name> MODIFY COLUMN <column name> <data type>;

• AWS DMS は、名前がアンダースコア (_) で始まるスキーマへの変更を移行またはレプリケートできません。名前がアンダースコアで始まるスキーマがある場合は、マッピング変換を使用してターゲットでスキーマの名前を変更してください。

API バージョン API Version 2016-01-01175

Page 183: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon Redshift の使用

• Amazon Redshift は 64 KB より大きい VARCHAR をサポートしていません。従来のデータベースからのLOB を Amazon Redshift に保存することはできません。

• 複数の列のプライマリキーを持つテーブルへの DELETE ステートメントの適用は、プライマリキーの列名で予約語が使用されている場合にはサポートされません。Amazon Redshift の予約語のリストを見るには、こちらをクリックしてください。

AWS Database Migration Service のターゲットとしての AmazonRedshift データベースの設定Amazon Redshift インスタンスを使用できるように AWS Database Migration Service を設定する必要があります。以下の表では、Amazon Redshift エンドポイントに使用できる設定プロパティについて説明します。

プロパティ 説明

server 使用する Amazon Redshift クラスターの名前。

port Amazon Redshift のポート番号。デフォルト値は 5439 です。

username 登録済みユーザーの Amazon Redshift ユーザー名。

パスワード username プロパティで指定されたユーザーのパスワード。

データベース 使用する Amazon Redshift データウェアハウス (サービス)。

Amazon Redshift エンドポイントに追加の接続文字列属性を追加する場合、maxFileSize 属性とfileTransferUploadStreams 属性を指定できます。これらの属性の詳細については、「AWS DMS のターゲットとして Amazon Redshift を使用する場合の追加の接続属性 (p. 181)」を参照してください。

Amazon Redshift で拡張された VPC ルーティングを AWSDatabase Migration Service のターゲットとして使用するAmazon Redshift ターゲットで拡張された VPC のルーティングを使用すると、Amazon Redshift クラスターとデータリポジトリ間のすべての COPY トラフィックは VPC を介します。拡張された VPC ルーティングは、他のリソースに Amazon Redshift がアクセスする方法に影響を与えるため、VPC を正しく設定していないと、COPY コマンドが失敗することがあります。

AWS DMS がこの動作の影響を受けることがあるのは、COPY コマンドを使用して S3 内のデータをAmazon Redshift クラスターに移動するためです。

以下に示しているのは、AWS DMS が Amazon Redshift ターゲットにデータをロードする手順です。

1. AWS DMS がソースからレプリケーションサーバー上の .csv ファイルにデータをコピーします。2. AWS DMS が AWS SDK を使用してアカウントの S3 バケットに .csv ファイルをコピーします。3. AWS DMS がその後、Amazon Redshift で COPY コマンドを使用して、S3 内の .csv ファイルから

Amazon Redshift 内の該当するテーブルにデータをコピーします。

拡張された VPC ルーティングが有効でない場合、Amazon Redshift は AWS ネットワークにおけるその他のサービスへのトラフィックを含むトラフィックをインターネット経由でルーティングします。この機能が有効でない場合は、ネットワークパスを設定する必要はありません。この機能が有効な場合は、クラスターの VPC とデータリソースとの間のネットワークパスを別に作成する必要があります。必要な設定の詳細については、Amazon Redshift のドキュメントの「 拡張された VPC ルーティング」を参照してください。

API バージョン API Version 2016-01-01176

Page 184: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon Redshift の使用

Amazon Redshift ターゲットデータを暗号化する AWS KMS キーの作成と使用ターゲットデータが Amazon Redshift にコピーされる前に、Amazon S3 にプッシュされるターゲットデータを暗号化できます。このため、カスタム AWS Key Management Service (AWS KMS) キーを作成して使用できます。Amazon Redshift エンドポイント作成時に次のいずれかのメカニズムを使用して、ターゲットデータを暗号化するために作成したキーを使用できます。

• AWS CLI を使用して create-endpoint コマンドを実行するとき、次のオプションを使用します。

--redshift-settings '{"EncryptionMode": "SSE_KMS", "ServerSideEncryptionKmsKeyId": "your-kms-key-ARN"}'

ここで your-kms-key-ARN とは、KMS キーの Amazon リソースネーム (ARN) です。詳細については、「AWS DMS のターゲットとして Amazon Redshift を使用する場合のエンドポイントの設定 (p. 180)」を参照してください。

• 値 (SSE_KMS) に追加の接続属性 (encryptionMode) を設定し、KMS キーの ARN に追加の接続属性(serverSideEncryptionKmsKeyId) を設定します。詳細については、「AWS DMS のターゲットとして Amazon Redshift を使用する場合の追加の接続属性 (p. 181)」を参照してください。

KMS キーを使用して Amazon Redshift ターゲットデータを暗号化するには、Amazon Redshift データにアクセスする権限がある AWS Identity and Access Management (IAM) ロールが必要です。この IAM ロールは次に、作成した暗号化キーにアタッチされるポリシー (キーポリシー) にアクセスします。これは、IAMコンソールで次を作成して実行します。

• Amazon が管理するポリシーがある IAM ロールです。• このロールを参照するキーポリシーがある KMS 暗号化キーです。

以下の手順でこれを行う方法について説明します。

必要な Amazon 管理ポリシーで IAM ロールを作成するには

1. https://console.aws.amazon.com/iam/ にある IAM コンソールを開きます。2. ナビゲーションペインで [Roles (ロール) ] を選択します。[ロール] ページが開きます。3. [Create role] を選択します。[ロールの作成] ページが開きます。4. 信頼されたエンティティとして選択された [AWS のサービス] で、ロールを使用するサービスとして

[DMS] を選択します。5. [次へ: アクセス許可] を選択します。[Attach permissions policies (アクセス権限ポリシーをアタッチす

る)] ページが表示されます。6. AmazonDMSRedshiftS3Role ポリシーを見つけて選択します。7. [Next: Tags (次の手順: タグ)] を選択します。[タグの追加] ページが表示されます。ここでは、任意の

タグを追加することができます。8. [Next: Review (次の手順: 確認)] を選択し、結果を確認します。9. 必要な設定が構成されている場合にはロールに名前 (DMS-Redshift-endpoint-access-role な

ど) および追加の説明を入力し、[ロールの作成] を選択します。[ロール] ページが開き、ロールが作成されたことを示すメッセージが表示されます。

これで、暗号化のために Amazon Redshift リソースにアクセスする新しいロールが指定した名前 (DMS-Redshift-endpoint-access-role など) で作成されました。

API バージョン API Version 2016-01-01177

Page 185: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon Redshift の使用

IAM ロールを参照するキーポリシーがある KMS 暗号化キーを作成するには

1. IAM コンソールで、ナビゲーションペインの [暗号化キー] を選択します。

初めてこのオプションにアクセスする場合には AWS Key Management Service の紹介が表示され、[今すぐ始める] を選択して開始することができます。それ以外の場合は、[暗号化キー] ページが開きます。

2. [キーの作成] を選択します。[エイリアスと説明の作成] ページが開きます。3. キーのエイリアス (DMS-Redshift-endpoint-encryption-key など) と必要な説明を入力しま

す。4. [アドバンスドオプション] を選択します。[詳細オプション] セクションで [キーマテリアルオリジン]

に [KMS] が選択されていることを確認し、[次のステップ] を選択します。[タグの追加] ページが開きます。

5. キーを識別してその使用状況を追跡するために役立つ任意のタグを追加したら、[次のステップ] を選択します。[キー管理アクセス許可の定義] ページが開き、選択できるユーザーおよびロールの一覧が表示されます。

6. キーを管理するユーザーおよびロールを追加します。このユーザーとロールにキーを管理するために必要な権限があることを確認してください。

7. キー管理者がそのキーを削除できるかどうかを選択したら、[次のステップ] を選択します。[キーの使用アクセス許可の定義] ページが開き、選択できる追加のユーザーおよびロールの一覧が表示されます。

8. [ロール] で Amazon Redshift ターゲットデータの暗号化へのアクセスを有効化するために以前に作成したロール (DMS-Redshift-endpoint-access-role など) を選択します。その後、[Next Step] を選択します。

[キーポリシーのプレビュー] ページが開き、レビューできるキーポリシーの JSON が表示されます。ここでは、前のステップで選択したロールを参照するキーポリシーを表示できます。また、次の例に示すように、異なるプリンシパル (ユーザーとロール) に許可される別々のキーアクションも確認できます。

{ "Id": "key-consolepolicy-3", "Version": "2012-10-17", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::944454115380:root" ] }, "Action": "kms:*", "Resource": "*" }, { "Sid": "Allow access for Key Administrators", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::944454115380:role/Admin" ] }, "Action": [ "kms:Create*", "kms:Describe*", "kms:Enable*", "kms:List*", "kms:Put*",

API バージョン API Version 2016-01-01178

Page 186: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon Redshift の使用

"kms:Update*", "kms:Revoke*", "kms:Disable*", "kms:Get*", "kms:Delete*", "kms:TagResource", "kms:UntagResource", "kms:ScheduleKeyDeletion", "kms:CancelKeyDeletion" ], "Resource": "*" }, { "Sid": "Allow use of the key", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::944454115380:role/DMS-Redshift-endpoint-access-role" ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }, { "Sid": "Allow attachment of persistent resources", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::944454115380:role/DMS-Redshift-endpoint-access-role" ] }, "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": "*", "Condition": { "Bool": { "kms:GrantIsForAWSResource": true } } } ]}

9. [Finish] を選択します。[暗号化キー] ページが開き、マスター暗号化キーが作成されたことを示すメッセージが表示されます。

これで、指定したエイリアス (DMS-Redshift-endpoint-encryption-key など) を使用する新しいKMS キーが作成されました。このキーによって AWS DMS は Amazon Redshift ターゲットデータを暗号化できます。

Note

また、AWS Key Management Service を使用し、IAM のロールとポリシーで KMS キーを作成して管理することもできます。詳細については、「キー管理サービス (KMS): 開発者ガイド」を参照してください。

API バージョン API Version 2016-01-01179

Page 187: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon Redshift の使用

AWS DMS のターゲットとして Amazon Redshift を使用する場合のエンドポイントの設定エンドポイントの設定を使用して、追加の接続属性の使用と同様に、Amazon Redshift ターゲットを設定できます。これらの設定は、AWS CLI の create-endpoint コマンドで --redshift-settings "json-settings" オプションを使用してターゲットエンドポイントを作成するときに指定できます。ここで、 json-settings とは、設定を指定するパラメータを含む JSON オブジェクトです。また、同じ json-settings オブジェクトが含まれる .json ファイルを指定することもできます。たとえば、次のようにできます。--redshift-settings file:///your-file-path/my_redshift_settings.jsonここで my_redshift_settings.json は、同じ json-settingsobject を含む .json ファイルの名前です。

エンドポイント設定に使用するパラメータの名前は、相当する追加の接続属性の名前と同じです。ただし、エンドポイント設定のパラメータの名前の最初の文字が大文字である場合は除きます。また、追加の接続属性を使用したすべての Amazon Redshift ターゲットエンドポイント設定で create-endpointコマンドの --redshift-settings オプションが使用できるわけでもありません。create-endpointを呼び出す AWS CLI コールで利用できる設定についての詳細は、AWS DMS のAWS CLI CommandReferenceの「create-endpoint」を参照してください。上述の設定についての詳細は、「AWS DMS のターゲットとして Amazon Redshift を使用する場合の追加の接続属性 (p. 181)」の相当する追加の接続属性を参照してください。

Amazon Redshift ターゲットエンドポイント設定を使用して、以下を設定できます。

• カスタム AWS KMS データ暗号化キー。その後、このキーを使用して、データが Amazon Redshift にコピーされる前に、Amazon S3 にプッシュされるデータを暗号化できます。

• Amazon Redshift に移行するデータ用の中間ストレージとしてのカスタム S3 バケット。

データ暗号化に対する KMS キー設定

次の例では、S3 にプッシュされるデータを暗号化するカスタム KMS キーの設定を示しています。開始するには、AWS CLI で次の create-endpoint 呼び出しを行う場合があります。

aws dms create-endpoint --endpoint-identifier redshift-target-endpoint --endpoint-type target --engine-name redshift --username your-username --password your-password --server-name your-server-name --port 5439 --database-name your-db-name --redshift-settings '{"EncryptionMode": "SSE_KMS", "ServerSideEncryptionKmsKeyId": "arn:aws:kms:us-east-1:944454115380:key/24c3c5a1-f34a-4519-a85b-2debbef226d1"}'

ここでは、--redshift-settings オプションで指定される JSON オブジェクトは 2 つのパラメータを定義します。1 つは、値が SSE_KMS の EncryptionMode パラメータです。もう 1 つは、値がarn:aws:kms:us-east-1:944454115380:key/24c3c5a1-f34a-4519-a85b-2debbef226d1 のServerSideEncryptionKmsKeyId パラメータです。この値は、カスタム KMS キーの Amazon リソースネーム (ARN) です。

デフォルトでは、S3 データ暗号化は S3 サーバー側の暗号化を使用して行われます。前述の例の AmazonRedshift ターゲットの場合、次の例に示すように、これはそのエンドポイント設定を指定することと同様です。

aws dms create-endpoint --endpoint-identifier redshift-target-endpoint --endpoint-type target --engine-name redshift --username your-username --password your-password --server-name your-server-name --port 5439 --database-name your-db-name --redshift-settings '{"EncryptionMode": "SSE_S3"}'

API バージョン API Version 2016-01-01180

Page 188: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon Redshift の使用

S3 サーバー側暗号化の使用の詳細については、「サーバー側の暗号化を使用したデータの保護」を参照してください。

Amazon S3 バケット設定Amazon Redshift ターゲットエンドポイントにデータを移行する際、AWS DMS はデフォルトの AmazonS3 バケットを中間タスクストレージとして使用し、その後移行されたデータを Amazon Redshift にコピーします。たとえば、KMS データ暗号化キーを使用した Amazon Redshift ターゲットエンドポイントの作成例では、このデフォルトの S3 バケットが使用されています (データ暗号化に対する KMS キー設定 (p. 180)を参照)。

代わりに、この中間ストレージにカスタム S3 バケットを指定することもできます。これを行うには、AWS CLI create-endpoint コマンドで --redshift-settings オプションの値に次のパラメータを含めます。

• BucketName – S3 バケットストレージの名前として指定する文字列。• BucketFolder – (オプション) 指定された S3 バケットのストレージフォルダーの名前として指定でき

る文字列。• ServiceAccessRoleArn – S3 バケットへの管理アクセスを許可する IAM ロールの ARN。一般的

に、 AmazonDMSRedshiftS3Role ポリシーに基づいてこのロールを作成します。例については、「Amazon Redshift ターゲットデータを暗号化する AWS KMS キーの作成と使用 (p. )」で、必要な Amazon が管理するポリシーを持つ IAM ロールを作成する手順を参照してください。

Note

create-endpoint コマンドの --service-access-role-arn オプションを使用して別のIAM ロールの ARN を指定した場合、その IAM ロールオプションが優先されます。

以下の例では、これらのパラメータを使用して、AWS CLI を使用した以下の create-endpoint 呼び出しでカスタム Amazon S3 バケットを指定しています。

aws dms create-endpoint --endpoint-identifier redshift-target-endpoint --endpoint-type target --engine-name redshift --username your-username --password your-password --server-name your-server-name --port 5439 --database-name your-db-name --redshift-settings '{"ServiceAccessRoleArn": "your-service-access-ARN", "BucketName": "your-bucket-name", "BucketFolder": "your-bucket-folder-name"}'

AWS DMS のターゲットとして Amazon Redshift を使用する場合の追加の接続属性追加の接続属性を使用して Amazon Redshift ターゲットを設定できます。これらの設定は、ターゲットエンドポイントを作成するときに指定します。接続属性の設定が複数ある場合は、空白を追加せずにそれぞれをセミコロンで区切ります。

以下の表に、Amazon Redshift がターゲットであるときに使用できる追加の接続属性を示します。

名前 説明

maxFileSize Amazon Redshift へのデータ転送に使用される .csv ファイルの最大サイズ (KB 単位) を指定します。

デフォルト値: 32768 KB (32 MB)

有効な値: 1 ~ 1048576

例: maxFileSize=512

API バージョン API Version 2016-01-01181

Page 189: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon Redshift の使用

名前 説明

fileTransferUploadStreams 1 つのファイルをアップロードするのに使用されるスレッドの数を指定します。

デフォルト値: 10

有効な値: 1 ~ 64

例: fileTransferUploadStreams=20

acceptanydate 0000-00-00 などの無効な日付形式を含む、あらゆる日付形式を受け入れるかどうかを指定します。ブール値。

デフォルト値: false

有効な値: true | false

例: acceptanydate=true

dateformat 日付形式を指定します。これは、文字列入力であり、デフォルトでは空です。デフォルトの形式は、YYYY-MM-DDですが、DD-MM-YYYY などに変更できます。日の値または時間の値で異なる形式が使用される場合、dateformatパラメータとともに auto 引数を使用します。auto 引数は、dateformat 文字列を使用する場合にサポートされない形式を認識します。auto キーワードでは大文字小文字を区別します。

デフォルト値: 空

有効な値: 'dateformat_string' または auto

例: dateformat=auto

timeformat 時間形式を指定します。これは、文字列入力であり、デフォルトでは空です。auto 引数は、timeformat 文字列を使用する場合にサポートされない形式を認識します。日の値および時間の値でそれぞれ異なる形式が使用される場合、timeformat パラメータとともに auto 引数を使用します。

デフォルト値: 10

有効な値: 'timeformat_string' | 'auto' | 'epochsecs' |'epochmillisecs'

例: timeformat=auto

emptyasnull AWS DMS が空の CHAR および VARCHAR フィールドをnull として移行するかどうかを指定します。値が true の場合、空の CHAR および VARCHAR フィールドが null として設定されます。

デフォルト値: false

有効な値: true | false

例: emptyasnull=true

API バージョン API Version 2016-01-01182

Page 190: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon Redshift の使用

名前 説明

truncateColumns 列の仕様に合うよう、該当する文字数で列のデータを切り捨てます。データ型が VARCHAR または CHAR の列、およびサイズが 4 MB 以下の行にのみ適用されます。

デフォルト値: false

有効な値: true | false

例:

truncateColumns=true;

removeQuotes 入力データの文字列を囲む引用符を削除します。区切り記号を含む引用符内のすべての文字は保持されます。AmazonRedshift ターゲットの引用符を削除する詳細については、『Amazon Redshift Database Developer Guide』を参照してください。

デフォルト値: false

有効な値: true | false

例:

removeQuotes=true;

trimBlanks VARCHAR 文字列から末尾の空白文字を削除します。このパラメータは VARCHAR データ型の列にのみ適用されます。

デフォルト値: false

有効な値: true | false

例:

trimBlanks=false;

encryptionMode データが Amazon Redshift にコピーされる前に S3 にデータをプッシュするために使用するサーバー側の暗号化モードを指定します。有効な値は SSE_S3 (S3 サーバー側暗号化) または SSE_KMS (KMS キー暗号化) です。SSE_KMS を選択する場合、暗号化のために使用する KMS キーの Amazon リソースネーム (ARN) に serverSideEncryptionKmsKeyIdパラメータを設定します。

デフォルト値: SSE_S3

有効な値: SSE_S3 または SSE_KMS

例: encryptionMode=SSE_S3;

API バージョン API Version 2016-01-01183

Page 191: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon Redshift の使用

名前 説明

serverSideEncryptionKmsKeyId SSE_KMS に encryptionMode を設定する場合、KMS キーの ARN にこのパラメータを設定します。アカウントに作成した KMS キーのリスト内でキーエイリアスを選択すると、この ARN が見つかります。キーを作成するとき、特定のポリシーとロールをこのキーに関連付ける必要があります。詳細については、「Amazon Redshift ターゲットデータを暗号化する AWS KMS キーの作成と使用 (p. 177)」を参照してください。

例:

serverSideEncryptionKmsKeyId=arn:aws:kms:us-east-1:944454115380:key/24c3c5a1-f34a-4519-a85b-2debbef226d1;

Amazon Redshift のターゲットデータ型Amazon Redshift の AWS DMS エンドポイントでは、Amazon Redshift のほとんどのデータ型がサポートされています。以下の表に、AWS DMSを使用する場合にサポートされる Amazon Redshift のターゲットデータ型と、AWS DMS のデータ型からのデフォルトマッピングを示します。

AWS DMS のデータ型の詳細については、「AWS Database Migration Service のデータ型 (p. 394)」を参照してください。

AWS DMS データ型 Amazon Redshift データ型

BOOLEAN BOOL

BYTES VARCHAR (長さ)

DATE DATE

TIME VARCHAR(20)

DATETIME スケールが 0 以上、6 以下の場合

TIMESTAMP (s)

スケールが 7 以上、9 以下の場合

VARCHAR(37)

INT1 INT2

INT2 INT2

INT4 INT4

INT8 INT8

NUMERIC スケールが 0 以上、37 以下の場合

NUMERIC (p,s)

スケールが 38 以上、127 以下の場合

API バージョン API Version 2016-01-01184

Page 192: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての SAP ASE の使用

AWS DMS データ型 Amazon Redshift データ型VARCHAR (長さ)

REAL4 FLOAT4

REAL8 FLOAT8

STRING 長さが 1 ~ 65,535 の場合、VARCHAR (バイト単位の長さ) を使用します。

長さが 65,536 ~ 2,147,483,647 の場合、VARCHAR (65535) を使用します。

UINT1 INT2

UINT2 INT2

UINT4 INT4

UINT8 NUMERIC (20,0)

WSTRING 長さが 1 ~ 65,535 の場合、NVARCHAR (バイト単位の長さ) を使用します。

長さが 65,536 ~ 2,147,483,647 の場合、NVARCHAR (65535) を使用します。

BLOB VARCHAR (最大 LOB サイズ *2)

LOB の最大サイズは 31 KB を超えることはできません。Amazon Redshift では 64 KB を超えるVARCHAR をサポートしていません。

NCLOB NVARCHAR (最大 LOB サイズ)

LOB の最大サイズは 63 KB を超えることはできません。Amazon Redshift では 64 KB を超えるVARCHAR をサポートしていません。

CLOB VARCHAR (最大 LOB サイズ)

LOB の最大サイズは 63 KB を超えることはできません。Amazon Redshift では 64 KB を超えるVARCHAR をサポートしていません。

AWS Database Migration Service のターゲットとしての SAP ASE データベースの使用AWS DMS を使用して、サポートされているいずれかのデータベースソースから SAP Adaptive ServerEnterprise (ASE) (旧 Sybase) データベースにデータを移行できます。

SAP ASE バージョン 15、15.5、15.7、16 以降がサポートされています。

API バージョン API Version 2016-01-01185

Page 193: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての SAP ASE の使用

AWS Database Migration Service のターゲットとして SAP ASEデータベースを使用する場合の前提条件AWS DMS のターゲットとして SAP ASE データベースを使用し始める前に、以下の前提条件を満たしていることを確認してください。

• AWS DMS ユーザーに SAP ASE アカウントへのアクセスを許可する必要があります。このユーザーには、SAP ASE データベースでの読み取り/書き込み権限が必要です。

• AWS DMS では、非ラテン文字 (中国語など) に設定された Windows EC2 インスタンスにインストールされている SAP ASE バージョン 15.7 にレプリケートする場合、ターゲット SAP ASE マシンには SAPASE 15.7 SP121 がインストールされている必要があります。

AWS DMS のターゲットとして SAP ASE を使用する場合の追加の接続属性追加の接続属性を使用して SAP ASE ターゲットを設定できます。これらの設定は、ターゲットエンドポイントを作成するときに指定します。接続属性の設定が複数ある場合は、空白を追加せずにそれぞれをセミコロンで区切ります。

次の表に、SAP ASE をターゲットとして使用するときに使用できる追加の接続属性を示します。

名前 説明

enableReplication SAP ASE レプリケーションを自動的に有効にするには、Y に設定します。これは、SAP ASE レプリケーションがまだ有効になっていない場合にのみ必要です。

additionalConnectionProperties 指定する追加の ODBC 接続パラメータ。

Note

接続文字列で指定されたユーザー名やパスワードに非ラテン文字 (中国語など) が含まれている場合、次のプロパティが必要です。charset=gb18030

SAP ASE のターゲットデータ型以下の表に、AWS DMS を使用する場合にサポートされる SAP ASE データベースのターゲットデータ型と、AWS DMS のデータ型からのデフォルトマッピングを示します。

AWS DMS のデータ型の詳細については、「AWS Database Migration Service のデータ型 (p. 394)」を参照してください。

AWS DMS データ型 SAP ASE のデータ型

BOOLEAN BIT

BYTES VARBINARY (長さ)

DATE DATE

TIME TIME

TIMESTAMP スケールが 0 以上、6 以下の場合: BIGDATETIME

スケールが 7 以上、9 以下の場合: VARCHAR (37)

API バージョン API Version 2016-01-01186

Page 194: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon S3 の使用

AWS DMS データ型 SAP ASE のデータ型

INT1 TINYINT

INT2 SMALLINT

INT4 INTEGER

INT8 BIGINT

NUMERIC NUMERIC (p,s)

REAL4 REAL

REAL8 DOUBLE PRECISION

STRING VARCHAR (長さ)

UINT1 TINYINT

UINT2 UNSIGNED SMALLINT

UINT4 UNSIGNED INTEGER

UINT8 UNSIGNED BIGINT

WSTRING VARCHAR (長さ)

BLOB IMAGE

CLOB UNITEXT

NCLOB TEXT

AWS DMS は、以下のデータ型のフィールドを含むテーブルをサポートしません。これらのデータ型のレプリケートされた列は NULL として表示されます。

• ユーザー定義の型 (UDT)

AWS Database Migration Service のターゲットとしての Amazon S3 の使用サポートされるデータベースのソースから AWS DMS を使用することにより、データを Amazon S3 に移行できます。AWS DMS タスクのターゲットとして Amazon S3 を使用する場合、全ロードと変更データキャプチャ (CDC) データの両方はデフォルトでカンマ区切り値 (csv) 形式で書き込まれます。よりコンパクトなストレージと高速なクエリオプションにおいては、Apache Parquet (.parquet) 形式でデータを書き込むオプションもあります。

AWS DMS は、増分 16 進カウンターを使用して全ロード中に作成されるファイルに、.csv としてLOAD00001.csv、LOAD00002...、LOAD00009、LOAD0000A などの名前を付けます。AWS DMS はタイムスタンプを使用して、CDC ファイルに 20141029-1134010000.csv などの名前を付けます。ソーステーブルごとに、AWS DMS は、指定されたターゲットフォルダの下にフォルダを作成します。AWS DMSは、指定された Amazon S3 バケットに、すべての全ロードおよび CDC ファイルを書き込みます。

パラメータ bucketFolder には、.csv ファイルまたは .parquet ファイルが S3 バケットにアップロードされる前に保存される場所が含まれます。.csv ファイルでは、テーブルデータは、S3 バケットに以下の形式で格納されます。

API バージョン API Version 2016-01-01187

Page 195: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon S3 の使用

<schema_name>/<table_name>/LOAD00000001.csv<schema_name>/<table_name>/LOAD00000002.csv...<schema_name>/<table_name>/LOAD00000009.csv<schema_name>/<table_name>/LOAD0000000A.csv<schema_name>/<table_name>/LOAD0000000B.csv...<schema_name>/<table_name>/LOAD0000000F.csv<schema_name>/<table_name>/LOAD00000010.csv...

追加の接続属性を使用して、列の区切り文字、行の区切り文字、およびその他のパラメータを指定できます。追加の接続属性の詳細については、このセクションの最後にある「AWS DMS のターゲットとしてAmazon S3 を使用する場合の追加の接続属性 (p. 200)」を参照してください。

AWS DMS を使用してデータ変更をレプリケートする場合、.csv または .parquet 出力ファイルの最初の列に、次の .csv ファイルのように、データがどのように変更されたかが示されます。

I,101,Smith,Bob,4-Jun-14,New YorkU,101,Smith,Bob,8-Oct-15,Los AngelesU,101,Smith,Bob,13-Mar-17,DallasD,101,Smith,Bob,13-Mar-17,Dallas

この例では、ソースデータベースに EMPLOYEE テーブルがあるとします。AWS DMS は以下のイベントに応答して、データを .csv または .parquet ファイルに書き込みます。

• 新しい従業員 (Bob Smith、従業員 ID 101) がニューヨークオフィスに 2014 年 6 月 4 日に採用されました。.csv または .parquet ファイルで、最初の列の I は、新しい行がソースデータベースの EMPLOYEEテーブルに INSERT されたことを示しています。

• 2015 年 10 月 8 日に、Bob はロサンゼルスオフィスに転勤になりました。.csv または .parquet ファイルで、U は、Bob の新しい勤務地を反映するため、EMPLOYEE テーブルの対応する行が UPDATE されたことを示しています。その他の行は、UPDATE の後に表示される、EMPLOYEE テーブルの行を反映しています。

• 2017 年 3 月 13 日に、Bob はダラスオフィスに再度転勤になりました。.csv または .parquet ファイルで、U はこの行が再度 UPDATE されたことを示しています。その他の行は、UPDATE の後に表示される、EMPLOYEE テーブルの行を反映しています。

• Bob は、しばらくダラスに勤務した後、退職しました。.csv または .parquet ファイルで、D は、行がソーステーブルで DELETE されたことを示しています。その他の行は、削除される前に行がEMPLOYEE テーブルにどのように表示されたかを反映しています。

ターゲットとして Amazon S3 を使用する場合の前提条件ターゲットとして Amazon S3 を使用する前に、以下が当てはまることを確認します。

• ターゲットとして使用している S3 バケットは、データの移行に使用している DMS レプリケーションインスタンスと同じリージョンにあります。

• 移行に使用する AWS アカウントには、ターゲットとして使用する S3 バケットへの書き込みおよび削除アクセス許可が付与された IAM ロールがあります。

• このロールにはタグ付けのためのアクセスが許可されているため、ターゲットバケットに書き込まれる任意の S3 オブジェクトにタグ付けができます。

このアカウントアクセスを設定するには、移行タスクを作成するために使用するユーザーアカウントに割り当てられたロールに次の一連のアクセス許可があることを確認します。

API バージョン API Version 2016-01-01188

Page 196: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon S3 の使用

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:DeleteObject", "s3:PutObjectTagging" ], "Resource": [ "arn:aws:s3:::buckettest2*" ] }, { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::buckettest2*" ] } ]}

ターゲットとして Amazon S3 を使用する場合の制限以下の制限は、ターゲットとして使用する Amazon S3 のファイルセットに適用されます。

• 次のデータ定義言語 (DDL) コマンドのみサポートされます: TRUNCATE TABLE、DROP TABLE、および CREATE TABLE

• 完全 LOB モードはサポートされていません。• 全ロード時のソーステーブル構造に対する変更はサポートされていません。全ロード時のデータに対す

る変更はサポートされています。• 同じソーステーブルから同じターゲット S3 エンドポイントバケットにデータをレプリケートする複数

のタスクを実行すると、それらのタスクが同じファイルに書き込みます。同じテーブルのデータソースを使用する場合、異なるターゲットエンドポイント (バケット) を指定することをお勧めします。

セキュリティターゲットとして Amazon S3 を使用するには、移行のために使用されるアカウントに、ターゲットとして使用される Amazon S3 バケットに対する書き込みおよび削除アクセス権限が必要です。Amazon S3 にアクセスするために必要なアクセス権限がある、IAM ロールの Amazon リソースネーム (ARN) を指定します。

AWS DMS は、Amazon S3 に対する一連の事前定義済みの許可 (既定アクセスコントロールリスト(ACL)) をサポートしています。各既定 ACL には、Amazon S3 バケットに対するアクセス権限を設定するために使用できる一連の被付与者とアクセス権限があります。S3 ターゲットエンドポイントの接続文字列属性で cannedAclForObjects で使用して、既定 ACL を指定できます。追加接続属性cannedAclForObjects の使用についての詳細は、「AWS DMS のターゲットとして Amazon S3 を使用する場合の追加の接続属性 (p. 200)」を参照してください。Amazon S3 の既定 ACL の詳細については、「既定 ACL」を参照してください。

移行に使用する IAM ロールは、s3:PutObjectAcl API オペレーションを実行できる必要があります。

API バージョン API Version 2016-01-01189

Page 197: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon S3 の使用

Apache Parquet を使用した Amazon S3 オブジェクトの保存カンマ区切り値 (.csv) 形式は、Amazon S3 ターゲットオブジェクトのデフォルトのストレージ形式です。よりコンパクトなストレージと高速なクエリについては、代わりに Apache Parquet (.parquet) をストレージ形式として使用できます。

Apache Parquet は、Hadoop 向けに当初設計されたオープンソースのファイルストレージ形式です。Apache Parquet の詳細については、「https://parquet.apache.org/」を参照してください。

移行された S3 ターゲットオブジェクトに .parquet ストレージ形式を設定するには、以下のメカニズムを使用できます。

• AWS CLI あるいは AWS DMS の API を使用してエンドポイントを作成するときに、JSON オブジェクトのパラメータとして指定するエンドポイント設定です。詳細については、「AWS DMS のターゲットとして Amazon S3 を使用する場合のエンドポイントの設定 (p. 198)」を参照してください。

• エンドポイント作成時にセミコロンで区切られたリストとして指定する追加の接続属性です。詳細については、「AWS DMS のターゲットとして Amazon S3 を使用する場合の追加の接続属性 (p. 200)」を参照してください。

Amazon S3 オブジェクトのタグ付けタスクテーブルのマッピングルールの一部として適切な JSON オブジェクトを指定することで、レプリケーションインスタンスが作成する Amazon S3 オブジェクトにタグを付けることができます。有効なタグ名など、S3 オブジェクトのタグ付けにおける要件とオプションについての詳細は、『Amazon SimpleStorage Service 開発者ガイド』の「オブジェクトのタグ付け」を参照してください。JSON を使用したテーブルマッピングの詳細については、「 JSON を使用するテーブルマッピングによりテーブル選択および変換を指定する (p. 291)」を参照してください。

selection ルールタイプの 1 つ以上の JSON オブジェクトを使用して、指定するテーブルおよびスキーマで S3 オブジェクトにタグ付けします。次に、post-processing ルールタイプの 1 つ以上の JSON オブジェクトで add-tag アクションを使用して、selection オブジェクト (1 つ以上のオブジェクト) を行います。この後処理ルールは、タグ付けする S3 オブジェクトを識別し、これらの S3 オブジェクトに追加するタグに名前と値を指定します。

post-processing ルールタイプの JSON オブジェクトで指定するパラメータは、次のテーブルにあります。

パラメータ 使用できる値 説明

rule-type post-processing 生成されたターゲットオブジェクトへの後処理アクションに適用する値です。選択した S3 オブジェクトには、1 つ以上の後処理ルールを指定できます。

rule-id 数値。 ルールを識別する一意の数値。

rule-name 英数字値。 ルールを特定する一意な名前。

rule-action add-tag S3 オブジェクトに適用する後処理アクションです。add-tag アクションの単一の JSON 後処理オブジェクトを使用して、1 つ以上のタグを追加できます。

object-locator schema-name – テーブルスキーマの名前。

table-name – テーブルの名前。

ルールが適用されるスキーマおよびテーブルごとの名前。各 object-locatorパラメータの値のすべてあるいは一部で、「%」パーセント記号をワイルドカードとして使用できます。したがっ

API バージョン API Version 2016-01-01190

Page 198: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon S3 の使用

パラメータ 使用できる値 説明て、これらの項目には以下を対応させることができます。

• 単一のスキーマの 1 つのテーブル• すべてあるいは一部のスキーマの 1 つ

のテーブル• 単一のスキーマの一部あるいはすべて

のテーブル• 一部あるいはすべてのスキーマの一部

あるいはすべてのテーブル

tag-set key – 単一のタグの任意の有効な名前。

value – このタグに有効な任意の JSON値。

特定の object-locator に一致する作成された S3 オブジェクトごとに設定する 1 つ以上のタグの名前と値です。単一の tag-set パラメータオブジェクトで10 個までのキー値ペアを指定することができます。S3 オブジェクトのタグ付けの詳細については、『Amazon SimpleStorage Service 開発者ガイド』の「オブジェクトのタグ付け」を参照してください。

また、タグの key および value パラメータの両方で、${dyn-value} を使用して値のすべてあるいは一部に動的な値を指定することもできます。ここでは、${dyn-value} は ${schema-name} あるいは ${table-name} のいずれかにできます。したがって、現在選択されているスキーマあるいはテーブルにパラメータ値の一部あるいは全体として名前を挿入することができます。

Note

Important

key パラメータに動的な値を挿入する場合には、使用方法に応じて、S3 オブジェクトに名前が重複するタグを生成することができます。この場合、重複するタグの 1 つのみがオブジェクトに追加されます。

S3 オブジェクトの選択をタグ付けするために複数の post-processing ルールタイプを指定する場合、各 S3 オブジェクトは 1 つの後処理ルールをから 1 つの tag-set オブジェクトのみを使用してタグ付けされます。指定する S3 オブジェクトへのタグ付けに使用される特定のタグセットは、その S3 オブジェクトに最も一致するオブジェクトロケーターに関連する後処理ルールのうちの 1 つです。

たとえば、同じ S3 オブジェクトに 2 つの後処理ルールが識別されるとします。また、1 つのルールのオブジェクトロケーターはワイルドカードを使用し、別のルールのオブジェクトロケーターは S3 オブジェ

API バージョン API Version 2016-01-01191

Page 199: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon S3 の使用

クトを識別するための完全な一致 (ワイルドカードなし) を使用するとします。この場合、完全に一致する後処理ルールに関連付けられたタグが S3 オブジェクトのタグ付けに使用されます。複数の後処理ルールが指定された S3 オブジェクトに同様に一致する場合、この後処理ルールに最初に関連図けられたタグセットがオブジェクトのタグ付けに使用されます。

Example 単一のテーブルとスキーマに作成された S3 オブジェクトへの静的なタグの追加

次の選択と後処理ルールは 3 つのタグ (tag_1、tag_2、tag_3) と該当する静的値(value_1、value_2、value_3) を追加して S3 オブジェクトを作成します。この S3 オブジェクトは、aat2 という名前のスキーマがある STOCK という名前のソース内の単一のテーブルに該当します。

{ "rules": [ { "rule-type": "selection", "rule-id": "5", "rule-name": "5", "object-locator": { "schema-name": "aat2", "table-name": "STOCK" }, "rule-action": "include" }, { "rule-type": "post-processing", "rule-id": "41", "rule-name": "41", "rule-action": "add-tag", "object-locator": { "schema-name": "aat2", "table-name": "STOCK", }, "tag-set": [ { "key": "tag_1", "value": "value_1" }, { "key": "tag_2", "value": "value_2" }, { "key": "tag_3", "value": "value_3" } ] } ]}

Example 複数のテーブルとスキーマに作成された S3 オブジェクトへの静的および動的タグの追加

次の例には 1 つの選択と 2 つの後処理ルールがあり、ここでは、ソースからの入力にすべてのテーブルとすべてのスキーマが含まれています。

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": {

API バージョン API Version 2016-01-01192

Page 200: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon S3 の使用

"schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "post-processing", "rule-id": "21", "rule-name": "21", "rule-action": "add-tag", "object-locator": { "schema-name": "%", "table-name": "%", }, "tag-set": [ { "key": "dw-schema-name", "value":"${schema-name}" }, { "key": "dw-schema-table", "value": "my_prefix_${table-name}" } ] }, { "rule-type": "post-processing", "rule-id": "41", "rule-name": "41", "rule-action": "add-tag", "object-locator": { "schema-name": "aat", "table-name": "ITEM", }, "tag-set": [ { "key": "tag_1", "value": "value_1" }, { "key": "tag_2", "value": "value_2" } ] } ]}

最初の後処理ルールは、該当する動的値 (${schema-name} と my_prefix_${table-name}) を使用した 2 つのタグ (dw-schema-name と dw-schema-table) をターゲットに作成されたほぼすべての S3オブジェクトに追加します。例外は、2 番目の後処理ルールで色別されてタグ付けされる S3 オブジェクトです。したがって、ワイルドカードオブジェクトロケーターによって識別された各ターゲット S3 オブジェクトは、ソースで該当するスキーマおよびテーブルを識別するタグを使用して作成されます。

2 番目の後処理ルールは、完全に一致するオブジェクトロケーターによって識別される S3 オブジェクトに、該当する静的値 (value_1 と value_2) を使用して tag_1 および tag_2 を追加します。作成されたこの S3 オブジェクトはしたがって、aat という名前のスキーマがある ITEM という名前のソース内の単一のテーブルに該当します。完全一致のため、前述のタグは、最初の後処理ルール (ワイルドカードのみによって S3 に一致) でオブジェクトに追加されたタグを上書きします。

Example S3 オブジェクトに動的タグの名前と値の両方を追加する

次の例には 2 つの選択ルールと 1 つの後処理ルールがあります。ここでは、ソースの入力には retail あるいは wholesale スキーマに ITEM テーブルのみが含まれています。

API バージョン API Version 2016-01-01193

Page 201: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon S3 の使用

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "retail", "table-name": "ITEM" }, "rule-action": "include" }, { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "wholesale", "table-name": "ITEM" }, "rule-action": "include" }, { "rule-type": "post-processing", "rule-id": "21", "rule-name": "21", "rule-action": "add-tag", "object-locator": { "schema-name": "%", "table-name": "ITEM", }, "tag-set": [ { "key": "dw-schema-name", "value":"${schema-name}" }, { "key": "dw-schema-table", "value": "my_prefix_ITEM" }, { "key": "${schema-name}_ITEM_tag_1", "value": "value_1" }, { "key": "${schema-name}_ITEM_tag_2", "value": "value_2" } ] ]}

後処理ルールのタグセットは、ターゲットの ITEM テーブルに作成されたすべての S3 オブジェクトに 2つのタグ (dw-schema-name と dw-schema-table) を追加します。最初のタグには動的値 "${schema-name}" があり、2 つ目のタグには静的値 "my_prefix_ITEM" があります。したがって、各ターゲットS3 オブジェクトは、ソースで該当するスキーマおよびテーブルを識別するタグを使用して作成されます。

さらに、このタグセットは 2 つの追加タグを動的な名前 (${schema-name}_ITEM_tag_1 と"${schema-name}_ITEM_tag_2") で追加します。これには該当する静的値 (value_1 と value_2) があります。したがって、これらのタグはそれぞれ現在のスキーマ (retail あるいは wholesale) に対して命名されます。各オブジェクトは単一の一意のスキーマ名で作成されたため、このオブジェクトで動的な名前を重複することはできません。スキーマ名はそれ以外の一意のタグ名を作成するために使用されます。

API バージョン API Version 2016-01-01194

Page 202: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon S3 の使用

Amazon S3 ターゲットオブジェクトを暗号化する AWS KMSキーの作成Amazon S3 ターゲットオブジェクトを暗号化するカスタム AWS KMS キーを作成して使用できます。適切な KMS キーを作成したら、このキーを使用して、S3 ターゲットエンドポイントの作成時に次のいずれかのメカニズムを使用してオブジェクトを暗号化できます。

• AWS CLI を使用して create-endpoint コマンドを実行するときに、S3 ターゲットオブジェクトに対して次のオプションを (デフォルトの .csv ファイルストレージ形式で) 使用します。

--s3-settings '{"ServiceAccessRoleArn": "your-service-access-ARN", "CsvRowDelimiter": "\n", "CsvDelimiter": ",", "BucketFolder": "your-bucket-folder", "BucketName": "your-bucket-name", "EncryptionMode": "SSE_KMS", "ServerSideEncryptionKmsKeyId": "your-KMS-key-ARN"}'

ここで your-KMS-key-ARN とは、KMS キーの Amazon リソースネーム (ARN) です。詳細については、「AWS DMS のターゲットとして Amazon S3 を使用する場合のエンドポイントの設定 (p. 198)」を参照してください。

• 値 (SSE_KMS) に追加の接続属性 (encryptionMode) を設定し、KMS キーの ARN に追加の接続属性(serverSideEncryptionKmsKeyId) を設定します。詳細については、「AWS DMS のターゲットとして Amazon S3 を使用する場合の追加の接続属性 (p. 200)」を参照してください。

KMS キーを使用して S3 ターゲットオブジェクトを暗号化するには、Amazon S3 バケットにアクセスする権限がある IAM ロールが必要です。この IAM ロールは次に、作成した暗号化キーにアタッチされるポリシー (キーポリシー) にアクセスします。これは、IAM コンソールで次を作成して実行します。

• Amazon S3 バケットにアクセスする権限があるポリシーです。• このポリシーがある IAM ロールです。• このロールを参照するキーポリシーがある KMS 暗号化キーです。

以下の手順でこれを行う方法について説明します。

Amazon S3 バケットにアクセスする権限がある IAM ポリシーを作成するには

1. https://console.aws.amazon.com/iam/ にある IAM コンソールを開きます。2. ナビゲーションペインで、ナビゲーションペインの [ポリシー] を選択します。[ポリシー] ページが開

きます。3. [Create policy] を選択します。[Create policy (ポリシーの作成)] ページが開きます。4. [サービス]、[S3] の順に選択します。アクションのアクセス権限の一覧が表示されます。5. [すべて展開] を選択して一覧を展開し、少なくとも以下のアクセス権限を選択します。

• ListBucket• PutObject• DeleteObject

必要に応じて他のアクセス権限を選択したら、[すべて折りたたむ] を選択して一覧を折りたたみます。

6. [リソース] を選択してアクセスするリソースを指定します。少なくとも [すべてのリソース] を選択して、全般的な S3 リソースへのアクセスを提供します。

7. 必要に応じて他の条件やアクセス許可を追加したら、[ポリシーの確認] を選択します。[ポリシーの確認] ページで結果を確認します。

API バージョン API Version 2016-01-01195

Page 203: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon S3 の使用

8. 設定が必要に応じている場合には、ポリシーの名前 (DMS-S3-endpoint-access など) と他の説明を入力し、[ポリシーの作成] を選択します。[ポリシー] ページが開き、ポリシーが作成されたことを示すメッセージが表示されます。

9. [ポリシー] のリストからポリシー名を検索して選択します。[概要] ページが表示され、次のようなポリシーの JSON を示します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:ListBucket", "s3:DeleteObject" ], "Resource": "*" } ]}

これで、暗号化のために S3 リソースにアクセスする新しいポリシーが指定した名前 (DMS-S3-endpoint-access など) で作成されました。

このポリシーを使用して IAM ロールを作成するには

1. IAM コンソールで、ナビゲーションペインの [ロール] を選択します。[ロール] の詳細ページが開きます。

2. [Create role] を選択します。[ロールの作成] ページが開きます。3. AWS のサービスが信頼されるエンティティとして選択されたら、このロールを使用するサービスとし

て [DMS] を選択します。4. [次へ: アクセス許可] を選択します。[ロールの作成] ページに [アクセス権限ポリシーをアタッチする]

ビューが表示されます。5. 前の手順で作成したロールポリシーを見つけて選択します (DMS-S3-endpoint-access)。6. [Next: Tags (次の手順: タグ)] を選択します。[ロールの作成] ページに [タグの追加] ビューが表示され

ます。ここでは、任意のタグを追加することができます。7. [Next: Review (次のステップ: 確認)] を選択します。[ロールの作成] ページに [Review (確認)] ビューが

表示されます。ここで、結果を確認できます。8. 設定が必要に応じている場合には、ロールの名前 (必須、DMS-S3-endpoint-access-role など)

と追加の説明を入力して、[ロールの作成] を選択します。[ロール] の詳細ページが開き、ロールが作成されたことを示すメッセージが表示されます。

これで、暗号化のために S3 リソースにアクセスする新しいロールが指定した名前 (DMS-S3-endpoint-access-role など) で作成されました。

IAM ロールを参照するキーポリシーがある KMS 暗号化キーを作成するには

1. IAM コンソールで、ナビゲーションペインの [暗号化キー] を選択します。

初めてこのオプションにアクセスする場合には AWS Key Management Service の紹介が表示され、[今すぐ始める] を選択して開始することができます。それ以外の場合は、[暗号化キー] ページが開きます。

2. [キーの作成] を選択します。[エイリアスと説明の作成] ページが開きます。

API バージョン API Version 2016-01-01196

Page 204: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon S3 の使用

3. キーのエイリアス (DMS-S3-endpoint-encryption-key など) と必要な説明を入力します。4. [アドバンスドオプション] を選択します。[詳細オプション] セクションで [キーマテリアルオリジン]

に [KMS] が選択されていることを確認し、[次のステップ] を選択します。[タグの追加] ページが開きます。

5. キーを識別してその使用状況を追跡するために役立つ任意のタグを追加したら、[次のステップ] を選択します。[キー管理アクセス許可の定義] ページが開き、選択できるユーザーおよびロールの一覧が表示されます。

6. キーを管理するユーザーおよびロールを追加します。このユーザーとロールにキーを管理するために必要な権限があることを確認してください。

7. キー管理者がそのキーを削除できるかどうかを選択したら、[次のステップ] を選択します。[キーの使用アクセス許可の定義] ページが開き、選択できる追加のユーザーおよびロールの一覧が表示されます。

8. [ロール] で以前に作成したロールを選択して、S3 ターゲットオブジェクトを暗号化するためのアクセスを有効化します (DMS-S3-endpoint-access-role など)。その後、[Next Step] を選択します。

[キーポリシーのプレビュー] ページが開き、レビューできるキーポリシーの JSON が表示されます。ここでは、前のステップで選択したロールを参照するキーポリシーを表示できます。また、次の例に示すように、異なるプリンシパル (ユーザーとロール) に許可される別々のキーアクションも確認できます。

{ "Id": "key-consolepolicy-3", "Version": "2012-10-17", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::944454115380:root" ] }, "Action": "kms:*", "Resource": "*" }, { "Sid": "Allow access for Key Administrators", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::944454115380:role/Admin" ] }, "Action": [ "kms:Create*", "kms:Describe*", "kms:Enable*", "kms:List*", "kms:Put*", "kms:Update*", "kms:Revoke*", "kms:Disable*", "kms:Get*", "kms:Delete*", "kms:TagResource", "kms:UntagResource", "kms:ScheduleKeyDeletion", "kms:CancelKeyDeletion" ], "Resource": "*" },

API バージョン API Version 2016-01-01197

Page 205: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon S3 の使用

{ "Sid": "Allow use of the key", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::944454115380:role/DMS-S3-endpoint-access-role" ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }, { "Sid": "Allow attachment of persistent resources", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::944454115380:role/DMS-S3-endpoint-access-role" ] }, "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": "*", "Condition": { "Bool": { "kms:GrantIsForAWSResource": true } } } ]

9. [Finish] を選択します。[暗号化キー] ページが開き、マスター暗号化キーが作成されたことを示すメッセージが表示されます。

これで、指定したエイリアス (DMS-S3-endpoint-encryption-key など) を使用する新しい KMS キーが作成されました。このキーによって AWS DMS は S3 ターゲットオブジェクトを暗号化できます。

Note

また、AWS Key Management Service を使用し、IAM のロールとポリシーで KMS キーを作成して管理することもできます。詳細については、「キー管理サービス (KMS): 開発者ガイド」を参照してください。

AWS DMS のターゲットとして Amazon S3 を使用する場合のエンドポイントの設定エンドポイントの設定を使用して、追加の接続属性の使用と同様に、Amazon S3 ターゲットを構成できます。AWS CLI の --s3-settings 'json-settings' オプションで create-endpoint コマンドを使用してターゲットエンドポイントを作成するときに、これらの設定を指定できます。ここで、 json-settings とは、設定を指定するパラメータを含む JSON オブジェクトです。また、同じjson-settings オブジェクトが含まれる .json ファイルを指定することもできます。たとえば、次のようにできます。--s3-settings file:///your-file-path/my_s3_settings.jsonここでmy_s3_settings.json は、同じ json-settings object を含む .json ファイルの名前です。

API バージョン API Version 2016-01-01198

Page 206: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon S3 の使用

エンドポイント設定に使用するパラメータの名前は、相当するの追加の接続属性の名前と同じであることに注意してください。ただし、エンドポイント設定のパラメータの名前の最初の文字が大文字である場合は除きます。また、追加の接続属性を使用したすべての S3 ターゲットエンドポイント設定で create-endpoint コマンドの --s3-settings オプション が使用できるわけではないことにも注意してください。create-endpoint を呼び出す AWS CLI コールで利用できる設定についての詳細は、AWS DMSのAWS CLI Command Referenceの「create-endpoint」を参照してください。上述の設定についての詳細は、「AWS DMS のターゲットとして Amazon S3 を使用する場合の追加の接続属性 (p. 200)」の相当する追加の接続属性を参照してください。

S3 ターゲットエンドポイント設定を使用して、以下を構成できます。

• S3 ターゲットオブジェクトを暗号化するカスタム KMS キー• S3 ターゲットオブジェクトのストレージ形式としての Parquet ファイル

データ暗号化に対する KMS キー設定次の例では、S3 ターゲットオブジェクトを暗号化するカスタム KMS キーの設定を示しています。開始するには、AWS CLI で次の create-endpoint 呼び出しを行う場合があります。

aws dms create-endpoint --endpoint-identifier s3-target-endpoint --engine-name s3 --endpoint-type target --s3-settings '{"ServiceAccessRoleArn": "your-service-access-ARN", "CsvRowDelimiter": "\n", "CsvDelimiter": ",", "BucketFolder": "your-bucket-folder", "BucketName": "your-bucket-name", "EncryptionMode": "SSE_KMS", "ServerSideEncryptionKmsKeyId": "arn:aws:kms:us-east-1:944454115380:key/72abb6fb-1e49-4ac1-9aed-c803dfcc0480"}'

ここでは、--s3-settings オプションで指定される JSON オブジェクトは 2 つのパラメータを定義します。1 つは、値が SSE_KMS の EncryptionMode パラメータです。もう 1 つは、arn:aws:kms:us-east-1:944454115380:key/72abb6fb-1e49-4ac1-9aed-c803dfcc0480 の値があるServerSideEncryptionKmsKeyId パラメータです。この値は、カスタム KMS キーの Amazon リソースネーム (ARN) です。S3 ターゲットの場合、追加の設定も指定します。これによって、ロールへのサーバーアクセスの識別、デフォルトの CSV オブジェクトストレージ形式の区切り記号の提供、S3 ターゲットオブジェクトを保存するバケットの場所と名前の指定が行われます。

デフォルトでは、S3 データ暗号化は S3 サーバー側の暗号化を使用して行われます。前述の例の S3 ターゲットの場合、次の例に示すように、これはそのエンドポイント設定を指定することと同様です。

aws dms create-endpoint --endpoint-identifier s3-target-endpoint --engine-name s3 --endpoint-type target--s3-settings '{"ServiceAccessRoleArn": "your-service-access-ARN", "CsvRowDelimiter": "\n", "CsvDelimiter": ",", "BucketFolder": "your-bucket-folder", "BucketName": "your-bucket-name", "EncryptionMode": "SSE_S3"}'

S3 サーバー側暗号化の使用の詳細については、「サーバー側の暗号化を使用したデータの保護」を参照してください。

S3 ターゲットオブジェクトを保存するために .parquet ファイルを使用する設定S3 ターゲットオブジェクトを作成するデフォルトの形式は .csv ファイルです。次の例では、S3 ターゲットオブジェクトを作成する形式として .parquet ファイルを指定するいくつかのエンドポイント設定を示しています。次の例に示すように、すべてのデフォルトで .parquet ファイル形式を指定できます。

aws dms create-endpoint --endpoint-identifier s3-target-endpoint --engine-name s3 --endpoint-type target

API バージョン API Version 2016-01-01199

Page 207: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon S3 の使用

--s3-settings '{"ServiceAccessRoleArn": "your-service-access-ARN", "DataFormat": "parquet"}'

ここでは、DataFormat パラメータが parquet に設定されて、すべての S3 デフォルトでこの形式を有効化しています。これらのデフォルトには、繰り返し値を効率的に保存するためにビットパッキングおよびランレングスエンコードの組み合わせを使用するディクショナリエンコード ("EncodingType: "rle-dictionary") が含まれます。

次の例に示すように、デフォルト以外のオプションに追加の設定をさら加えることができます。

aws dms create-endpoint --endpoint-identifier s3-target-endpoint --engine-name s3 --endpoint-type target --s3-settings '{"ServiceAccessRoleArn": "your-service-access-ARN", "BucketFolder": "your-bucket-folder", "BucketName": "your-bucket-name", "compressionType": "GZIP", "DataFormat": "parquet", "EncodingType: "plain-dictionary", "dictPageSizeLimit": "3,072,000", "EnableStatistics": "false" }'

ここでは、複数の標準 S3 バケットオプションおよび DataFormat パラメータに加えて、次のような追加の .parquet ファイルパラメータが設定されています。

• EncodingType – ディクショナリページの列チャンクごとで各列に発生する値を格納するディクショナリエンコード (plain-dictionary) を設定します。

• dictPageSizeLimit – ディクショナリページの最大のサイズを 3 MB に設定します。• EnableStatistics – Parquet ファイルページおよび行グループに関する統計のコレクションを有効化

するデフォルトを無効にします。

AWS DMS のターゲットとして Amazon S3 を使用する場合の追加の接続属性追加の接続属性として次のオプションを指定できます。接続属性の設定が複数ある場合は、空白を追加せずにそれぞれをセミコロンで区切ります。

オプション 説明

addColumnName true または y に設定された場合に .csv 出力ファイルに列名情報を追加するために使用できるオプションのパラメータ。

デフォルト値: false

有効な値: true、false、y、n

例:

addColumnName=true;

bucketFolder S3バケット内のフォルダ名を設定するオプションのパラメータ。このパラメータを指定した場合、ターゲットオブジェクトは .csv または .parquetファイルとしてパス bucketFolder/schema_name/table_name/ に作成されます。このパラメータを指定しない場合、使用されるパスはschema_name/table_name/ となります。

例:

bucketFolder=testFolder;

API バージョン API Version 2016-01-01200

Page 208: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon S3 の使用

オプション 説明

bucketName S3 ターゲットオブジェクトが .csv または .parquet ファイルとして作成される S3 バケットの名前。

例:

bucketName=buckettest;

cannedAclForObjects S3 バケットに csv または .parquet ファイルとして作成されたオブジェクトに対して、定義済みの (既定の) アクセスコントロールリストを AWS DMSが指定できるようにする値。Amazon S3 の既定 ACL の詳細については、『Amazon S3 開発者ガイド』の「既定 ACL」を参照してください。

デフォルト値: なし

この属性の有効な値は、NONE、PRIVATE、PUBLIC_READ、PUBLIC_READ_WRITE、AUTHENTICATED_READ、AWS_EXEC_READ、BUCKET_OWNER_READ、BUCKET_OWNER_FULL_CONTROLです。

例:

cannedAclForObjects=PUBLIC_READ;

cdcInsertsOnly 変更データキャプチャ (CDC) ロード時のオプションのパラメータ。INSERTオペレーションのみをカンマ区切り値 (.csv) または列ストレージ (.parquet)の出力ファイルに書き込みます。デフォルト (false 設定) では、.csv または .parquet レコードの最初のフィールドに I (INSERT)、U (UPDATE)、または D (DELETE) 文字が含まれ、ターゲットへの CDC ロード用のソースデータベースで行が挿入されたか、更新されたか、削除されたかを示します。cdcInsertsOnly が true または y に設定されている場合、ソースデータベースからの INSERT のみが .csv または .parquet ファイルに移行されます。

.csv 形式の場合にのみ、これらの INSERTS の記録方法は includeOpForFullLoad の値によって異なります。includeOpForFullLoad が true に設定されている場合、各 CDC レコードの最初のフィールドは、ソースでの INSERT オペレーションを示す Iに設定されます。includeOpForFullLoad が false に設定されている場合、各 CDC レコードは、ソースでの INSERT オペレーションを示す最初のフィールドなしで書き込まれます。これらのパラメータがどのように連動するかの詳細については、「移行済み S3 データでのソース DB オペレーションの表示 (p. 207)」を参照してください。

Note

AWS DMS は、バージョン 3.1.4 以降で cdcInsertsOnly とincludeOpForFullLoad のこの連動をサポートしています。

デフォルト値: false

有効な値: true、false、y、n

例:

cdcInsertsOnly=true;

API バージョン API Version 2016-01-01201

Page 209: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon S3 の使用

オプション 説明

includeOpForFullLoad全ロード時のオプションのパラメータ。INSERT オペレーションのみをカンマ区切り値 (.csv) 出力ファイルに書き込みます。

Note

AWS DMS は、バージョン 3.1.4 以降で includeOpForFullLoadをサポートしています。

全ロードの場合、レコードの挿入のみ可能です。デフォルト (false 設定) では、全ロードの場合、ソースデータベースで行が挿入されたことを示す情報はこれらの出力ファイルに記録されません。includeOpForFullLoad がtrue または y に設定されている場合、INSERT は .csv ファイルの最初のフィールドに I 注釈として記録されます。

Note

このパラメータは、.csv ファイルへの出力の場合にのみ、cdcInsertsOnly と連動します。これらのパラメータがどのように連動するかの詳細については、「移行済み S3 データでのソースDB オペレーションの表示 (p. 207)」を参照してください。

デフォルト値: false

有効な値: true、false、y、n

例:

includeOpForFullLoad=true;

compressionType GZIP に設定された場合にターゲットの .csv または .parquet ファイルを圧縮するために GZIP を使用するオプションのパラメータ。このパラメータがデフォルトに設定されている場合、ファイルは圧縮されないままになります。

デフォルト値: NONE

有効な値: GZIP または NONE

例:

compressionType=GZIP;

csvDelimiter .csv ソースファイル内の列を分離するために使用される区切り文字。デフォルトはカンマ (,) です。

例:

csvDelimiter=,;

csvRowDelimiter .csv ソースファイル内の行を分離するために使用される区切り文字。デフォルトでは、改行 (\n) です。

例:

csvRowDelimiter=\n;

API バージョン API Version 2016-01-01202

Page 210: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon S3 の使用

オプション 説明

maxFileSize 全ロードで S3 に移行中に作成される .csv ファイルの最大サイズ (KB 単位)を指定する値です。

デフォルト値: 1048576 KB (1 GB)

有効な値: 1 ~ 1048576

例:

maxFileSize=512

rfc4180 .csv ファイル形式のみを使用して Amazon S3 に移行するデータに対して、RFC に準拠する動作を設定するために使用するオプションのパラメータ。Amazon S3 をターゲットとして使用してこの値を true あるいは y に設定する場合、データに引用符あるいは改行文字が含まれていると、AWS DMSは行全体を追加の二重引用符 (") で囲みます。データ内のすべての引用符が 2回が繰り返されます。このフォーマットの RFC 4180 に準拠しています。

デフォルト値: true

有効な値: true、false、y、n

例:

rfc4180=false;

encryptionMode S3 にコピーした .csv または .parquet オブジェクトファイルを暗号化するサーバー側の暗号化モードです。有効な値は、SSE_S3 (S3 サーバー側の暗号化) または SSE_KMS (KMS キーの暗号化) です。SSE_KMS を選択する場合、暗号化のために使用する KMS キーの Amazon リソースネーム (ARN) にserverSideEncryptionKmsKeyId パラメータを設定します。

デフォルト値: SSE_S3

有効な値: SSE_S3 または SSE_KMS

例:

encryptionMode=SSE_S3;

serverSideEncryptionKmsKeyIdencryptionMode を SSE_KMS に設定した場合は、このパラメータを KMSキーの Amazon リソースネーム (ARN) に設定します。アカウントに作成した KMS キーのリスト内でキーエイリアスを選択すると、この ARN が見つかります。キーを作成する場合、特定のポリシーと関連付けられるロールをこの KMS キーに関連付ける必要があります。詳細については、「Amazon S3ターゲットオブジェクトを暗号化する AWS KMS キーの作成 (p. 195)」を参照してください。

例:

serverSideEncryptionKmsKeyId=arn:aws:kms:us-east-1:944454115380:key/72abb6fb-1e49-4ac1-9aed-c803dfcc0480;

API バージョン API Version 2016-01-01203

Page 211: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon S3 の使用

オプション 説明

dataFormat S3 オブジェクトを作成するために AWS DMS が使用するファイルの出力形式。Amazon S3 ターゲットに対して AWS DMS は、.csv または .parquetファイルをサポートしています。.parquet ファイルには、十分な圧縮オプションおよびより高速なクエリパフォーマンスのバイナリ列指向ストレージがあります。.parquet ファイルについての詳細は、「https://parquet.apache.org/」を参照してください。

デフォルト値: csv

有効な値: csv または parquet

例:

dataFormat=parquet;

encodingType Parquet エンコードタイプです。このエンコードタイプオプションには、次が含まれます。

• rle-dictionary – このディクショナリエンコードは、より効率的な繰り返し値のストレージを行うためにビットパッキングとランレングスエンコードを組み合わせて使用します。

• plain – エンコードなし。• plain-dictionary – このディクショナリエンコードは、特定の列で発生

する値のディクショナリを構築します。ディクショナリは各列チャンクのディクショナリページに保存されます。

デフォルト値: rle-dictionary

有効な値: rle-dictionary、plain、または plain-dictionary

例:

encodingType=plain-dictionary;

dictPageSizeLimit .parquet ファイルのディクショナリページで許容される最大サイズ (バイト単位)。ディクショナリページがこの値を超えると、このページではプレーンエンコードが使用されます。

デフォルト値: 1,024,000 (1 MB)

有効な値: 任意の有効な整数値

例:

dictPageSizeLimit=2,048,000;

rowGroupLength .parquet ファイルの 1 つの行グループの行数です。

デフォルト値: 10,024 (10 KB)

有効な値: 任意の有効な整数値

例:

rowGroupLength=20,048;

API バージョン API Version 2016-01-01204

Page 212: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon S3 の使用

オプション 説明

dataPageSize .parquet ファイルのデータページで許容される最大サイズ (バイト単位)。

デフォルト値: 1,024,000 (1 MB)

有効な値: 任意の有効な整数値

例:

dataPageSize=2,048,000;

parquetVersion .parquet ファイル形式のバージョン。

デフォルト値: PARQUET_1_0

有効な値: PARQUET_1_0 または PARQUET_2_0

例:

parquetVersion=PARQUET_2_0;

enableStatistics true または y に設定された場合に、.parquet ファイルと行グループに関する統計を有効化します。

デフォルト値: true

有効な値: true、false、y、n

例:

enableStatistics=false;

API バージョン API Version 2016-01-01205

Page 213: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon S3 の使用

オプション 説明

timestampColumnName S3 ターゲットエンドポイントデータにタイムスタンプ列を含めるためのオプションのパラメータ。

Note

AWS DMS は、バージョン 3.1.4 以降で timestampColumnName をサポートしています。

timestampColumnName を空白以外の値に設定すると、AWS DMS に移行済みデータの .csv または .parquet ファイルに追加の STRING 列が含まれます。

全ロードの場合、このタイムスタンプ列の各行には、データが DMS によってソースからターゲットに転送されたときのタイムスタンプが含まれます。

CDC ロードの場合、タイムスタンプ列の各行には、ソースデータベースでのその行のコミットのタイムスタンプが含まれます。

タイムスタンプ列の値の文字列形式は yyyy-MM-dd HH:mm:ss.SSSSSS です。デフォルトでは、この値の精度はマイクロ秒です。CDC 負荷の場合、精度の丸めについては、ソースデータベースに対して DMS でサポートされているコミットのタイムスタンプによって異なります。

addColumnName パラメータが true に設定されている場合、DMS によって、timestampColumnName の空白以外の値として設定したタイムスタンプ列の名前も含まれます。

例:

timestampColumnName=TIMESTAMP;

API バージョン API Version 2016-01-01206

Page 214: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon S3 の使用

オプション 説明

parquetTimestampInMillisecond.parquet 形式で S3 オブジェクトに書き込まれるすべての TIMESTAMP 列値の精度を指定するオプションのパラメータ。

Note

AWS DMS は、バージョン 3.1.4 以降でparquetTimestampInMillisecond をサポートしています。

この属性を true または y に設定すると、AWS DMS はすべてのTIMESTAMP 列をミリ秒の精度で .parquet 形式のファイルに書き込みます。それ以外の場合、DMS はそれらをマイクロ秒の精度で書き込みます。

現在、Amazon Athena と AWS Glue は、TIMESTAMP 値をミリ秒の精度でのみ処理できます。データを Athena または AWS Glue でクエリまたは処理する場合にのみ、.parquet 形式の S3 エンドポイントオブジェクトファイルに対してこの属性を true に設定します。

Note

• AWS DMS は、マイクロ秒の精度で .csv 形式で S3 ファイルに書き込まれたすべての TIMESTAMP 列値を書き込みます。

• この属性の設定は、timestampColumnName 属性を設定することで挿入されたタイムスタンプ列値の文字列の形式には影響しません。

デフォルト値: false

有効な値: true、false、y、n

例:

parquetTimestampInMillisecond=true;

移行済み S3 データでのソース DB オペレーションの表示

AWS DMS は S3 ターゲットにレコードを移行するとき、移行済みレコードのそれぞれに追加のフィールドを作成できます。この追加のフィールドは、ソースデータベースでレコードに適用されたオペレーションを示します。

全ロードの場合、includeOpForFullLoad が true であり、出力形式が .csv であるとき、DMS は常に各 .csv レコードに追加の最初のフィールドを作成します。このフィールドには、ソースデータベースで行が挿入されたことを示す文字 I (INSERT) が含まれます。また、CDC ロードの場合、cdcInsertsOnlyが false (デフォルト) であるとき、DMS は常に各 .csv レコードまたは .parquet レコードに追加の最初のフィールドを作成します。このフィールドには、ソースデータベースで行が挿入されたか、更新されたか、削除されたかを示す文字 I (INSERT)、U (UPDATE)、または D (DELETE) が含まれます。

出力形式が .csv の場合にのみ、DMS がこの最初のフィールドを作成して設定するかどうか、またその方法は、includeOpForFullLoad と cdcInsertsOnly の両方の設定によっても異なります。以下の表では、これらの属性の設定がどのように連動して、この形式の移行済みレコードの設定に影響するかを確認できます。

Note

AWS DMS は、バージョン 3.1.4 以降で includeOpForFullLoad をサポートしており、ここで説明している includeOpForFullLoad と cdcInsertsOnly の連動をサポートしています。

API バージョン API Version 2016-01-01207

Page 215: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon DynamoDB の使用

使用するパラメータ設定 DMS が .csv 出力用に設定するターゲットレコード

true true 最初のフィールド値が追加されて I に設定

最初のフィールド値が追加されて I に設定

false false 追加のフィールドなし 最初のフィールド値が追加されて I、U、または D に設定

false true 追加のフィールドなし 追加のフィールドなし

true false 最初のフィールド値が追加されて I に設定

最初のフィールド値が追加されて I、U、または D に設定

includeOpForFullLoad と cdcInsertsOnly が同じ値に設定されている場合、ターゲットレコードは現在の移行タイプのレコード設定を制御する属性に従って設定されます。その属性は、全ロードの場合はincludeOpForFullLoad、CDC ロードの場合は cdcInsertsOnly です。

includeOpForFullLoad と cdcInsertsOnly が異なる値に設定されている場合、AWS DMS によってターゲットレコードの設定は CDC と全ロードの両方に対して一貫したものになります。これは、CDCロードのレコード設定を、includeOpForFullLoad で指定された前の全ロードのレコード設定と一致させることで行われます。

つまり、挿入されたレコードを示す最初のフィールドを追加するように全ロードが設定されているとします。この場合、続く CDC ロードは、挿入、更新、または削除されたレコードを示す最初のフィールドをソースで必要に応じて追加するように設定されます。逆に、挿入されたレコードを示す最初のフィールドを追加しないように全ロードが設定されているとします。この場合、CDC ロードも、ソースでの対応するレコードオペレーションに関係なく、各レコードに最初のフィールドを追加しないように設定されます。

AWS Database Migration Service のターゲットとしての Amazon DynamoDB データベースの使用Amazon DynamoDB のテーブルにデータを移行するために、AWS DMS を使用できます。AmazonDynamoDB は、完全マネージド型の NoSQL データベースサービスであり、高速で予測可能なパフォーマンスとシームレスなスケーラビリティが特長です。AWS DMS では、ソースとしてリレーショナルデータベースや MongoDB を使用できます。

DynamoDB では、テーブル、項目、および属性が、操作するコアコンポーネントです。テーブルは項目のコレクションであり、各項目は属性のコレクションです。DynamoDB はプライマリキー (パーティションキーと呼ばれる) を使用してテーブルの各項目を一意に識別します。より柔軟なクエリを提供するために、キーおよびセカンダリインデックスを使用することもできます。

ソースのデータベースから、ターゲット DynamoDB テーブルにデータを移行するために、オブジェクトのマッピングを使用します。オブジェクトのマッピングを使用すると、ソースデータがターゲットのどこにあるか判定できます。

AWS DMS が DynamoDB ターゲットエンドポイントでテーブルを作成するときに、ソースデータベースのエンドポイントと同じ数のテーブルを作成します。また、AWS DMS はいくつかの DynamoDB パラメータ値も設定します。テーブル作成のコストは、データの量および移行するテーブルの数によって異なります。

転送の速度を高めるために、AWS DMS は DynamoDB ターゲットインスタンスへのマルチスレッドフルロードがサポートされています。DMS では、このマルチスレッドでのタスク設定を、以下でサポートします。

API バージョン API Version 2016-01-01208

Page 216: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon DynamoDB の使用

• MaxFullLoadSubTasks – 並行してロードするソーステーブルの最大数を指定するには、このオプションを使用します。DMS は、専用のサブタスクを使用して、対応する DynamoDB ターゲットテーブルに各テーブルをロードします。デフォルトは 8、最大値は 49 です。

• ParallelLoadThreads – AWS DMS が各テーブルを DynamoDB ターゲットテーブルにロードするために使用するスレッドの数を指定するには、このオプションを使用します。DynamoDB ターゲットの最大値は 32 です。この上限を増やすよう依頼できます。

• ParallelLoadBufferSize – DynamoDB ターゲットにデータをロードするために並列ロードスレッドが使用する、バッファ内に保存するレコードの最大数を指定するには、このオプションを使用します。デフォルト値は 50 です。最大値は 1000 です。この設定は ParallelLoadThreads で使用します。ParallelLoadBufferSize は、複数のスレッドがある場合にのみ有効です。

• 個々のテーブルのテーブルマッピング設定 – table-settings ルールを使用して、並行してロードするソースから個々のテーブルを識別します。また、これらのルールを使用して、各テーブルの行をマルチスレッドロード用にセグメント化する方法を指定します。詳細については、テーブル設定のルールとオペレーション (p. 304) を参照してください。

Note

DMS は、テーブルの各セグメントを独自のスレッドに割り当てロードします。したがって、ParallelLoadThreads をソースのテーブルに指定するセグメントの最大数に設定します。

AWS DMS が移行タスクの DynamoDB パラメータ値を設定するときに、デフォルトの読み込みキャパシティーユニット (RCU) パラメータ値が 200 に設定されます。

書き込みキャパティティーユニット (WCU) のパラメータ値も設定されますが、その値は他のいくつかの設定によって異なります。

• WCU パラメータのデフォルト値は 200 です。• ParallelLoadThreads タスク設定が 1 より大きい値に設定された場合 (デフォルトは 0)、WCU パラ

メータは ParallelLoadThreads 値の 200 倍に設定されます。• 米国東部(バージニア北部) リージョン (us-east-1) では、使用可能な最大 WCU パラメータ値は

40,000 です。AWS リージョンが us-east-1 で、WCU パラメータが 40,000 より大きい場合、WCU パラメータ値は 40,000 に設定されます。

• us-east-1 以外の AWS リージョンでは、使用可能な最大 WCU パラメータは 10,000 です。us-east-1以外の AWS リージョンでは、WCU パラメータが 10,000 より大きい値に設定された場合、WCU パラメータ値は 10,000 に設定されます。

リレーショナルデータベーステーブルから DynamoDB テーブルへの移行AWS DMS は、DynamoDB のスカラーデータ型へのデータの移行をサポートしています。Oracle やMySQL などのリレーショナルデータベースから DynamoDB に移行する場合は、データを格納する方法を再編成が必要となる場合があります。

現在 AWS DMS は、単一テーブルから単一テーブルに移行する場合の、DynamoDB のスカラー型属性への再構成をサポートしています。リレーショナルデータベースのテーブルから DynamoDB にデータを移行する場合、テーブルからデータを取得し、DynamoDB のスカラーデータ型属性に形式を変更します。これらの属性は複数の列からデータを受け入れることができるため、列を属性に直接マッピングすることができます。

AWS DMS は以下の DynamoDB のスカラーデータ型をサポートしています。

• 文字列• 数値

API バージョン API Version 2016-01-01209

Page 217: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon DynamoDB の使用

• Boolean

Note

ソースからの NULL データは、ターゲットで無視されます。

AWS Database Migration Service のターゲットとしてDynamoDB を使用する場合の前提条件AWS DMS のターゲットとして DynamoDB データベースの使用を開始する前に、IAM ロールを必ず作成します。この IAM ロールは、AWS DMS によって引き受けることができ、移行先の DynamoDB テーブルへのアクセスを付与できることが必要です。アクセス許可の最小設定は、次のサンプルロールのポリシーで示します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "dms.amazonaws.com" }, "Action": "sts:AssumeRole" }]}

DynamoDB に移行する際に使用するロールには、次のアクセス許可が必要です。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:PutItem", "dynamodb:CreateTable", "dynamodb:DescribeTable", "dynamodb:DeleteTable", "dynamodb:DeleteItem" ], "Resource": [ "arn:aws:dynamodb:us-west-2:account-id:table/Name1", "arn:aws:dynamodb:us-west-2:account-id:table/OtherName*", ] },{ "Effect": "Allow", "Action": [ "dynamodb:ListTables" ], "Resource": "*" } ]}

API バージョン API Version 2016-01-01210

Page 218: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon DynamoDB の使用

AWS Database Migration Service のターゲットとしてDynamoDB を使用する場合の制限ターゲットとして DynamoDB を使用する場合、以下の制限が適用されます。

• DynamoDB は、数値データ型の最大精度を 38 に制限します。文字列として高い精度のすべてのデータ型を保存します。オブジェクトマッピング機能を使用して、これを明示的に指定する必要があります。

• DynamoDB に Date データ型はないため、Date データ型を使用しているデータは、文字列に変換されます。

• DynamoDB はプライマリキー属性を更新しません。この制限は、ターゲットで不要なデータが発生する可能性があるため、変更データキャプチャ (CDC) で継続的なレプリケーションを使用する場合に重要です。オブジェクトのマッピング方法に応じて、プライマリキーを更新する CDC オペレーションは 2 つのうちのいずれかを実行できます。これは、更新されたプライマリキーおよび不完全なデータがある新しい項目を挿入できるか、あるいは失敗するかのいずれかです。

• AWS DMS は、非複合プライマリキーを含むテーブルのレプリケーションのみをサポートします。例外は、カスタムパーティションキーまたはソートキー、あるいはその両方があるターゲットテーブルにオブジェクトマッピングを指定する場合です。

• AWS DMS は、CLOB でない限り LOB データはサポートしません。AWS DMS は、データの移行時にCLOB データを DynamoDB 文字列に変換します。

• ターゲットとして DynamoDB を使用する場合、例外適用制御テーブル(dmslogs.awsdms_apply_exceptions) のみがサポートされます。統制テーブルの詳細については、「制御テーブルタスク設定 (p. 266)」を参照してください。

DynamoDB にデータを移行するためのオブジェクトマッピングの使用AWS DMS は、ソースからターゲット DynamoDB テーブルにデータをマッピングするためのテーブルマッピングルールを使用します。DynamoDB ターゲットにデータをマッピングするために、オブジェクトマッピングと呼ばれるテーブルマッピングルールのタイプを使用します。オブジェクトマッピングにより、移行するデータの属性名とデータを定義できます。オブジェクトマッピングを使用するときは選択ルールが必要です。

DynamoDB には、パーティションのキーとオプションのソートキー以外に、プリセット構造はありません。非複合プライマリキーが存在する場合は、AWS DMS はそのキーを使用します。複合プライマリキーがある場合、またはソートキーを使用する必要がある場合は、ターゲット DynamoDB テーブルでそれらのキーと他の属性を定義します。

オブジェクトマッピングルールを作成するには、rule-type を object-mapping として指定します。このルールが、使用したいるオブジェクトマッピングのタイプを指定します。

ルールの構造は次のとおりです。

{ "rules": [ { "rule-type": "object-mapping", "rule-id": "<id>", "rule-name": "<name>", "rule-action": "<valid object-mapping rule action>", "object-locator": { "schema-name": "<case-sensitive schema name>", "table-name": "" }, "target-table-name": "<table_name>", }

API バージョン API Version 2016-01-01211

Page 219: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon DynamoDB の使用

} ]}

AWS DMS では現在、rule-action パラメータに対する有効な値として map-record-to-record および map-record-to-document のみがサポートされています。これらの値は、exclude-columns 属性リストの一部として除外されてないものとして AWS DMS がデフォルトで記録するものを指定します。これらの値は、どのような方法でも属性マッピングに影響しません。

• リレーショナルデータベースから DynamoDB に移行するときに map-record-to-record を使用できます。DynamoDB のパーティションキーとしてリレーショナルデータベースからプライマリキーを使用し、ソースデータベース内の各列の属性を作成します。map-record-to-record を使用する場合、exclude-columns 属性リストに示されていないソーステーブル内のすべての列について、AWSDMS はターゲット DynamoDB インスタンスに対応する属性を作成します。これは、そのソース列が属性マッピングで使用されているかどうかにかかわらず作成されます。

• map-record-to-document を使用して、ターゲットの 1 つのフラット DynamoDB マップに "_doc."属性名でソース列を配置します。 map-record-to-document を使用する場合、AWS DMS はソースの 1 つのフラットな DynamoDB マップ属性にデータを配置します。この属性は "_doc." と呼ばれます。この配置は、exclude-columns 属性リストに含まれていないソーステーブル内のすべての列に適用されます。

rule-action パラメータの map-record-to-record と map-record-to-document の違いを理解する 1 つの方法は、この 2 つのパラメータの動作を確認することです。この例では、次の構造とデータを含むリレーショナルデータベースのテーブルから始めると想定してください。

この情報を DynamoDB に移行するには、データを DynamoDB テーブル項目にマッピングするルールを作成します。パラメータにリストされている exclude-columns 列を書き留めてください。これらの列はターゲットに直接マッピングされていません。その代わりに、データを組み合わせて新しい項目を作成するために、属性マッピングが使用されています。たとえば、FirstName と LastName を組み合わせるとDynamoDB ターゲット上の CustomerName になります。NickName と income は除外されていません。

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "object-mapping", "rule-id": "1", "rule-name": "TransformToDDB", "rule-action": "map-record-to-record", "object-locator": { "schema-name": "test", "table-name": "customer" }, "target-table-name": "customer_t", "mapping-parameters": { "partition-key-name": "CustomerName", "exclude-columns": [

API バージョン API Version 2016-01-01212

Page 220: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon DynamoDB の使用

"FirstName", "LastName", "HomeAddress", "HomePhone", "WorkAddress", "WorkPhone" ], "attribute-mappings": [ { "target-attribute-name": "CustomerName", "attribute-type": "scalar", "attribute-sub-type": "string", "value": "${FirstName},${LastName}" }, { "target-attribute-name": "ContactDetails", "attribute-type": "document", "attribute-sub-type": "dynamodb-map", "value": { "M": { "Home": { "M": { "Address": { "S": "${HomeAddress}" }, "Phone": { "S": "${HomePhone}" } } }, "Work": { "M": { "Address": { "S": "${WorkAddress}" }, "Phone": { "S": "${WorkPhone}" } } } } } } ] } } ]}

rule-action パラメータ map-record-to-record を使用することで、NickName および income のデータは、DynamoDB ターゲットで同じ名前の項目にマッピングされます。

API バージョン API Version 2016-01-01213

Page 221: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon DynamoDB の使用

ただし、同じルールを使用しますが rule-action パラメータを map-record-to-document に変更するとします。この場合、exclude-columns パラメータ、NickName および income にリストされない列は、_doc 項目にマッピングされます。

オブジェクトマッピングでのカスタム条件式の使用

DynamoDB テーブルに書き込まれているデータを操作するための条件式と呼ばれる DynamoDB の機能を使用することができます。DynamoDB の条件式の詳細については、「条件式」を参照してください。

条件式のメンバーは次から構成されます。

• 式 (必須)• 式の属性値 (オプション)属性値の DynamoDB json 構造を指定します• 式の属性名 (オプション)• 条件式をいつ使用するかを選ぶオプション (オプション)デフォルトは apply-during-cdc = false および

apply-during-full-load = true

API バージョン API Version 2016-01-01214

Page 222: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon DynamoDB の使用

ルールの構造は次のとおりです。

"target-table-name": "customer_t", "mapping-parameters": { "partition-key-name": "CustomerName", "condition-expression": { "expression":"<conditional expression>", "expression-attribute-values": [ { "name":"<attribute name>", "value":<attribute value> } ], "apply-during-cdc":<optional Boolean value>, "apply-during-full-load": <optional Boolean value> }

次のサンプルは、条件式に使用されるセクションを主に示しています。

オブジェクトマッピングで属性マッピングを使用する属性マッピングでは、ターゲット上のデータを再編成するために、ソース列名を使用してテンプレート文字列を指定することができます。ユーザーがテンプレートで指定する場合を除き、書式設定は行われません。

API バージョン API Version 2016-01-01215

Page 223: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon DynamoDB の使用

次の例は、ソースデータベースの構造と、DynamoDB ターゲットの必要とされる構造を示します。最初に示すのは、ソースの構造で、この場合は Oracle データベースです。次に DynamoDB 内のデータの必要とされる構造を示します。この例では最後に、必要なターゲット構造を作成するのに使用される JSON を示します。

Oracle データの構造は次のとおりです。

FirstNameLastNameStoreIdHomeAddressHomePhoneWorkAddressWorkPhoneDateOfBirth

プライマリキー

該当なし  

RandyMarsh5 221BBakerStreet

123456789031SpoonerStreet,Quahog

987654321002/29/1988

DynamoDB データは以下のような構造になっています。

CustomerNameStoreId ContactDetails DateOfBirth

パーティション

キー

ソートキー

該当なし

Randy,Marsh5 { "Name": "Randy", "Home": { "Address": "221B Baker Street", "Phone": 1234567890 }, "Work": { "Address": "31 Spooner Street, Quahog", "Phone": 9876541230 }}

02/29/1988

次の JSON は、DynamoDB 構造を達成するために使用されるオブジェクトマッピングと列マッピングを示します。

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, {

API バージョン API Version 2016-01-01216

Page 224: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon DynamoDB の使用

"rule-type": "object-mapping", "rule-id": "2", "rule-name": "TransformToDDB", "rule-action": "map-record-to-record", "object-locator": { "schema-name": "test", "table-name": "customer" }, "target-table-name": "customer_t", "mapping-parameters": { "partition-key-name": "CustomerName", "sort-key-name": "StoreId", "exclude-columns": [ "FirstName", "LastName", "HomeAddress", "HomePhone", "WorkAddress", "WorkPhone" ], "attribute-mappings": [ { "target-attribute-name": "CustomerName", "attribute-type": "scalar", "attribute-sub-type": "string", "value": "${FirstName},${LastName}" }, { "target-attribute-name": "StoreId", "attribute-type": "scalar", "attribute-sub-type": "string", "value": "${StoreId}" }, { "target-attribute-name": "ContactDetails", "attribute-type": "scalar", "attribute-sub-type": "string", "value": "{\"Name\":\"${FirstName}\",\"Home\":{\"Address\":\"${HomeAddress}\",\"Phone\":\"${HomePhone}\"}, \"Work\":{\"Address\":\"${WorkAddress}\",\"Phone\":\"${WorkPhone}\"}}" } ] } } ]}

列マッピングを使用するもう 1 つの方法は、ドキュメントタイプとして DynamoDB 形式を使用することです。次のコード例では、属性マッピングの attribute-sub-type としてdynamodb-map を使用します。

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include"

API バージョン API Version 2016-01-01217

Page 225: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon DynamoDB の使用

}, { "rule-type": "object-mapping", "rule-id": "2", "rule-name": "TransformToDDB", "rule-action": "map-record-to-record", "object-locator": { "schema-name": "test", "table-name": "customer" }, "target-table-name": "customer_t", "mapping-parameters": { "partition-key-name": "CustomerName", "sort-key-name": "StoreId", "exclude-columns": [ "FirstName", "LastName", "HomeAddress", "HomePhone", "WorkAddress", "WorkPhone" ], "attribute-mappings": [ { "target-attribute-name": "CustomerName", "attribute-type": "scalar", "attribute-sub-type": "string", "value": "${FirstName},${LastName}" }, { "target-attribute-name": "StoreId", "attribute-type": "scalar", "attribute-sub-type": "string", "value": "${StoreId}" }, { "target-attribute-name": "ContactDetails", "attribute-type": "scalar", "attribute-sub-type": "string", "value": "{\"Name\":\"${FirstName}\",\"Home\":{\"Address\":\"${HomeAddress}\",\"Phone\":\"${HomePhone}\"}, \"Work\":{\"Address\":\"${WorkAddress}\",\"Phone\":\"${WorkPhone}\"}}" } ] } } ]}

例1: オブジェクトマッピングで属性マッピングを使用する次の例は、2 つの MySQL データベーステーブル nfl_data と sport_team のデータを、NFLTeams とSportTeams という 2 つの DynamoDB テーブルへ移行します。テーブルの構造、および MySQL データベーステーブルから DynamoDB テーブルへデータをマップするために使用される JSON は、次のとおりです。

MySQL データベース nfl_data の構造は次のとおりです。

mysql> desc nfl_data;+---------------+-------------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+---------------+-------------+------+-----+---------+-------+

API バージョン API Version 2016-01-01218

Page 226: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon DynamoDB の使用

| Position | varchar(5) | YES | | NULL | || player_number | smallint(6) | YES | | NULL | || Name | varchar(40) | YES | | NULL | || status | varchar(10) | YES | | NULL | || stat1 | varchar(10) | YES | | NULL | || stat1_val | varchar(10) | YES | | NULL | || stat2 | varchar(10) | YES | | NULL | || stat2_val | varchar(10) | YES | | NULL | || stat3 | varchar(10) | YES | | NULL | || stat3_val | varchar(10) | YES | | NULL | || stat4 | varchar(10) | YES | | NULL | || stat4_val | varchar(10) | YES | | NULL | || team | varchar(10) | YES | | NULL | |+---------------+-------------+------+-----+---------+-------+

MySQL データベーステーブルsport_team の構造は次のとおりです。

mysql> desc sport_team;+---------------------------+--------------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |+---------------------------+--------------+------+-----+---------+----------------+| id | mediumint(9) | NO | PRI | NULL | auto_increment || name | varchar(30) | NO | | NULL | || abbreviated_name | varchar(10) | YES | | NULL | || home_field_id | smallint(6) | YES | MUL | NULL | || sport_type_name | varchar(15) | NO | MUL | NULL | || sport_league_short_name | varchar(10) | NO | | NULL | || sport_division_short_name | varchar(10) | YES | | NULL | |

2 つのテーブルを 2 つの DynamoDB テーブルにマッピングするために使用されるテーブルマッピングルールは次のとおりです。

{ "rules":[ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "dms_sample", "table-name": "nfl_data" }, "rule-action": "include" }, { "rule-type": "selection", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "dms_sample", "table-name": "sport_team" }, "rule-action": "include" }, { "rule-type":"object-mapping", "rule-id":"3", "rule-name":"MapNFLData", "rule-action":"map-record-to-record",

API バージョン API Version 2016-01-01219

Page 227: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon DynamoDB の使用

"object-locator":{ "schema-name":"dms_sample", "table-name":"nfl_data" }, "target-table-name":"NFLTeams", "mapping-parameters":{ "partition-key-name":"Team", "sort-key-name":"PlayerName", "exclude-columns": [ "player_number", "team", "Name" ], "attribute-mappings":[ { "target-attribute-name":"Team", "attribute-type":"scalar", "attribute-sub-type":"string",e "value":"${team}" }, { "target-attribute-name":"PlayerName", "attribute-type":"scalar", "attribute-sub-type":"string", "value":"${Name}" }, { "target-attribute-name":"PlayerInfo", "attribute-type":"scalar", "attribute-sub-type":"string", "value":"{\"Number\": \"${player_number}\",\"Position\": \"${Position}\",\"Status\": \"${status}\",\"Stats\": {\"Stat1\": \"${stat1}:${stat1_val}\",\"Stat2\": \"${stat2}:${stat2_val}\",\"Stat3\": \"${stat3}:${stat3_val}\",\"Stat4\": \"${stat4}:${stat4_val}\"}" } ] } }, { "rule-type":"object-mapping", "rule-id":"4", "rule-name":"MapSportTeam", "rule-action":"map-record-to-record", "object-locator":{ "schema-name":"dms_sample", "table-name":"sport_team" }, "target-table-name":"SportTeams", "mapping-parameters":{ "partition-key-name":"TeamName", "exclude-columns": [ "name", "id" ], "attribute-mappings":[ { "target-attribute-name":"TeamName", "attribute-type":"scalar", "attribute-sub-type":"string", "value":"${name}" }, { "target-attribute-name":"TeamInfo", "attribute-type":"scalar", "attribute-sub-type":"string", "value":"{\"League\": \"${sport_league_short_name}\",\"Division\": \"${sport_division_short_name}\"}" } ]

API バージョン API Version 2016-01-01220

Page 228: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon DynamoDB の使用

} } ]}

NFLTeams DynamoDB テーブルの出力例は次のとおりです。

"PlayerInfo": "{\"Number\": \"6\",\"Position\": \"P\",\"Status\": \"ACT\",\"Stats\": {\"Stat1\": \"PUNTS:73\",\"Stat2\": \"AVG:46\",\"Stat3\": \"LNG:67\",\"Stat4\": \"IN 20:31\"}", "PlayerName": "Allen, Ryan", "Position": "P", "stat1": "PUNTS", "stat1_val": "73", "stat2": "AVG", "stat2_val": "46", "stat3": "LNG", "stat3_val": "67", "stat4": "IN 20", "stat4_val": "31", "status": "ACT", "Team": "NE"}

SportsTeams DynamoDB テーブルの出力例は次のとおりです。

{ "abbreviated_name": "IND", "home_field_id": 53, "sport_division_short_name": "AFC South", "sport_league_short_name": "NFL", "sport_type_name": "football", "TeamInfo": "{\"League\": \"NFL\",\"Division\": \"AFC South\"}", "TeamName": "Indianapolis Colts"}

DynamoDB のターゲットデータ型AWS DMS の DynamoDB エンドポイントでは、DynamoDB のほとんどのデータ型がサポートされています。以下の表に、AWS DMS を使用する場合にサポートされる Amazon AWS DMS のターゲットデータ型と、AWS DMS のデータ型からのデフォルトマッピングを示します。

AWS DMS のデータ型の詳細については、「AWS Database Migration Service のデータ型 (p. 394)」を参照してください。

AWS DMS が異なるデータベースからデータを移行するときは、ソースデータベースからのデータ型を、AWS DMS データ型という中間のデータ型にマッピングします。その後、中間データ型をターゲットデータ型にマッピングします。以下の表は、各 AWS DMS データ型と DynamoDB でのマッピング先のデータ型を示しています。

AWS DMS データ型 DynamoDB データ型

文字列 文字列

WString 文字列

API バージョン API Version 2016-01-01221

Page 229: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon Kinesis Data Streams の使用

AWS DMS データ型 DynamoDB データ型

Boolean Boolean

日付 文字列

DateTime 文字列

INT1 数値

INT2 数値

INT4 数値

INT8 数値

数値 数値

Real4 数値

Real8 数値

UINT1 数値

UINT2 数値

UINT4 数値

UINT8 数値

CLOB 文字列

AWS Database Migration Service のターゲットとしての Amazon Kinesis Data Streams の使用データを Amazon Kinesis データストリームに移行するために、AWS DMS を使用できます。AmazonKinesis データストリームは Amazon Kinesis Data Streams サービスの一部です。データレコードの大量のストリームをリアルタイムで収集し、処理するには、Kinesis データストリームを使用します。

Note

ターゲットとしての Amazon Kinesis Data Streams のサポートは、AWS DMS バージョン 3.1.2以降で使用できます。

Kinesis データストリームはシャードで構成されています。シャードは、ストリーム内のデータレコードの一意に識別されたシーケンスです。Amazon Kinesis Data Streams 内のシャードの詳細については、Amazon Kinesis Data Streams 開発者ガイド の「シャード」を参照してください。

AWS Database Migration Service は、JSON を使用してレコードを Kinesis データストリームに発行します。変換時、AWS DMS はソースデータベースからの各レコードを JSON フォーマットの属性と値のペアにシリアル化します。

サポートされている任意のデータソースから、ターゲットストリームにデータを移行するために、オブジェクトのマッピングを使用します。オブジェクトマッピングを使用して、ストリームにデータレコードを構築する方法を決定します。データをそのシャードにグループ化するために Kinesis Data Streams で使用する、各テーブルのパーティションキーも定義します。

AWS DMS が Amazon Kinesis Data Streams ターゲットエンドポイントでテーブルを作成するときに、ソースデータベースのエンドポイントと同じ数のテーブルを作成します。また、AWS DMS はいくつかの

API バージョン API Version 2016-01-01222

Page 230: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon Kinesis Data Streams の使用

Kinesis Data Streams パラメータ値も設定します。テーブル作成のコストは、データの量および移行するテーブルの数によって異なります。

転送の速度を高めるために、AWS DMS では Kinesis Data Streams ターゲットインスタンスへのマルチスレッドフルロードがサポートされています。DMS では、このマルチスレッドでのタスク設定を、以下でサポートします。

Note

Amazon Kinesis Data Streams ターゲットへのマルチスレッドフルロードのサポートは、AWSDMS バージョン 3.1.4 以降で利用できます。

• MaxFullLoadSubTasks – 並行してロードするソーステーブルの最大数を指定するには、このオプションを使用します。DMS は、専用のサブタスクを使用して、対応する Kinesis ターゲットテーブルに各テーブルをロードします。デフォルトは 8、最大値は 49 です。

• ParallelLoadThreads – AWS DMS が各テーブルを Kinesis ターゲットテーブルにロードするために使用するスレッドの数を指定するには、このオプションを使用します。Kinesis Data Streams ターゲットの最大値は 32 です。この上限を増やすよう依頼できます。

• ParallelLoadBufferSize – Kinesis ターゲットにデータをロードするために並列ロードスレッドが使用する、バッファ内に保存するレコードの最大数を指定するには、このオプションを使用します。デフォルト値は 50 です。最大値は 1000 です。この設定は ParallelLoadThreads で使用します。ParallelLoadBufferSize は、複数のスレッドがある場合にのみ有効です。

• 個々のテーブルのテーブルマッピング設定 – table-settings ルールを使用して、並行してロードするソースから個々のテーブルを識別します。また、これらのルールを使用して、各テーブルの行をマルチスレッドロード用にセグメント化する方法を指定します。詳細については、テーブル設定のルールとオペレーション (p. 304) を参照してください。

Note

DMS は、テーブルの各セグメントを独自のスレッドに割り当てロードします。したがって、ParallelLoadThreads をソースのテーブルに指定するセグメントの最大数に設定します。

AWS Database Migration Service のターゲットとして Kinesisデータストリームを使用する場合の前提条件AWS DMS のターゲットとして Kinesis データストリームを設定する前に、IAM ロールを必ず作成してください。このロールにより、移行先の Kinesis データストリームへのアクセスを AWS DMS が引き受けて許可できるようになります。アクセス許可の最小設定は、次のロールのポリシーの例で示します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "1", "Effect": "Allow", "Principal": { "Service": "dms.amazonaws.com" }, "Action": "sts:AssumeRole" }]}

Kinesis データストリームに移行する際に使用するロールには、次のアクセス許可が必要です。

API バージョン API Version 2016-01-01223

Page 231: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon Kinesis Data Streams の使用

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kinesis:DescribeStream", "kinesis:PutRecord", "kinesis:PutRecords" ], "Resource": "arn:aws:kinesis:region:accountID:stream/streamName" } ]}

AWS Database Migration Service のターゲットとして KinesisData Streams を使用する場合の制限ターゲットとして Kinesis Data Streams を使用する場合、以下の制限が適用されます。

• AWS DMS は、特定の Kinesis データストリームの 1 つのデータレコードとして、各更新をソースデータベースの 1 つのレコードに発行します。その結果、ストリームのデータを消費するアプリケーションはトランザクションの境界を見失います。

• Kinesis データストリームは、重複排除をサポートしていません。ストリームからデータを消費するアプリケーションは、重複したレコードを処理する必要があります。詳細については、『Amazon KinesisData Streams 開発者ガイド』の「重複レコードの処理」を参照してください。

• AWS DMS では、パーティションキーの次の 2 つの形式がサポートされています。• SchemaName.TableName: スキーマとテーブル名の組み合わせ。• ${AttributeName}: JSON のいずれかのフィールドの値、またはソースデータベースのテーブルの

プライマリキー。

Kinesis データストリームにデータを移行するためのオブジェクトマッピングの使用AWS DMS は、ソースからターゲット Kinesis データストリームにデータをマッピングするためのテーブルマッピングルールを使用します。ターゲットストリームにデータをマッピングするために、オブジェクトマッピングと呼ばれるテーブルマッピングルールのタイプを使用します。オブジェクトマッピングを使用して、ソースのデータレコードがどのように Kinesis データストリームに発行されたデータレコードにマッピングされるかを定義します。

Kinesis データストリームには、パーティションキー以外にプリセット構造はありません。

オブジェクトマッピングルールを作成するには、object-mapping として rule-type を指定します。このルールが、使用したいるオブジェクトマッピングのタイプを指定します。

ルールの構造は次のとおりです。

{ "rules": [ { "rule-type": "object-mapping", "rule-id": "id", "rule-name": "name", "rule-action": "valid object-mapping rule action", "object-locator": {

API バージョン API Version 2016-01-01224

Page 232: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon Kinesis Data Streams の使用

"schema-name": "case-sensitive schema name", "table-name": "" } } ]}

AWS DMS は現在、map-record-to-record および map-record-to-document を、rule-actionパラメータの唯一の有効な値としてサポートしています。Map-record-to-record と map-record-to-document は、exclude-columns 属性リストの一部として除外されていないレコードに、AWSDMS がデフォルトで行う処理を指定します。これらの値は、どのような方法でも属性マッピングに影響しません。

リレーショナルデータベースから Kinesis データストリームに移行する際に map-record-to-record を使用します。このルールタイプでは、Kinesis データストリームのパーティションキーとしてリレーショナルデータベースから taskResourceId.schemaName.tableName 値を使用し、ソースデータベース内の各列の属性を作成します。map-record-to-record を使用する場合、exclude-columns 属性リストに示されていないソーステーブル内のすべての列について、AWS DMS はターゲットストリームに対応する属性を作成します。この対応する属性は、そのソース列が属性マッピングで使用されているかどうかにかかわらず作成されます。

map-record-to-record を理解するための 1 つの方法は、実際の動作を確認することです。この例では、次の構造とデータを含むリレーショナルデータベースのテーブルの行から始めると想定してください。

FirstName LastName StoreId HomeAddressHomePhone WorkAddressWorkPhone DateofBirth

Randy Marsh 5 221BBakerStreet

1234567890 31SpoonerStreet,Quahog

9876543210 02/29/1988

この情報を Kinesis データストリームに移行するには、データをターゲットストリームにマッピングするルールを作成します。以下のルールはマッピングを示しています。

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "rule-action": "include", "object-locator": { "schema-name": "Test", "table-name": "%" } }, { "rule-type": "object-mapping", "rule-id": "2", "rule-name": "DefaultMapToKinesis", "rule-action": "map-record-to-record", "object-locator": { "schema-name": "Test", "table-name": "Customers" } } ]}

API バージョン API Version 2016-01-01225

Page 233: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon Kinesis Data Streams の使用

次は、Kinesis データストリームの結果のレコード形式を示しています。

• StreamName: XXX• PartitionKey: Test.Customers //schmaName.tableName• データ: //次の JSON メッセージ

{ "FirstName": "Randy", "LastName": "Marsh", "StoreId": "5", "HomeAddress": "221B Baker Street", "HomePhone": "1234567890", "WorkAddress": "31 Spooner Street, Quahog", "WorkPhone": "9876543210", "DateOfBirth": "02/29/1988" }

属性マッピングを使用したデータの再構築

属性マップを使用してデータを Kinesis データストリームに移行している間にデータを再構築できます。たとえば、ソース内の複数のフィールドを結合してターゲット内に 1 つのフィールドを構成することもできます。以下の属性マップはデータを再構築する方法を示しています。

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "rule-action": "include", "object-locator": { "schema-name": "Test", "table-name": "%" } }, { "rule-type": "object-mapping", "rule-id": "2", "rule-name": "TransformToKinesis", "rule-action": "map-record-to-record", "target-table-name": "CustomerData", "object-locator": { "schema-name": "Test", "table-name": "Customers" }, "mapping-parameters": { "partition-key-type": "attribute-name", "partition-key-name": "CustomerName", "exclude-columns": [ "firstname", "lastname", "homeaddress", "homephone", "workaddress", "workphone" ], "attribute-mappings": [ {

API バージョン API Version 2016-01-01226

Page 234: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon Kinesis Data Streams の使用

"target-attribute-name": "CustomerName", "attribute-type": "scalar", "attribute-sub-type": "string", "value": "${lastname}, ${firstname}" }, { "target-attribute-name": "ContactDetails", "attribute-type": "document", "attribute-sub-type": "json", "value": { "Home": { "Address": "${homeaddress}", "Phone": "${homephone}" }, "Work": { "Address": "${workaddress}", "Phone": "${workphone}" } } } ] } } ]}

partition-key の定数値を設定するには、partition-key を指定します。たとえば、すべてのデータを 1つのシャードに強制的に格納するためにこれを行うことができます。以下のマッピングはこの方法を示しています。

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "Test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "object-mapping", "rule-id": "1", "rule-name": "TransformToKinesis", "rule-action": "map-record-to-document", "object-locator": { "schema-name": "Test", "table-name": "Customer" }, "mapping-parameters": { "partition-key": { "value": "ConstantPartitionKey" }, "exclude-columns": [ "FirstName", "LastName", "HomeAddress", "HomePhone", "WorkAddress", "WorkPhone" ], "attribute-mappings": [

API バージョン API Version 2016-01-01227

Page 235: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon Kinesis Data Streams の使用

{ "attribute-name": "CustomerName", "value": "${FirstName},${LastName}" }, { "attribute-name": "ContactDetails", "value": { "Home": { "Address": "${HomeAddress}", "Phone": "${HomePhone}" }, "Work": { "Address": "${WorkAddress}", "Phone": "${WorkPhone}" } } }, { "attribute-name": "DateOfBirth", "value": "${DateOfBirth}" } ] } } ]}

Kinesis Data Streams のメッセージ形式

JSON 出力とは、単純なキーと値のペアのリストのことです。AWS DMS には、Kinesis Data Streams からデータを簡単に利用するために、以下の予約されたフィールドがあります。

RecordType

レコードタイプはデータまたはコントロールのいずれかです。データレコードは、ソースの実際の行を表します。コントロールレコードは、タスクの再起動など、ストリーム内の重要なイベント用です。

オペレーション

データレコードの場合、オペレーションは create、read、update、または delete です。

コントロールレコードの場合、オペレーションは TruncateTable または DropTable です。SchemaName

レコードのソーススキーマ。コントロールレコードの場合、このフィールドは空です。テーブル名

レコードのソーステーブル。コントロールレコードの場合、このフィールドは空です。タイムスタンプ

JSON メッセージが構築された時刻のタイムスタンプ。このフィールドは ISO 8601 形式でフォーマットされます。

Note

特定のテーブル用のコントロールレコードの partition-key 値は、TaskId.SchemaName.TableName です。特定のタスク用のコントロールレコードのpartition-key 値は、そのレコードの TaskId です。オブジェクトマッピングの partition-key 値を指定することは、コントロールレコードの partition-key には影響しません。

API バージョン API Version 2016-01-01228

Page 236: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon Elasticsearch Service の使用

AWS Database Migration Service のターゲットとしての Amazon Elasticsearch Service クラスターの使用Amazon Elasticsearch Service (Amazon ES) にデータを移行するために、AWS DMS を使用できます。Amazon ES は、Elasticsearch クラスターのデプロイ、オペレーション、スケーリングを簡単に行える管理サービスです。

Note

ターゲットとしての Amazon Elasticsearch Service のサポートは、AWS DMS バージョン 3.1.2以降で使用できます。

Elasticsearch では、インデックスとドキュメントを操作します。インデックスは、ドキュメントのコレクションです。ドキュメントは、スカラー値、配列などのオブジェクトを含む JSON オブジェクトです。Elasticsearch には JSON ベースのクエリ言語があるため、インデックスでデータをクエリして、対応するドキュメントを取得することができます。

AWS DMS で Amazon ES のターゲットエンドポイントのインデックスが作成されるとき、ソースエンドポイントから各テーブルに 1 つのインデックスが作成されます。Elasticsearch インデックスを作成するためのコストは、いくつかの要因によって異なります。その要因とは、作成されたインデックスの数、そのインデックス内のデータの合計量、ドキュメントごとに Elasticsearch が保存する少量のメタデータです。

転送の速度を高めるために、AWS DMS では Amazon ES ターゲットクラスターへのマルチスレッドフルロードがサポートされています。DMS では、このマルチスレッドでのタスク設定を、以下でサポートします。

• MaxFullLoadSubTasks – 並行してロードするソーステーブルの最大数を指定するには、このオプションを使用します。DMS は、専用のサブタスクを使用して、対応する Elasticsearch ターゲットインデックスに各テーブルをロードします。デフォルトは 8、最大値は 49 です。

• ParallelLoadThreads – AWS DMS が各テーブルを Elasticsearch ターゲットインデックスにロードするために使用するスレッドの数を指定するには、このオプションを使用します。Amazon ES ターゲットの最大値は 32 です。この上限を増やすよう依頼できます。

Note

ParallelLoadThreads をデフォルト値 (0) から変更しない場合、AWS DMS は一度に 1 つのレコードを転送します。このアプローチでは、Elasticsearch クラスターへの負荷が過度にかかります。このオプションを 1 以上に設定していることを確認します。

• ParallelLoadBufferSize – Elasticsearch ターゲットにデータをロードするために並列ロードスレッドが使用する、バッファ内に保存するレコードの最大数を指定するには、このオプションを使用します。デフォルト値は 50 です。最大値は 1000 です。この設定は ParallelLoadThreads で使用します。ParallelLoadBufferSize は、複数のスレッドがある場合にのみ有効です。

• 個々のテーブルのテーブルマッピング設定 – table-settings ルールを使用して、並行してロードするソースから個々のテーブルを識別します。また、これらのルールを使用して、各テーブルの行をマルチスレッドロード用にセグメント化する方法を指定します。詳細については、テーブル設定のルールとオペレーション (p. 304) を参照してください。

Note

DMS は、テーブルの各セグメントを独自のスレッドに割り当てロードします。したがって、ParallelLoadThreads をソースのテーブルに指定するセグメントの最大数に設定します。

DMS がマルチスレッドを使用して Elasticsearch クラスターをロードする方法の詳細については、ScaleAmazon Elasticsearch Service for AWS Database Migration Service migrations の AWS ブログ投稿を参照してください。

API バージョン API Version 2016-01-01229

Page 237: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon Elasticsearch Service の使用

移行の範囲に適したコンピューティングリソースやストレージリソースを使用して Elasticsearch クラスターを設定します。使用するレプリケーションタスクに応じて、次の要素を考慮することをお勧めします。

• 全データロードの場合、移行するデータの合計量、さらに転送の速度を考慮します。• 継続的な変更のレプリケートの場合、更新頻度、エンドツーエンドのレイテンシーの要件を考慮しま

す。

また、Elasticsearch クラスターでインデックス設定を行い、シャードとレプリカの数に細心の注意を払います。

リレーショナルデータベーステーブルから Amazon ES インデックスへの移行AWS DMS は、Elasticsearch のスカラーデータ型へのデータの移行をサポートしています。Oracle やMySQL などのリレーショナルデータベースから Elasticsearch に移行する場合は、データを保存する方法を再構築が必要となる場合があります。

AWS DMS は以下の Elasticsearch のスカラーデータ型をサポートしています。

• Boolean• 日付• 浮動小数点• Int• 文字列

AWS DMS は、日付型のデータを文字列に変換します。これらの日付を解釈するカスタムマッピングを指定できます。

AWS DMS は LOB データ型の移行をサポートしていません。

AWS Database Migration Service のターゲットとして AmazonElasticsearch Service を使用する場合の前提条件AWS DMS のターゲットとして Elasticsearch データベースを使用し始める前に、AWS Identity andAccess Management (IAM) ロールを必ず作成します。このロールにより、AWS DMS がターゲットエンドポイントで Elasticsearch インデックスにアクセスできるようになります。アクセス許可の最小設定は、次のサンプルロールのポリシーで示します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "1", "Effect": "Allow", "Principal": { "Service": "dms.amazonaws.com" }, "Action": "sts:AssumeRole" } ]}

Elasticsearch に移行する際に使用するロールには、次のアクセス許可が必要です。

API バージョン API Version 2016-01-01230

Page 238: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon Elasticsearch Service の使用

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "es:ESHttpDelete", "es:ESHttpGet", "es:ESHttpHead", "es:ESHttpPost", "es:ESHttpPut" ], "Resource": "arn:aws:es:region:account-id:domain/domain-name/*" } ]}

前述の例で、region を AWS リージョン識別子で置き換え、account-id を AWS アカウント IDで置き換え、domain-name を Amazon Elasticsearch Service ドメインの名前で置き換えます。例:「arn:aws:es:us-west-2:123456789012:domain/my-es-domain」。

AWS DMS のターゲットとして Elasticsearch を使用する場合の追加の接続属性Elasticsearch ターゲットエンドポイントを設定するときに、追加の接続属性を指定できます。追加の接続属性はキーと値のペアを指定して、セミコロンで区切ります。

次のテーブルで、AWS DMS のソースとして Elasticsearch インスタンスを使用するときに利用可能な追加の接続属性について説明します。

属性名 有効な値 デフォルト値と説明

fullLoadErrorPercentage0 より大きく、100 より小さい正の整数。

10 – 全ロードタスクの場合、この属性によって、タスクが失敗するまでに許容されるエラーのしきい値が決まります。たとえば、ソースエンドポイントに 1,500 行あり、このパラメータが 10 に設定されているとします。ターゲットエンドポイントに書き込むときに AWS DMS で 150 を超えるエラー (行数の 10%) が発生した場合、そのタスクは失敗します。

errorRetryDuration0 より大きい正の整数。 300 – ターゲットエンドポイントでエラーが発生した場合、AWS DMS はこの秒数の間再試行します。再試行しない場合、タスクは失敗します。

AWS Database Migration Service のターゲットとして AmazonElasticsearch Service を使用する場合の制限ターゲットとして Amazon Elasticsearch Service を使用する場合、以下の制限が適用されます。

• AWS DMS は、非複合プライマリキーを含むテーブルのレプリケーションのみをサポートします。ソーステーブルのプライマリキーは、1 つの列のみで構成する必要があります。

• Elasticsearch は、動的なマッピング (自動予測) を使用して、移行済みデータに使用するデータ型を決定します。

• Elasticsearch は、各ドキュメントを一意の ID で保存します。以下は ID の例です。

API バージョン API Version 2016-01-01231

Page 239: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon DocumentDB の使用

"_id": "D359F8B537F1888BC71FE20B3D79EAE6674BE7ACA9B645B0279C7015F6FF19FD"

各ドキュメント ID は 64 バイト長であるため、ストレージ要件と予想されます。たとえば、AWS DMSソースから 100,000 行を移行する場合、結果として作成される Elasticsearch インデックスでは追加で6,400,000 バイトのストレージが必要です。

• Amazon ES を使用すると、プライマリキー属性を更新することはできません。この制限は、ターゲットで不要なデータが発生する可能性があるため、変更データキャプチャ (CDC) で継続的なレプリケーションを使用する場合に重要です。CDC モードでは、プライマリキーは 32 バイト長の SHA256 値にマップされます。これらは人間が判読できる 64 バイト文字列に変換され、Elasticsearch ドキュメント ID として使用されます。

• AWS DMS で移行できない項目が発生した場合、Amazon CloudWatch Logs にエラーメッセージを書き込みます。この動作は、例外テーブルにエラーを書き込む他の AWS DMS ターゲットエンドポイントの動作とは異なります。

Amazon Elasticsearch Service のターゲットデータ型AWS DMS が異なるデータベースからデータを移行するときは、サービスはソースデータベースからのデータ型を、AWS DMS データ型という中間のデータ型にマッピングします。その後、サービスは中間データ型をターゲットデータ型にマッピングします。以下の表は、各 AWS DMS データ型と Elasticsearchでのマッピング先のデータ型を示しています。

AWS DMS データ型 Elasticsearch データ型

Boolean boolean

日付 文字列

時間 date

タイムスタンプ date

INT4 integer

Real4 float

UINT4 integer

AWS DMS のデータ型の詳細については、「AWS Database Migration Service のデータ型 (p. 394)」を参照してください。

AWS Database Migration Service のターゲットとしての Amazon DocumentDB の使用AWS DMS を使用して、AWS DMS がサポートするソースデータエンジンのいずれかからAmazon DocumentDB (MongoDB 互換) にデータを移行できます。ソースエンジンは、AmazonRDS、Aurora、Amazon S3 などの Amazon マネージド型サービス上に存在していても、Amazon EC2 またはオンプレミスで実行されている MongoDB などの自己管理型データベース上に存在していてもかまいません。

Note

ターゲットとして Amazon DocumentDB (MongoDB 互換) のサポートは、AWS DMS バージョン3.1.3 以降で使用できます。

API バージョン API Version 2016-01-01232

Page 240: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon DocumentDB の使用

AWS DMS を使用すると、ソースデータを Amazon DocumentDB のデータベース、コレクション、またはドキュメントにレプリケートできます。

ソースエンドポイントが MongoDB である場合は、次の追加の接続属性を有効にする必要があります。

• nestingLevel=NONE

• extractDocID=false

詳細については、「AWS DMS のソースとして MongoDB を使用する場合の追加の接続属性 (p. 145)」を参照してください。

MongoDB は、データをバイナリ JSON 形式 (BSON) で保存します。AWS DMS は、AmazonDocumentDB でサポートされているすべての BSON データ型をサポートしています。これらのデータ型のリストについては、『Amazon DocumentDB 開発者ガイド』の「サポートされている MongoDB API、オペレーション、およびデータ型」を参照してください。

ソースエンドポイントがリレーショナルデータベースである場合は、AWS DMS はデータベースオブジェクトを次のように Amazon DocumentDB にマップします。

• リレーショナルデータベース (データベーススキーマ) は、Amazon DocumentDB のデータベースにマップされます。

• リレーショナルデータベース内のテーブルは、Amazon DocumentDB のコレクションにマップされます。

• リレーショナルテーブル内のレコードは、Amazon DocumentDB のドキュメントにマップされます。ソースレコードのデータから各ドキュメントが構築されます。

ソースエンドポイントが Amazon S3 である場合は、Amazon S3 の AWS DMS マッピングルールに対応する Amazon DocumentDB オブジェクトが作成されます。たとえば次のような URI があったとします。

s3://mybucket/hr/employee

この場合、AWS DMSは mybucket 内のオブジェクトを次のように Amazon DocumentDB にマップします。

• URI の最上位の部分 (hr) は、Amazon DocumentDB のデータベースにマップされます。• URI の次の部分 (employee) は、Amazon DocumentDB のコレクションにマップされます。• employee 内の各オブジェクトは、Amazon DocumentDB のドキュメントにマップされます。

Amazon S3 のマッピングルールの詳細については、「AWS DMS のソースとしての Amazon S3 の使用 (p. 146)」を参照してください。

転送の速度を高めるために、AWS DMS では Amazon DocumentDB ターゲットインスタンスへのマルチスレッドフルロードがサポートされています。DMS では、このマルチスレッドでのタスク設定を、以下でサポートします。

• MaxFullLoadSubTasks – 並行してロードするソーステーブルの最大数を指定するには、このオプションを使用します。DMS は、専用のサブタスクを使用して、対応する Amazon DocumentDB ターゲットテーブルに各テーブルをロードします。デフォルトは 8、最大値は 49 です。

• ParallelLoadThreads – AWS DMS が各テーブルを Amazon DocumentDB ターゲットテーブルにロードするために使用するスレッドの数を指定するには、このオプションを使用します。AmazonDocumentDB ターゲットの最大値は 32 です。この上限を増やすよう依頼できます。

• ParallelLoadBufferSize – Amazon DocumentDB ターゲットにデータをロードするために並列ロードスレッドが使用する、バッファ内に保存するレコードの最大数を指定するには、このオプションを使

API バージョン API Version 2016-01-01233

Page 241: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon DocumentDB の使用

用します。デフォルト値は 50 です。最大値は 1000 です。この設定は ParallelLoadThreads で使用します。ParallelLoadBufferSize は、複数のスレッドがある場合にのみ有効です。

• 個々のテーブルのテーブルマッピング設定 – table-settings ルールを使用して、並行してロードするソースから個々のテーブルを識別します。また、これらのルールを使用して、各テーブルの行をマルチスレッドロード用にセグメント化する方法を指定します。詳細については、テーブル設定のルールとオペレーション (p. 304) を参照してください。

Note

DMS は、テーブルの各セグメントを独自のスレッドに割り当てロードします。したがって、ParallelLoadThreads をソースのテーブルに指定するセグメントの最大数に設定します。

AWS DMS のターゲットとしての Amazon DocumentDB の使用の詳細 (移行プロセスのウォークスルーなど) については、以下のセクションを参照してください。

トピック• ソースから Amazon DocumentDB ターゲットへのデータのマッピング (p. 234)• Amazon DocumentDB をターゲットとする継続的なレプリケーション (p. 237)• ターゲットとして Amazon DocumentDB を使用する場合の制限 (p. 238)• Amazon DocumentDB のターゲットデータ型 (p. 239)• ウォークスルー: MongoDB から Amazon DocumentDB への移行 (p. 240)

ソースから Amazon DocumentDB ターゲットへのデータのマッピングAWS DMS は、ソースエンドポイントからレコードを読み取り、読み取ったデータに基づいて JSON ドキュメントを構築します。各 JSON ドキュメントでは、AWS DMS で _id フィールドを一意の識別子として機能するよう特定する必要があります。JSON ドキュメントは、その _id フィールドをプライマリキーとして使用して Amazon DocumentDB コレクションに書き込まれます。

単一列のソースデータ

ソースデータが 1 つの列で構成されている場合、そのデータは文字列型である必要があります。(実際のデータ型は、ソースエンジンの種類に応じて、VARCHAR、NVARCHAR、TEXT、LOB、CLOB などになります)。AWS DMS はこれらのデータを有効な JSON ドキュメントであると見なし、そのまま AmazonDocumentDB にレプリケートします。

結果の JSON ドキュメントに _id という名前のフィールドが含まれている場合は、そのフィールドがAmazon DocumentDB で一意の _id として使用されます。

JSON に _id フィールドが含まれていない場合は、Amazon DocumentDB によって自動的に _id 値が生成されます。

複数列のソースデータ

ソースデータが複数の列で構成されている場合、AWS DMS はそのすべての列から JSON ドキュメントを構築します。この場合、AWS DMS がドキュメントの _id フィールドを特定するプロセスは次のようになります。

• _id という名前の列がある場合は、その列のデータがターゲット _id として使用されます。• _id 列はないがプライマリキーまたは一意のインデックスがある場合、AWS DMS はそのキーまたはイ

ンデックスの値を _id 値として使用します。プライマリキーや一意のインデックスのデータは、JSONドキュメント内の明示的なフィールドとしても表示されます。

API バージョン API Version 2016-01-01234

Page 242: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon DocumentDB の使用

• _id 列も、プライマリキーも、一意のインデックスもない場合は、Amazon DocumentDB によって自動的に _id 値が生成されます。

ターゲットエンドポイントのデータ型の強制変換

AWS DMS では、Amazon DocumentDB ターゲットエンドポイントへの書き込み時にデータ構造を変更できます。これらの変更をリクエストするには、ソースエンドポイントでテーブルや列の名前を変更するか、タスクの実行時に適用される変換ルールを指定します。

ネストされた JSON ドキュメント (json_ プレフィックス) の使用

ソース列の名前に json_ というプレフィックスを付けることによってデータ型を強制変換することができます (json_columnName)。手動で行うことも、変換を使用して行うこともできます。この場合、その列は、文字列フィールドとしてではなく、ターゲットドキュメント内のネストされた JSON ドキュメントとして作成されます。

たとえば、MongoDB ソースエンドポイントから次のドキュメントを移行するとします。

{ "_id": "1", "FirstName": "John", "LastName": "Doe", "ContactDetails": "{"Home": {"Address": "Boston","Phone": "1111111"},"Work": { "Address": "Boston", "Phone": "2222222222"}}"}

これらのソースデータ型を強制変換しない場合、埋め込まれている ContactDetails ドキュメントは文字列として移行されます。

{ "_id": "1", "FirstName": "John", "LastName": "Doe", "ContactDetails": "{\"Home\": {\"Address\": \"Boston\",\"Phone\": \"1111111\"},\"Work\": { \"Address\": \"Boston\", \"Phone\": \"2222222222\"}}"}

しかし、変換ルールを追加して、ContactDetails を JSON オブジェクトに強制変換することができます。たとえば、ソース列の元の名前が ContactDetails である場合に、その名前をjson_ContactDetails に変更すると、次に示すように、AWS DMS は ContactDetails フィールドをネストされた JSON としてレプリケートします。

{ "_id": "1", "FirstName": "John", "LastName": "Doe", "ContactDetails": { "Home": { "Address": "Boston", "Phone": "1111111111" }, "Work": { "Address": "Boston", "Phone": "2222222222" } }}

API バージョン API Version 2016-01-01235

Page 243: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon DocumentDB の使用

JSON 配列 (array_ プレフィックス) の使用

列の名前に array_ というプレフィックスを付けることによってデータ型を強制変換することができます(array_columnName)。手動で行うことも、変換を使用して行うこともできます。この場合、AWS DMSはその列を JSON 配列と見なし、ターゲットドキュメントに JSON 配列を作成します。

たとえば、MongoDB ソースエンドポイントから次のドキュメントを移行するとします。

{ "_id" : "1", "FirstName": "John", "LastName": "Doe",

"ContactAddresses": ["Boston", "New York"], "ContactPhoneNumbers": ["1111111111", "2222222222"]}

これらのソースデータ型を強制変換しない場合、埋め込まれている ContactDetails ドキュメントは文字列として移行されます。

{ "_id": "1", "FirstName": "John", "LastName": "Doe",

"ContactAddresses": "[\"Boston\", \"New York\"]", "ContactPhoneNumbers": "[\"1111111111\", \"2222222222\"]"

}

しかし、変換ルールを追加して、ContactAddress と ContactPhoneNumbers を JSON 配列に強制変換することができます。その例を次の表に示します。

ソース列の元の名前 ソース列の変更後の名前

ContactAddress array_ContactAddress

ContactPhoneNumbers array_ContactPhoneNumbers

これにより、AWS DMS で ContactAddress と ContactPhoneNumbers が次のようにレプリケートされます。

{ "_id": "1", "FirstName": "John", "LastName": "Doe", "ContactAddresses": [ "Boston", "New York" ], "ContactPhoneNumbers": [ "1111111111", "2222222222" ]}

API バージョン API Version 2016-01-01236

Page 244: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon DocumentDB の使用

TLS を使用した Amazon DocumentDB への接続デフォルトでは、新しく作成された Amazon DocumentDB クラスターは、Transport Layer Security (TLS)を使用したセキュアな接続のみを受け入れます。TLS が有効になっている場合、Amazon DocumentDB へのすべての接続でパブリックキーが必要になります。

Amazon DocumentDB のパブリックキーを取得するには、AWS がホストする Amazon S3 バケットからrds-combined-ca-bundle.pem ファイルをダウンロードします。このファイルのダウンロードの詳細については、Amazon DocumentDB 開発者ガイドの「TLS を使用した接続の暗号化」を参照してください。

この.pem ファイルをダウンロードしたら、以下で説明するように、そのファイルに含まれるパブリックキーを AWS DMS にインポートできます。

AWS マネジメントコンソール

パブリックキー (.pem) ファイルをインポートするには

1. AWS DMS コンソール (https://console.aws.amazon.com/dms) を開きます。2. ナビゲーションペインで [Certificates] を選択します。3. [Import certificate (証明書のインポート)] を選択し、次の操作を行います。

• [Certificate identifier (証明書の識別子)] に、証明書の一意の名前を入力します (例: docdb-cert)。• [Import file (ファイルのインポート)] で、.pem ファイルを保存した場所を参照します。

すべての設定が正しいことを確認したら、[Add new CA certificate (新しい CA 証明書の追加)] を選択します。

AWS CLI

次の例に示すように aws dms import-certificate コマンドを使用します。

aws dms import-certiciate \ --certificate-identifier docdb-cert \ --certificate-pem file://./rds-combined-ca-bundle.pem

AWS DMS のターゲットエンドポイントを作成するときに、証明書の識別子 (docdb-cert など) を指定します。また、[SSL mode (SSL モード)] パラメーターを [verify-full] に設定します。

Amazon DocumentDB をターゲットとする継続的なレプリケーションAWS DMS で継続的なレプリケーションが有効になっている場合、Amazon DocumentDB 内のドキュメントでソースとの同期が維持されます。ソースレコードが作成または更新されると、AWS DMS はまず、影響を受ける Amazon DocumentDB レコードを次のように特定します。

• ソースレコードに _id という名前の列がある場合は、その列の値を使用して Amazon DocumentDB コレクションの対応する _id が特定されます。

• _id 列はないがプライマリキーまたは一意のインデックスがある場合、AWS DMS はそのキーまたはインデックスの値を Amazon DocumentDB コレクションの _id として使用します。

• ソースレコードに _id 列も、プライマリキーも、一意のインデックスもない場合、AWS DMS はすべてのソース列を Amazon DocumentDB コレクションに対応するフィールドとして照合します。

新しいソースレコードが作成されると、AWS DMS は対応するドキュメントを Amazon DocumentDB に書き込みます。既存のソースレコードが更新された場合、AWS DMS は Amazon DocumentDB のターゲット

API バージョン API Version 2016-01-01237

Page 245: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon DocumentDB の使用

ドキュメントに対応するフィールドを更新します。ターゲットドキュメントには存在するがソースレコードには存在しないフィールドは、一切変更されません。

ソースレコードが削除されると、AWS DMS は対応するドキュメントを Amazon DocumentDB から削除します。

ソースの構造の変更 (DDL)継続的なレプリケーションでは、ソースのデータ構造 (テーブル、列など) の変更が Amazon DocumentDBの対応する要素に反映されます。リレーショナルデータベースでは、これらの変更はデータ定義言語(DDL) ステートメントを使用して開始されます。次の表に、AWS DMS でこれらの変更がどのようにAmazon DocumentDB に反映されるかを示します。

ソースの DDL Amazon DocumentDB ターゲットへの影響

CREATE TABLE 空のコレクションが作成されます。

テーブル名を変更するステートメント (RENAMETABLE、ALTER TABLE...RENAME など)

コレクションの名前が変更されます。

TRUNCATE TABLE コレクションからすべてのドキュメントが削除されます (HandleSourceTableTruncated がtrue の場合のみ)。詳細については、「変更処理の DDL 処理のタスク設定 (p. 271)」を参照してください。

DROP TABLE コレクションが削除されます(HandleSourceTableDropped が true の場合のみ)。詳細については、「変更処理の DDL 処理のタスク設定 (p. 271)」を参照してください。

テーブルに列を追加するステートメント (ALTERTABLE...ADD など)

この DDL ステートメントは無視され、警告が表示されます。ソースで最初の INSERT が実行されたときに、ターゲットドキュメントに新しいフィールドが追加されます。

ALTER TABLE...RENAME COLUMN この DDL ステートメントは無視され、警告が表示されます。ソースで最初の INSERT が実行されたときに、ターゲットドキュメントに新しい名前のフィールドが追加されます。

ALTER TABLE...DROP COLUMN この DDL ステートメントは無視され、警告が表示されます。

列のデータ型を変更するステートメント (ALTERCOLUMN...MODIFY など)

この DDL ステートメントは無視され、警告が表示されます。ソースでその新しいデータ型を使用した最初の INSERT が実行されたときに、その新しいデータ型のフィールドを使用してターゲットドキュメントが作成されます。

ターゲットとして Amazon DocumentDB を使用する場合の制限AWS DMS のターゲットとして Amazon DocumentDB を使用する場合、以下の制限が適用されます。

• Amazon DocumentDB では、コレクション名にドル記号 ($) を含めることはできません。また、データベース名に Unicode 文字を含めることもできません。

• AWS DMS で複数のソーステーブルを 1 つの Amazon DocumentDB コレクションにマージすることはできません。

API バージョン API Version 2016-01-01238

Page 246: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon DocumentDB の使用

• AWS DMS は、プライマリキーがないソーステーブルの変更を処理する際に、そのテーブルの LOB 列を無視します。

• [Change table (変更テーブル)] オプションが有効になっている場合に AWS DMS で "_id" という名前のソース列が検出されると、その列が変更テーブルに "__id" (2 つのアンダースコア) として表示されます。

• ソースエンドポイントとして Oracle を選択する場合は、Oracle ソースで完全なサプリメンタルロギングが有効になっている必要があります。有効になっていないと、ソースに変更されていない列がある場合にデータが null 値として Amazon DocumentDB にロードされます。

Amazon DocumentDB のターゲットデータ型次の表に、AWS DMS を使用する場合にサポートされる Amazon DocumentDB ターゲットのデータ型と、AWS DMS のデータ型からのデフォルトマッピングを示します。AWS DMS のデータ型の詳細については、「AWS Database Migration Service のデータ型 (p. 394)」を参照してください。

AWS DMS データ型 Amazon DocumentDB データ型

BOOLEAN Boolean

BYTES バイナリデータ

DATE 日付

TIME 文字列 (UTF8)

DATETIME 日付

INT1 32 ビット整数

INT2 32 ビット整数

INT4 32 ビット整数

INT8 64 ビット整数

NUMERIC 文字列 (UTF8)

REAL4 Double

REAL8 Double

STRING データが JSON として認識された場合、AWS DMS はこれをドキュメントとして Amazon DocumentDB に移行します。それ以外の場合は文字列 (UTF8) にマップされます。

UINT1 32 ビット整数

UINT2 32 ビット整数

UINT4 64 ビット整数

UINT8 文字列 (UTF8)

WSTRING データが JSON として認識された場合、AWS DMS はこれをドキュメントとして Amazon DocumentDB に移行します。それ以外の場合は文字列 (UTF8) にマップされます。

BLOB バイナリ

API バージョン API Version 2016-01-01239

Page 247: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon DocumentDB の使用

AWS DMS データ型 Amazon DocumentDB データ型

CLOB データが JSON として認識された場合、AWS DMS はこれをドキュメントとして Amazon DocumentDB に移行します。それ以外の場合は文字列 (UTF8) にマップされます。

NCLOB データが JSON として認識された場合、AWS DMS はこれをドキュメントとして Amazon DocumentDB に移行します。それ以外の場合は文字列 (UTF8) にマップされます。

ウォークスルー: MongoDB から Amazon DocumentDB への移行このウォークスルーは、MongoDB から Amazon DocumentDB (MongoDB 互換) に移行するプロセスのガイドとして使用できます。このウォークスルーでは次の作業を行います。

• Amazon EC2 インスタンスに MongoDB をインストールする。• MongoDB にサンプルデータを追加する。• AWS DMS レプリケーションインスタンス、ソースエンドポイント (MongoDB)、ターゲットエンドポイ

ント (Amazon DocumentDB) を作成する。• AWS DMS タスクを実行して、ソースエンドポイントからターゲットエンドポイントにデータを移行す

る。

Important

開始する前に、デフォルトの仮想プライベートクラウド (VPC) で Amazon DocumentDB クラスターを起動してください。詳細については、『Amazon DocumentDB 開発者ガイド』の「Amazon DocumentDB の開始方法」を参照してください。

トピック• ステップ 1: Amazon EC2 インスタンスを起動する (p. 240)• ステップ 2: MongoDB Community Edition をインストールして設定する (p. 241)• ステップ 3: AWS DMS レプリケーションインスタンスを作成する (p. 242)• ステップ 4: ソースとターゲットのエンドポイントを作成する (p. 243)• ステップ 5: 移行タスクの作成と実行 (p. 245)

ステップ 1: Amazon EC2 インスタンスを起動する

このウォークスルーでは、デフォルトの VPC で Amazon EC2 インスタンスを起動します。

Amazon EC2 インスタンスを起動するには

1. https://console.aws.amazon.com/ec2/) にある Amazon EC2 コンソールを開きます。2. [Launch Instance] (インスタンスの起動) を選択して、以下を実行します。

a. [Amazon マシンイメージ (AMI)] ページで、AMI のリストの一番上にある [Amazon Linux AMI] に移動して、[選択] を選択します。

b. [インスタンスタイプの選択] ページで、インスタンスタイプのリストの一番上にある [t2.micro] を選択します。続いて、[Next: Configure Instance Details] を選択します。

c. [インスタンスの詳細の設定] ページの [ネットワーク] でデフォルトの VPC を選択します。続いて、[次の手順: ストレージの追加] を選択します。

d. [ストレージの追加] ページで、[次の手順: タグの追加] を選択してこの手順をスキップします。

API バージョン API Version 2016-01-01240

Page 248: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon DocumentDB の使用

e. [タグの追加] ページで、[次の手順: セキュリティグループの設定] を選択してこの手順をスキップします。

f. [セキュリティグループの設定] ページで、次の操作を行います。

1. [Select an existing security group] を選択します。2. セキュリティグループのリストで、[default] を選択します。これにより、VPC のデフォルトの

セキュリティグループが選択されます。デフォルトでは、このセキュリティグループは TPCポート 22 でインバウンド Secure Shell (SSH) 接続を受け入れます。現在の VPC がそのようになっていない場合は、このルールを追加します。詳細については、『Amazon VPC ユーザーガイド』の「Amazon VPC とは?」を参照してください。

3. [Next: Review and Launch] を選択します。g. 情報を確認して [作成] を選択します。

3. [Select an existing key pair or create a new key pair] ウィンドウで、次のいずれかを実行します。

• Amazon EC2 キーペアがない場合は、新しいキーペアの作成 を選択して指示に従います。プライベートキーファイル (.pem ファイル) をダウンロードするよう求められます。このファイルは、後で Amazon EC2 インスタンスにログインするときに必要になります。

• Amazon EC2 キーペアが既にある場合は、[キーペアの選択] でリストからキーペアを選択します。Amazon EC2 インスタンスにログインするには、既にプライベートキーファイル (.pem ファイル) が利用可能になっている必要があります。

4. キーペアを設定したら、[インスタンスの作成] を選択します。

コンソールナビゲーションペインで [EC2 ダッシュボード] を選択し、起動したインスタンスを選択します。下のペインの [説明] タブで、インスタンスの [パブリック DNS] の場所を確認します。たとえば、ec2-11-22-33-44.us-west-2.compute.amazonaws.com です。

Amazon EC2 インスタンスが使用可能になるには数分かかります。5. 次の例のように、ssh コマンドを使用して Amazon EC2 インスタンスにログインします。

chmod 400 my-keypair.pemssh -i my-keypair.pem ec2-user@public-dns-name

プライベートキーファイル (.pem ファイル) と EC2 インスタンスのパブリック DNS 名を指定します。ログイン ID は ec2-user です。パスワードは不要です。

EC インスタンスへの接続の詳細については、『Linux インスタンス用 Amazon EC2 ユーザーガイド』の「SSH を使用した Linux インスタンスへの接続」を参照してください。

ステップ 2: MongoDB Community Edition をインストールして設定する

「ステップ 1: Amazon EC2 インスタンスを起動する (p. 240)」で起動した Amazon EC2 インスタンスで次の手順を実行します。

EC2 インスタンスで MongoDB Community Edition をインストールして設定するには

1. MongoDB のドキュメントの「Install MongoDB Community Edition on Amazon Linux」の手順に従います。

2. デフォルトでは、MongoDB サーバー (mongod) で許可されている接続は IP アドレス 127.0.0.1(localhost) からのループバック接続のみです。Amazon VPC のその他の場所からの接続を許可するには、次の操作を行います。

a. /etc/mongod.conf ファイルを開いて次の行を見つけます。

# network interfaces

API バージョン API Version 2016-01-01241

Page 249: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon DocumentDB の使用

net: port: 27017 bindIp: 127.0.0.1 # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.

b. bindIp の行を次のように変更します。

bindIp: public-dns-name

c. public-dns-name をインスタンスの実際のパブリック DNS 名に置き換えます(ec2-11-22-33-44.us-west-2.compute.amazonaws.com など)。

d. /etc/mongod.conf ファイルを保存して、mongod を再起動します。

sudo service mongod restart

3. 次の手順を実行して、MongoDB インスタンスにデータを追加します。

a. wget コマンドを使用して、サンプルデータを含む JSON ファイルをダウンロードします。

wget http://media.mongodb.org/zips.json

b. mongoimport コマンドを使用して、そのデータを新しいデータベース (zips-db) にインポートします。

mongoimport --host public-dns-name:27017 --db zips-db --file zips.json

c. インポートが完了したら、mongo シェルを使用して MongoDB に接続し、データが正常にロードされたことを確認します。

mongo --host public-dns-name:27017

d. public-dns-name をインスタンスの実際のパブリック DNS 名に置き換えます。e. mongo シェルプロンプトで次のコマンドを入力します。

use zips-db db.zips.count()

db.zips.aggregate( [ { $group: { _id: { state: "$state", city: "$city" }, pop: { $sum: "$pop" } } }, { $group: { _id: "$_id.state", avgCityPop: { $avg: "$pop" } } }] )

出力に次の情報が表示されます。

• データベースの名前 (zips-db)• zips コレクションのドキュメントの数 (29353)• 各州の都市の平均人口

f. 次のコマンドを使用して、mongo シェルを終了してコマンドプロンプトに戻ります。

exit

ステップ 3: AWS DMS レプリケーションインスタンスを作成するAWS DMS でレプリケーションを実行するにはレプリケーションインスタンスが必要です。

API バージョン API Version 2016-01-01242

Page 250: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon DocumentDB の使用

AWS DMS レプリケーションインスタンスを作成するには

1. AWS DMS コンソール (https://console.aws.amazon.com/dms/) を開きます。2. ナビゲーションペインで [Replication instances] を選択します。3. [Create replication instance (レプリケーションインスタンスの作成)] を選択し、次の情報を入力しま

す。

• [Name (名前)] に「mongodb2docdb」と入力します。• [Description (説明)] に「MongoDB to Amazon DocumentDB replication instance」と入力

します。• [Instance class (インスタンスクラス)] はデフォルト値のままにします。• [Engine version (エンジンバージョン)] はデフォルト値のままにします。• [VPC] でデフォルトの VPC を選択します。• [Multi-AZ (マルチ AZ)] で [No (いいえ)] を選択します。• [Publicly accessible (パブリックアクセス可能)] を有効にします。

すべての設定が正しいことを確認したら、[Create replication instance (レプリケーションインスタンスの作成)] を選択します。

Note

ステータスが [available (使用可能)] になったらレプリケーションインスタンスを使用できます。これには数分間かかる場合があります。

ステップ 4: ソースとターゲットのエンドポイントを作成する

ソースエンドポイントは、Amazon EC2 インスタンスで実行されている MongoDB のエンドポイントです。

ソースエンドポイントを作成するには

1. AWS DMS コンソール (https://console.aws.amazon.com/dms/) を開きます。2. ナビゲーションペインで、[Endpoints] を選択します。3. [Create endpoint (エンドポイントの作成)] を選択し、次の情報を入力します。

• [Endpoint type (エンドポイントタイプ)] で [Source (ソース)] を選択します。• [Endpoint identifier (エンドポイント識別子)] に、覚えやすい名前を入力します (例: mongodb-source)。

• [Source engine (ソースエンジン)] で [mongodb] を選択します。• [Server name (サーバー名)] に Amazon EC2 インスタンスのパブリック DNS 名を入力します

(ec2-11-22-33-44.us-west-2.compute.amazonaws.com など)。• [Port (ポート)] に「27017」と入力します。• [SSL mode (SSL モード)] で [none (なし)] を選択します。• [Authentication mode (認証モード)] で [none (なし)] を選択します。• [Database name (データベース名)] に「zips-db」と入力します。• [Authentication mechanism (認証メカニズム)] で [default (デフォルト)] を選択します。• [Metadata mode (メタデータモード)] で [document (ドキュメント)] を選択します。

すべての設定が正しいことを確認したら、[Create endpoint (エンドポイントの作成)] を選択します。API バージョン API Version 2016-01-01243

Page 251: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon DocumentDB の使用

次にターゲットエンドポイントを作成します。ターゲットエンドポイントは Amazon DocumentDB クラスターのエンドポイントで、既に起動している必要があります。Amazon DocumentDB クラスターの起動の詳細については、『Amazon DocumentDB 開発者ガイド』の「Amazon DocumentDB の開始方法」を参照してください。

Important

先に進む前に以下の作業を行います。

• Amazon DocumentDB クラスターのマスターユーザー名とマスターパスワードを確認します。• AWS DMS から接続できるように、Amazon DocumentDB クラスターの DNS 名とポート番号

を確認します。この情報を確認するには、次の AWS CLI コマンドを使用します。cluster-idを Amazon DocumentDB クラスターの名前に置き換えてください。

aws docdb describe-db-clusters \ --db-cluster-identifier cluster-id \ --query "DBClusters[*].[Endpoint,Port]"

• Amazon DocumentDB で SSL 接続を確認するために使用できる証明書バンドルをダウンロードします。これを行うには、次のコマンドを入力します。ここで、aws-api-domain は、指定された S3 バケットとそれが提供する rds-combined-ca-bundle.pem ファイルにアクセスするために必要なリージョンの Amazon S3 ドメインを完了します。

wget https://s3.aws-api-domain/rds-downloads/rds-combined-ca-bundle.pem

ターゲットエンドポイントを作成するには

1. ナビゲーションペインで、[Endpoints] を選択します。2. [Create endpoint (エンドポイントの作成)] を選択し、次の情報を入力します。

• [Endpoint type (エンドポイントタイプ)] で [Target (ターゲット)] を選択します。• [Endpoint identifier (エンドポイント識別子)] に、覚えやすい名前を入力します (例: docdb-target)。

• [Target engine (ターゲットエンジン)] で [docdb] を選択します。• [Server name (サーバー名)] に Amazon DocumentDB クラスターの DNS 名を入力します。• [Port (ポート)] に Amazon DocumentDB クラスターのポート番号を入力します。• [SSL mode (SSL モード)] で [verify-full] を選択します。• [CA certificate (CA 証明書)] で [Add new CA certificate (新しい CA 証明書の追加)] を選択し、

[Certificate Identifier (証明書の識別子)] に「rds-combined-ca-bundle」と入力します。[Importfile (ファイルのインポート)] で、ダウンロードした rds-combined-ca-bundle.pem ファイルを参照します。完了したら、[Add new CA certificate (新しい CA 証明書の追加)] を選択します。

• [User name (ユーザー名)] に Amazon DocumentDB クラスターのマスターユーザー名を入力します。

• [Password (パスワード)] に Amazon DocumentDB クラスターのマスターパスワードを入力します。• [Database name (データベース名)] に「zips-db」と入力します。

すべての設定が正しいことを確認したら、[Create endpoint (エンドポイントの作成)] を選択します。

ソースとターゲットのエンドポイントを作成できたので、それらをテストして正しく動作することを確認します。また、AWS DMS がそれぞれのエンドポイントでデータベースオブジェクトにアクセスできることを確認するために、エンドポイントのスキーマを更新します。

API バージョン API Version 2016-01-01244

Page 252: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットとしての Amazon DocumentDB の使用

エンドポイントをテストするには

1. ナビゲーションペインで、[Endpoints] を選択します。2. ソースエンドポイント (mongodb-source) を選択し、[Test connection (接続のテスト)] を選択しま

す。3. レプリケーションインスタンス (mongodb2docdb) を選択し、[Run test (テストの実行)] を選択しま

す。テストが完了して [Status (ステータス)] が [successful (成功)] に変わるまでに数分かかります。

[Status (ステータス)] が [failed (失敗)] になった場合はエラーメッセージを確認します。エラーがあった場合は修正し、再度エンドポイントをテストします。

Note

この手順をターゲットエンドポイント (docdb-target) に対して繰り返します。

スキーマを更新するには

1. ナビゲーションペインで、[Endpoints] を選択します。2. ソースエンドポイント (mongodb-source) を選択し、[Refresh schemas (スキーマの更新)] を選択し

ます。3. レプリケーションインスタンス (mongodb2docdb) を選択し、[Refresh schemas (スキーマの更新)] を

選択します。

Note

この手順をターゲットエンドポイント (docdb-target) に対して繰り返します。

ステップ 5: 移行タスクの作成と実行

これで、AWS DMS 移行タスクを起動して zips のデータを MongoDB から Amazon DocumentDB に移行する準備ができました。

1. AWS DMS コンソール (https://console.aws.amazon.com/dms/) を開きます。2. ナビゲーションペインで、[Tasks] を選択します。3. [Create task (タスクの作成)] を選択し、次の情報を入力します。

• [Task name (タスク名)] に、覚えやすい名前を入力します (例: my-dms-task)。• [Replication instance (レプリケーションインスタンス)] で、「ステップ 3: AWS DMS レプリケー

ションインスタンスを作成する (p. 242)」で作成したレプリケーションインスタンスを選択します。

• [Source endpoint (ソースエンドポイント)] で、「ステップ 4: ソースとターゲットのエンドポイントを作成する (p. 243)」で作成したソースエンドポイントを選択します。

• [Target endpoint (ターゲットエンドポイント)] で、「ステップ 4: ソースとターゲットのエンドポイントを作成する (p. 243)」で作成したターゲットエンドポイントを選択します。

• [Migration type (移行タイプ)] で [Migrate existing data (既存のデータを移行する)] を選択します。• [Start task on create (作成時にタスクを開始)] を有効にします。

[Task Settings (タスク設定)] セクションのオプションはすべてデフォルト値のままにします。

[Table mappings (テーブルマッピング)] セクションで [Guided (ガイド)] タブを選択して、次の情報を入力します。

• [Schema name is (スキーマ名)] で [Enter a schema (スキーマの入力)] を選択します。

API バージョン API Version 2016-01-01245

Page 253: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドソースおよびターゲットエンドポイントの作成

• [Schema name is like (スキーマ名の例)] はデフォルト設定 (%) のままにします。• [Table name is like (テーブル名の例)] はデフォルト設定 (%) のままにします。

[Add selection rule (選択ルールの追加)] を選択して、情報が正しいことを確認します。

すべての設定が正しいことを確認したら、[Create task (タスクの作成)] を選択します。

AWS DMS が MongoDB から Amazon DocumentDB へのデータの移行を開始します。タスクのステータスが [Starting (開始中)] から [Running (実行中)] に変わります。進捗状況をモニタリングするには、AWSDMS コンソールで [Tasks (タスク)] を選択します。数分後、ステータスが [Load complete (ロード完了)]に変わります。

Note

移行が完了したら、mongo シェルを使用して Amazon DocumentDB クラスターに接続し、zipsのデータを表示できます。詳細については、『Amazon DocumentDB 開発者ガイド』の「mongoシェルを使用して Amazon DocumentDB クラスターにアクセスする」を参照してください。

ソースおよびターゲットエンドポイントの作成レプリケーションインスタンスの作成時にソースエンドポイントとターゲットエンドポイントを作成することができます。また、レプリケーションインスタンスの作成後にエンドポイントを作成することもできます。ソースおよびターゲットデータストアには、Amazon Elastic Compute Cloud (Amazon EC2) インスタンス、Amazon Relational Database Service (Amazon RDS) DB インスタンス、またはオンプレミスデータベースを使用できます。

以下の手順では、AWS DMS コンソールウィザードを選択したことを前提とします。このステップは、 コンソールのナビゲーションペインで [Endpoints (エンドポイント)AWS DMS]、[Create endpoint (エンドポイントの作成)] の順に選択することでも実行できます。コンソールウィザードを使用するときは、ソースエンドポイントとターゲットエンドポイントの両方を同じページで作成します。コンソールウィザードを使用しないときは、各エンドポイントを個別に作成します。

AWS コンソールを使用して、ソースまたはターゲットデータベースエンドポイントを指定するには

1. [ソースおよびターゲットデータベースエンドポイントの接続] ページで、ソースまたはターゲットデータベースの接続情報を指定します。次の表で設定について説明します。

API バージョン API Version 2016-01-01246

Page 254: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドソースおよびターゲットエンドポイントの作成

使用するオプション 操作

エンドポイントタイプ このエンドポイントに対して、ソースエンドポイントまたはターゲットエンドポイントを選択します。

RDS DB インスタンスの選択 エンドポイントが Amazon RDS DB インスタンスの場合は、このオプションを選択します。

エンドポイント識別子 エンドポイントを識別するのに使用する名前を入力します。名前に、oracle-source または PostgreSQL-target などのエンドポイントの種類を含めることができます。名前はすべてのレプリケーションインスタンスに対して一意である必要があります。

ソースエンジンとターゲットエンジン エンドポイントであるデータベースエンジンのタイプを選択します。

サーバー名 サーバー名を入力します。オンプレミスデータベースの場合、IP アドレスまたはパブリックホスト名にすることができます。Amazon RDS DB インスタンスの場合、DB インスタンスのエンドポイント (DNS 名) とすることができます。たとえば、mysqlsrvinst.abcd12345678.us-west-2.rds.amazonaws.com とします。

ポート データベースが使用するポートを入力します。

API バージョン API Version 2016-01-01247

Page 255: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドソースおよびターゲットエンドポイントの作成

使用するオプション 操作

SSL モード このエンドポイントの接続暗号化を有効にする場合は、SSL モードを選択します。選択したモードにより、証明書、およびサーバー証明書情報の提供を求められることがあります。

ユーザー名 データ移行を許可するために必要な権限を持つユーザー名を入力します。必要な権限の詳細については、このユーザーガイドの「ソースまたはターゲットデータベースエンジンに対するセキュリティセクション」を参照してください。

パスワード 必要な権限のあるアカウントのパスワードを入力します。パスワード内に特殊文字 ("+" や "&" など) を使用する場合は、パスワード全体を中かっこ "{}" で囲みます。

データベース名 エンドポイントとして使用するデータベースの名前。

2. 必要がある場合は、次に示す通り、[Advanced] タブを選択して、接続文字列および暗号化キーの値を設定します。[テストの実行] を選択して、エンドポイントの接続をテストできます。

API バージョン API Version 2016-01-01248

Page 256: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドソースおよびターゲットエンドポイントの作成

使用するオプション 操作

追加の接続属性 追加の接続パラメータをここに入力します。追加の接続属性の詳細については、データストアのドキュメントセクションを参照してください。

KMS マスターキー 使用する暗号化キーを選択して、レプリケーションのストレージと接続情報を暗号化します。(デフォルト) aws/dmsを選択する場合、アカウントおよびリージョンに関連付けられたデフォルトの AWS Key Management Service (AWSKMS) キーが使用されます。暗号化キーの使用の詳細については、「暗号化キーの設定と KMS のアクセス許可の指定 (p. 47)」を参照してください。

エンドポイント接続のテスト (オプション)

VPC およびレプリケーションインスタンス名を追加します。接続をテストするには、[テストの実行] を選択します。

API バージョン API Version 2016-01-01249

Page 257: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイド

AWS DMS タスクの使用AWS Database Migration Service (AWS DMS) タスクは、すべての処理が行われる場所です。ログ記録要件、制御テーブルデータ、エラー処理など、移行と特別な処理に使用するテーブル(またはビュー)とスキーマを指定します。

移行タスクを作成するとき、いくつかのことを知っておく必要があります。

• 移行タスクを作成する前に、ソースエンドポイント、ターゲットエンドポイント、およびレプリケーションインスタンスを作成する必要があります。

• 移行タスクを調整するために多くのタスク設定を指定できます。それらは、AWS マネジメントコンソール、 AWS Command Line Interface (AWS CLI)、または AWS DMS API を使用して設定できます。これらの設定には、移行エラーの処理方法、エラーのログ記録、および制御テーブル情報を指定することが含まれます。

• タスクを作成した後、直ちに実行できます。必要なメタデータ定義を含むターゲットテーブルが自動的に作成されてロードされるため、継続的なレプリケーションを指定できます。

• デフォルトでは、タスクを作成するとすぐに、AWS DMS によりタスクが開始されます。ただし、状況によっては、タスクの開始を延期できます。たとえば、AWS CLI を使用するとき、タスクを作成するプロセスと、トリガーイベントに基づいてタスクを開始する別のプロセスが存在する場合があります。必要に応じて、タスクの開始を延期できます。

• AWS DMS コンソール、AWS CLI、または AWS DMS API を使用して、タスクのモニタリング、停止、再開を行うことができます。

AWS DMS タスクを操作するときに実行できるアクションを以下に示します。

タスク 関連資料

タスク評価レポートの作成

移行中に問題を発生させる可能性のある、サポートされていないデータ型を示すタスク評価レポートを作成できます。タスクを実行する前にタスクでこのレポートを実行して、潜在的な問題を見つけることができます。

タスク評価レポートの作成 (p. 251)

タスクの作成

タスクを作成するときに、ソース、ターゲット、およびレプリケーションインスタンスを、移行設定とともに作成します。

タスクの作成 (p. 254)

継続的なレプリケーションのタスク作成

ソースとターゲット間で、継続的なレプリケーションを提供するようにタスクをセットアップできます。

AWS DMS を使用した継続的なレプリケーション用のタスクの作成 (p. 281)

タスク設定の適用

各タスクには、データベース移行の必要に応じて設定できる設定があります。こ

AWS Database Migration Service タスク設定の指定 (p. 260)

API バージョン API Version 2016-01-01250

Page 258: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドタスク評価レポートの作成

タスク 関連資料れらの設定は JSON ファイルで作成します。その一部の設定は AWS DMS コンソールで指定できます。

データ検証

データ検証は、AWS DMS でターゲットデータストア上のデータを、ソースデータストアからのデータと比較するために使用できるタスク設定です。

AWS DMS タスクの検証 (p. 337).

タスクの変更

タスクが停止した際に、そのタスクの設定を変更できます。

タスクの変更 (p. 284)

タスク実行中のテーブル再ロード

タスク実行中にエラーが発生した場合には、タスク実行中にテーブルを再ロードできます。

タスク実行中のテーブルの再ロード (p. 284)

テーブルマッピングの使用

テーブルマッピングは、データソース、ソーススキーマ、データ、そしてタスク実行中に必要なすべての変換を指定するための複数のルールタイプを使用します。

ルールの選択選択ルールと選択アクション (p. 292)

変換ルール変換ルールおよび変換アクション (p. 295)

フィルタの適用

ソースフィルタを使用すると、ソースからターゲットに転送されるレコードの数とタイプを制限できます。たとえば、本社を拠点とする従業員だけがターゲットデータベースに移行されるように指定できます。データの列にフィルタを適用します。

ソースフィルタの使用 (p. 321)

タスクのモニタリング

タスクのパフォーマンスとそのタスクが使用するテーブルに関する情報を取得するためには、複数の方法があります。

AWS DMS タスクのモニタリング (p. 325)

タスクログの管理

AWS DMS API または AWS CLI を使用してタスクログを表示および削除することができます。

AWS DMS タスクログの管理 (p. 332)

タスク評価レポートの作成タスク評価機能によって、正しく移行されない可能性があるデータ型が識別されます。タスクの評価中に、AWS DMS はソースデータベーススキーマを読み取り、データ型のリストを作成します。次に、こ

API バージョン API Version 2016-01-01251

Page 259: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドタスク評価レポートの作成

のリストが、AWS DMS でサポートされているデータ型の事前に定義されたリストと比較されます。また、AWS DMS は移行タスクにサポートされていないデータ型があるかどうかを確認できるレポートが作成されます。

タスクの評価レポートには、サポートされていないデータ型と、各データ型の列数を一覧表示する概要が含まれます。サポートされていない各データ型について、JSON のデータ構造のリストが含まれます。このレポートを使用してソースデータ型を変更し、移行プロセスを向上させることができます。

サポートされていないデータ型のレベルは 2 つあります。レポートに「サポートされていない」と表示されたデータ型を移行することはできません。レポートに「部分的にサポートされている」と表示されたデータ型は別のデータ型に変換できる場合もありますが、予期どおり移行されない可能性があります。

タスクの評価レポートの例を次に示します。

{ "summary":{ "task-name":"test15", "not-supported":{ "data-type": [ "sql-variant" ], "column-count":3 }, "partially-supported":{ "data-type":[ "float8", "jsonb" ], "column-count":2 } }, "types":[ { "data-type":"float8", "support-level":"partially-supported", "schemas":[ { "schema-name":"schema1", "tables":[ { "table-name":"table1", "columns":[ "column1", "column2" ] }, { "table-name":"table2", "columns":[ "column3", "column4" ] } ] }, { "schema-name":"schema2", "tables":[ { "table-name":"table3", "columns":[ "column5", "column6" ]

API バージョン API Version 2016-01-01252

Page 260: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドタスク評価レポートの作成

}, { "table-name":"table4", "columns":[ "column7", "column8" ] } ] } ] }, { "datatype":"int8", "support-level":"partially-supported", "schemas":[ { "schema-name":"schema1", "tables":[ { "table-name":"table1", "columns":[ "column9", "column10" ] }, { "table-name":"table2", "columns":[ "column11", "column12" ] } ] } ] } ]}

最新のタスク評価レポートは、AWS コンソールにある [タスクページ] の [評価] タブから表示できます。AWS DMS は Amazon S3 バケットに前のタスク評価レポートを保存します。Amazon S3 バケット名は次の形式になります。

dms-<customerId>-<customerDNS>

このレポートは、タスク名で名前が付けられたフォルダ内のバケットに保存されます。レポートのファイル名は、yyyy-mm-dd-hh-mm 形式の評価日です。Amazon S3 コンソールから、以前のタスク評価レポートを表示、比較できます。

また、AWS DMS では、S3 バケットへのアクセスを許可するために、AWS Identity and AccessManagement (IAM) ロールが作成されます。このロール名は dms-access-for-tasks です。このロールではAmazonDMSRedshiftS3Role ポリシーが使用されます。

AWS コンソール、AWS CLI、または DMS API を使用してタスク評価機能を有効にできます。

• コンソールで、タスクの作成時または変更時に [Task Assessment] を選択します。コンソールを使用してタスク評価レポートを表示するには、[Tasks] ページでタスクを選択し、詳細セクションの[Assessment results] タブを選択します。

• CLI コマンドは、タスクの評価を開始する start-replication-task-assessment と、タスク評価レポートを JSON 形式で受け取る describe-replication-task-assessment-results です。

API バージョン API Version 2016-01-01253

Page 261: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドタスクの作成

• AWS DMS API は、StartReplicationTaskAssessment アクションを使用してタスク評価を開始し、DescribeReplicationTaskAssessment アクションを使用して JSON 形式でタスク評価レポートを受け取ります。

タスクの作成AWS DMS 移行タスクを作成するためには、いくつかの操作を行う必要があります。

• 移行タスクを作成する前に、ソースエンドポイント、ターゲットエンドポイント、およびレプリケーションインスタンスを作成します。

• 移行方法を選択します。• データをターゲットデータベースに移行する – このプロセスでは、ターゲットデータベースにファ

イルまたはテーブルを作成し、ターゲットで必要なメタデータを自動的に定義します。また、ソースのデータをテーブルに入力します。テーブルのデータは、効率を高めるために並列でロードされます。このプロセスは、AWS コンソールでは [Migrate existing data] オプションとなっており、API では Full Load と呼ばれています。

• 移行中に変更をキャプチャする – このプロセスでは、データがソースからターゲットに移行されているときに発生した変更をソースデータベースにキャプチャします。最初にリクエストされたデータの移行が完了すると、変更データキャプチャ (CDC) プロセスがキャプチャした変更をターゲットデータベースに適用します。変更は、1 つのコミットされたトランザクションユニットとしてキャプチャおよび適用され、複数の異なるターゲットテーブルを 1 つのソースコミットとして更新できます。このアプローチでは、ターゲットデータベースにおけるトランザクションの完全性が保証されます。このプロセスは、AWS コンソールでは [Migrate existing data and replicate ongoing changes] オプションとなっており、API では full-load-and-cdc と呼ばれています。

• データ変更のみソースデータベースにレプリケートする – このプロセスでは、ソースデータベース管理システム (DBMS) の復旧ログファイルを読み取り、各トランザクションのエントリをまとめます。場合によっては、AWS DMS が妥当な時間内にターゲットに変更を適用できない場合があります(ターゲットにアクセスできない場合など)。このような場合、AWS DMS は必要な限り変更をレプリケーションサーバーにバッファします。DBMS ログを再読み取りしないため、長時間かかる可能性があります。このプロセスでは、AWS DMS コンソールで [Replicate data changes only (データ変更のみをレプリケートする)] オプションが選択されています。

• ソースでラージバイナリオブジェクト (LOB) を処理する方法を決定します。詳細については、「AWSDMS タスクのソースデータベースの LOB サポートの設定 (p. 280)」を参照してください。

• 移行タスクの設定を指定します。これには、ログ記録の設定、移行の制御テーブルに書き込まれるデータ、エラーの処理方法、およびその他の設定が含まれます。タスク設定の詳細については、「AWSDatabase Migration Service タスク設定の指定 (p. 260)」を参照してください。

• テーブルマッピングを設定して、選択するルールを定義し、移行するデータをフィルタします。テーブルマッピングの詳細については、「テーブルマッピングを使用して、タスクの設定を指定する (p. 286)」を参照してください。マッピングを指定する前に、ソースデータベースとターゲットデータベースのデータ型マッピングのドキュメントセクションを確認してください。

[タスクの作成] ページでタスクへの情報の指定が完了するとすぐにタスクを開始することができます。または、タスク情報の指定が完了した後に [ダッシュボード] ページからタスクを開始することができます。

以下の手順では、AWS DMS コンソールウィザードを選択し、コンソールウィザードを使用してレプリケーションインスタンスの情報とエンドポイントを指定したことを前提とします。このステップは、AWSDMS コンソールのナビゲーションペインで [タスク]、[タスクの作成] を順に選択して実行することもできます。

移行タスクを作成するには

1. [Create Task] ページで、タスクオプションを指定します。次の表で設定について説明します。

API バージョン API Version 2016-01-01254

Page 262: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドタスクの作成

使用するオプション 操作

タスク名 タスクの名前を入力します。

タスクの説明 タスクの説明を入力します。

ソースエンドポイント 使用するソースエンドポイントを表示します。

ターゲットエンドポイント 使用するターゲットエンドポイントを表示します。

レプリケーションインスタンス 使用するレプリケーションインスタンスを表示します。

移行タイプ 使用する移行方法を選択します。既存のデータのみをターゲットデータベースへ移行するか、移行したデータに加えて継続的な変更もターゲットデータベースに送信するかを選択できます。

作成時にタスクを開始 このオプションが選択されていると、タスクは作成直後に始まります。

2. 次に示すように、[Task Settings] タブを選択して、ターゲットテーブルの値、LOB サポートを指定して、ログ作成を有効にします。表示されるタスク設定は、選択した移行タイプの値によって異なります。たとえば、[既存のデータの移行] を選択すると、次のオプションが表示されます。

API バージョン API Version 2016-01-01255

Page 263: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドタスクの作成

API バージョン API Version 2016-01-01256

Page 264: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドタスクの作成

使用するオプション 操作

ターゲットテーブル作成モード [何もしない] – [何もしない] モードの場合、AWS DMS ではターゲットテーブルがターゲットで事前に作成されていることを前提とします。移行が全ロードまたは全ロード +CDC である場合は、移行を開始する前にターゲットテーブルが空であることを確認する必要があります。何もしない モードは、これらのポイントがあてはまる場合、CDCのみのタスクに適切な選択肢です。ターゲットテーブルはソースから事前にバックフィルされています。また、継続的なレプリケーションが適用され、ソースとターゲットの同期が維持されます。テーブルを事前に作成するには、AWS Schema Conversion Tool (AWS SCT) を使用できます。詳細については、「AWS SCT のインストール」を参照してください。

[ターゲット上のテーブルを削除] – [ターゲット上のテーブルを削除] モードの場合、AWS DMS はターゲットテーブルを削除し、これらを移行の開始前に再作成します。これにより、移行の開始時にターゲットテーブルは確実に空になります。AWS DMS は、データの効率的な移行に必要なオブジェクト (テーブル、プライマリキー、および必要に応じて一意のインデックス) のみを作成します。テーブル、プライマリキー、場合によっては一意のインデックスを作成します。AWS DMS は、セカンダリインデックス、非プライマリキーの制約、列データのデフォルトは作成しません。全ロードと CDC または CDC のみのタスクを実行する場合は、この時点で移行を一時停止することをお勧めします。次に、更新および削除ステートメントのフィルタリングをサポートするセカンダリインデックスを作成します。

[ターゲット上のテーブルを削除] モードを使用する場合は、必要に応じてターゲットデータベースで一部の設定を行います。たとえば、Oracle ターゲットの場合、セキュリティ上の理由から AWS DMS はスキーマ(データベースユーザー)を作成できません。この場合、移行の開始時にAWS DMS でテーブルを作成できるように、スキーマユーザーを事前に作成する必要があります。他の大半のターゲットタイプの場合、AWS DMS は適切な設定パラメータを使用してスキーマおよびすべての関連するテーブルを作成します。

[切り捨て] – [切り捨て] モードの場合、AWS DMS は移行の開始前にすべてのターゲットテーブルを切り捨てます。切り捨てモードは全ロードまたは全ロード + CDC の移行に適しています。この場合、移行の開始前にターゲットスキーマは作成済みとします。テーブルを事前に作成するには、AWS SCT を使用できます。詳細については、「AWS SCT のインストール」を参照してください。

API バージョン API Version 2016-01-01257

Page 265: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドタスクの作成

使用するオプション 操作

レプリケーションに LOB 列を含める [LOB 列を含めない] – LOB 列は移行対象から除外されます。

[完全 LOB モード] – サイズに関係なく LOB 全体を移行します。AWS DMS は、[最大 LOB サイズ] パラメータで制御されるチャンクの単位で LOB を移行します。このモードは制限付き LOB モードを使用するよりも低速です。

[制限付き LOB モード] – LOB を [最大 LOB サイズ] パラメータの値まで切り詰めます。このモードは完全 LOBモードを使用するよりも高速です。

最大 LOB サイズ (KB) [制限付き LOB モード] では、[最大 LOB サイズ] の設定を超える LOB 列は指定した [最大 LOB サイズ] まで切り捨てられます。

検証の有効化 データの検証を有効にして、ソースからターゲットにデータが正確に移行されることを確認します。詳細については、「AWS DMS タスクの検証 (p. 337)」を参照してください。

ログ作成の有効化 Amazon CloudWatch によるログ記録を有効にします。

[既存のデータの移行とレプリケート] を [移行タイプ] で選択した場合、次のオプションが表示されます。

API バージョン API Version 2016-01-01258

Page 266: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドタスクの作成

使用するオプション 操作

ターゲットテーブル作成モード [何もしない] – ターゲットテーブルのデータとメタデータは変更されません。

[ターゲット上のテーブルを削除] – テーブルは削除され、代わりに新しいテーブルが作成されます。

[切り捨て] – テーブルは、テーブルのメタデータに影響を与えないで切り捨てられます。

全ロードの完了後にタスクを停止する [停止しない] – タスクを停止せず、キャッシュされた変更をすぐに適用したら、そのまま続行します。

[キャッシュされた変更を適用する前に停止する] - キャッシュされた変更を適用する前に、タスクを停止します。この方法を使用して、変更の適用を高速化する可能性があるセカンダリインデックスを追加できます。

キャッシュされた変更を適用した後に停止する - キャッシュされた変更を適用した後に、タスクを停止します。トランザクショナルな適用を使用する場合、この方法を使用して、外部キーやトリガーなどを追加できます。

レプリケーションに LOB 列を含める [LOB 列を含めない] – LOB 列は移行対象から除外されます。

[完全 LOB モード] – サイズに関係なく LOB 全体を移行します。LOB は、LOB チャンクサイズによって制御されるチャンクの単位で移行されます。この方法は制限付き LOBモードを使用するよりも低速です。

[制限付き LOB モード] – LOB を「最大 LOB サイズ」まで切り詰めます。この方法は完全 LOB モードを使用するよりも高速です。

最大 LOB サイズ (KB) [制限付き LOB モード] では、[最大 LOB サイズ] の設定を超える LOB 列は指定した [最大 LOB サイズ] まで切り捨てられます。

検証の有効化 データの検証を有効にして、ソースからターゲットにデータが正確に移行されることを確認します。詳細については、「AWS DMS タスクの検証 (p. 337)」を参照してください。

ログ作成の有効化 CloudWatch によるログ記録を有効にします。

3. 次に示す通り、[テーブルマッピング] タブを選択して、スキーママッピングの値およびマッピング方法を設定します。[カスタム] を選択した場合、ターゲットスキーマとテーブル値を指定できます。テーブルマッピングの詳細については、「テーブルマッピングを使用して、タスクの設定を指定する (p. 286)」を参照してください。

API バージョン API Version 2016-01-01259

Page 267: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドタスク設定

4. タスクの設定を完了した後、[タスクの作成] を選択します。

AWS Database Migration Service タスク設定の指定各タスクには、データベース移行の必要に応じて設定できる設定があります。これらの設定は JSON ファイルで作成します。その一部の設定は AWS DMS コンソールで指定できます。

以下に示すように、タスク設定には、いくつかの主要なタイプがあります。

トピック• ターゲットメタデータのタスク設定 (p. 263)• 全ロードタスク設定 (p. 264)• ログ記録タスク設定 (p. 265)• 制御テーブルタスク設定 (p. 266)• ストリームバッファタスク設定 (p. 269)• 変更処理のチューニング設定 (p. 269)• データ検証タスクの設定 (p. 270)• 変更処理の DDL 処理のタスク設定 (p. 271)• 文字置換タスクの設定 (p. 272)• エラー処理タスクの設定 (p. 276)• タスク設定の保存 (p. 278)

タスク設定 関連資料

タスク評価レポートの作成

移行中に問題を発生させる可能性のある、サポートされていないデータ型を示すタスク評価レポートを作成できます。タスクを実行する前にタスクでこのレポートを実行して、潜在的な問題を見つけることができます。

タスク評価レポートの作成 (p. 251)

タスクの作成

タスクを作成するときに、ソース、ターゲット、およびレプリケーションインスタンスを、移行設定とともに作成します。

タスクの作成 (p. 254)

API バージョン API Version 2016-01-01260

Page 268: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドタスク設定

タスク設定 関連資料

継続的なレプリケーションのタスク作成

ソースとターゲット間で、継続的なレプリケーションを提供するようにタスクをセットアップできます。

AWS DMS を使用した継続的なレプリケーション用のタスクの作成 (p. 281)

タスク設定の適用

各タスクには、データベース移行の必要に応じて設定できる設定があります。これらの設定は JSON ファイルで作成します。その一部の設定は AWS DMS コンソールで指定できます。

AWS Database Migration Service タスク設定の指定 (p. 260)

データ検証

データ検証は、AWS DMS でターゲットデータストア上のデータを、ソースデータストアからのデータと比較するために使用できるタスク設定です。

AWS DMS タスクの検証 (p. 337)

タスクの変更

タスクが停止した際に、そのタスクの設定を変更できます。

タスクの変更 (p. 284)

タスク実行中のテーブル再ロード

タスク実行中にエラーが発生した場合には、タスク実行中にテーブルを再ロードできます。

タスク実行中のテーブルの再ロード (p. 284)

テーブルマッピングの使用

テーブルマッピングは、データソース、ソーススキーマ、データ、およびタスク実行中に必要なすべての変換のタスク設定を指定するための複数のルールタイプを使用します。

ルールの選択選択ルールと選択アクション (p. 292)

変換ルール変換ルールおよび変換アクション (p. 295)

フィルタの適用

ソースフィルタを使用すると、ソースからターゲットに転送されるレコードの数とタイプを制限できます。たとえば、本社を拠点とする従業員だけがターゲットデータベースに移行されるように指定できます。データの列にフィルタを適用します。

ソースフィルタの使用 (p. 321)

タスクのモニタリング

タスクのパフォーマンスとそのタスクが使用するテーブルに関する情報を取得するためには、複数の方法があります。

AWS DMS タスクのモニタリング (p. 325)

API バージョン API Version 2016-01-01261

Page 269: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドタスク設定

タスク設定 関連資料

タスクログの管理

AWS DMS API または AWS CLI を使用してタスクログを表示および削除することができます。

AWS DMS タスクログの管理 (p. 332)

タスク設定の JSON ファイルは次のようになります。

{ "TargetMetadata": { "TargetSchema": "", "SupportLobs": true, "FullLobMode": false, "LobChunkSize": 64, "LimitedSizeLobMode": true, "LobMaxSize": 32, "InlineLobMaxSize": 0, "LoadMaxFileSize": 0, "ParallelLoadThreads": 0, "ParallelLoadBufferSize":0, "BatchApplyEnabled": false, "TaskRecoveryTableEnabled": false }, "FullLoadSettings": { "TargetTablePrepMode": "DO_NOTHING", "CreatePkAfterFullLoad": false, "StopTaskCachedChangesApplied": false, "StopTaskCachedChangesNotApplied": false, "MaxFullLoadSubTasks": 8, "TransactionConsistencyTimeout": 600, "CommitRate": 10000 }, "Logging": { "EnableLogging": false }, "ControlTablesSettings": { "ControlSchema":"", "HistoryTimeslotInMinutes":5, "HistoryTableEnabled": false, "SuspendedTablesTableEnabled": false, "StatusTableEnabled": false }, "StreamBufferSettings": { "StreamBufferCount": 3, "StreamBufferSizeInMB": 8 }, "ChangeProcessingTuning": { "BatchApplyPreserveTransaction": true, "BatchApplyTimeoutMin": 1, "BatchApplyTimeoutMax": 30, "BatchApplyMemoryLimit": 500, "BatchSplitSize": 0, "MinTransactionSize": 1000, "CommitTimeout": 1, "MemoryLimitTotal": 1024, "MemoryKeepTime": 60, "StatementCacheSize": 50 }, "ChangeProcessingDdlHandlingPolicy": { "HandleSourceTableDropped": true,

API バージョン API Version 2016-01-01262

Page 270: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドタスク設定

"HandleSourceTableTruncated": true, "HandleSourceTableAltered": true }, "ValidationSettings": { "EnableValidation": true, "ThreadCount": 5 }, "CharacterSetSettings": { "CharacterReplacements": [ { "SourceCharacterCodePoint": 35, "TargetCharacterCodePoint": 52 }, { "SourceCharacterCodePoint": 37, "TargetCharacterCodePoint": 103 } ], "CharacterSetSupport": { "CharacterSet": "UTF16_PlatformEndian", "ReplaceWithCharacterCodePoint": 0 } }, "ErrorBehavior": { "DataErrorPolicy": "LOG_ERROR", "DataTruncationErrorPolicy":"LOG_ERROR", "DataErrorEscalationPolicy":"SUSPEND_TABLE", "DataErrorEscalationCount": 50, "TableErrorPolicy":"SUSPEND_TABLE", "TableErrorEscalationPolicy":"STOP_TASK", "TableErrorEscalationCount": 50, "RecoverableErrorCount": 0, "RecoverableErrorInterval": 5, "RecoverableErrorThrottling": true, "RecoverableErrorThrottlingMax": 1800, "ApplyErrorDeletePolicy":"IGNORE_RECORD", "ApplyErrorInsertPolicy":"LOG_ERROR", "ApplyErrorUpdatePolicy":"LOG_ERROR", "ApplyErrorEscalationPolicy":"LOG_ERROR", "ApplyErrorEscalationCount": 0, "FullLoadIgnoreConflicts": true }}

ターゲットメタデータのタスク設定ターゲットメタデータ設定には、以下のものが含まれます。

• TargetSchema – ターゲットテーブルスキーマ名。このメタデータオプションが空の場合、ソーステーブルのスキーマが使用されます。AWS DMS は、ソーススキーマが定義されていない場合、ターゲットデータベースの所有者プレフィックスをすべてのテーブルに自動的に追加します。このオプションは、MySQL 型のターゲットエンドポイントでは空のままにする必要があります。

• LOB 設定 – ラージオブジェクト (LOB) の管理方法を決定する設定。SupportLobs=true と設定した場合、次のいずれかを true に設定する必要があります。• FullLobMode – このオプションを true に設定した場合、LobChunkSize オプションの値を入力す

る必要があります。ターゲットにデータをレプリケートするときに使用する LOB チャンクサイズをキロバイト単位で入力します。FullLobMode オプションは、LOB のサイズが大きい場合に最適ですが、ロードが遅くなる傾向になります。

• InlineLobMaxSize – この値は、全ロード中にどの LOB AWS Database Migration Service がインライン転送するかを決定します。小さな LOB は、ソーステーブルから探すよりも転送する方が効率的です。全ロード中、AWS Database Migration Service はすべての LOB をチェックして、InlineLobMaxSize より小さい LOB にインライン転送を実行します。AWS Database

API バージョン API Version 2016-01-01263

Page 271: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドタスク設定

Migration Service は、InlineLobMaxSize を超えるすべての LOB を FullLobMode で 転送します。InlineLobMaxSize のデフォルト値は 0 で、範囲は 1 キロバイト – 2 ギガバイトです。ほとんどの LOB が InlineLobMaxSize で設定した値よりも小さいことがわかっている場合のみ、InlineLobMaxSize に値を指定します。

• LimitedSizeLobMode – このオプションを true に設定した場合、LobMaxSize オプションの値を入力する必要があります。個々の LOB の最大サイズをキロバイト単位で入力します。

これらのタスクの LOB 設定を使用する条件の詳細については、「AWS DMS タスクのソースデータベースの LOB サポートの設定 (p. 280)」を参照してください。また、個々のテーブルの LOB の管理を制御できます。詳細については、テーブル設定のルールとオペレーション (p. 304) を参照してください。

• LoadMaxFileSize – 保存されたアンロードデータ (.csv ファイルなど) のディスクにおける最大サイズを定義する PostgreSQL および MySQL ターゲットエンドポイントのオプション。このオプションは、接続属性を上書きします。0 (このオプションが接続属性を上書きしないことを示します) から 100,000KB までの値を指定できます。

• BatchApplyEnabled – 各トランザクションを個別に適用するか、変更をバッチでコミットするかを決定します。デフォルト値は false です。

BatchApplyEnabled パラメータは BatchApplyPreserveTransaction パラメータと併用されます。BatchApplyEnabled を true に設定すると、BatchApplyPreserveTransaction パラメータがトランザクションの整合性を確認します。

BatchApplyPreserveTransaction を true に設定すると、トランザクションの整合性が保持され、バッチにはソースのトランザクション内のすべての変更が確実に含まれます。

BatchApplyPreserveTransaction を false に設定すると、パフォーマンスを向上させるためにトランザクションの整合性が一時的に失われることがあります。

BatchApplyPreserveTransaction パラメータは、Oracle ターゲットエンドポイントにのみ適用され、BatchApplyEnabled パラメータが true に設定されている場合に限り、適切に機能します。

LOB 列がレプリケーションに含まれる場合、制限された LOB モードのみで BatchApplyEnabled を使用できます。

変更データキャプチャ (CDC) のロードでこれらの設定を使用する方法の詳細については、「変更処理のチューニング設定 (p. 269)」を参照してください。

• ParallelLoadThreads – 各テーブルをターゲットデータベースにロードするために AWSDMS が使用するスレッドの数を指定します。MySQL ターゲットの最大値は 16 です。AmazonDynamoDB、Amazon Kinesis Data Streams、または Amazon Elasticsearch Service ターゲットの最大値は 32 です。この上限を増やすよう依頼できます。個々のテーブルの並列ロードを設定する詳細については、「テーブル設定のルールとオペレーション (p. 304)」を参照してください。

• ParallelLoadBufferSize – ターゲットにデータをロードするために並列ロードスレッドが使用する、バッファ内に保存するレコードの最大数を指定します。デフォルト値は 50 です。最大値は 1000 です。この設定は、現在、DynamoDB、Kinesis、または Elasticsearch がターゲットの場合にのみ有効です。このパラメータを ParallelLoadThreads で使用します。1 つ以上のスレッドがある場合にのみParallelLoadBufferSize が有効になります。個々のテーブルの並列ロードを設定する詳細については、「テーブル設定のルールとオペレーション (p. 304)」を参照してください。

Note

Kinesis Data Streams ターゲットでの ParallelLoadThreads と ParallelLoadBufferSizeのパラメータのサポートは、AWS DMS バージョン 3.1.4 以降で利用可能です。

全ロードタスク設定全ロード設定には、以下のものが含まれます。

API バージョン API Version 2016-01-01264

Page 272: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドタスク設定

• 全ロードセットアップ時にターゲットのロードを処理する方法を指定するには、TargetTablePrepMode オプションに次のいずれかの値を指定します。• DO_NOTHING – 既存のターゲットテーブルのデータとメタデータには影響を与えません。• DROP_AND_CREATE – 既存のテーブルが削除され、新しいテーブルがその場所に作成されます。• TRUNCATE_BEFORE_LOAD – テーブルメタデータに影響を与えずにデータが切り捨てられます。

• 全ロードが完了するまでプライマリキーや一意のインデックスの作成を遅らせるには、CreatePkAfterFullLoad オプションを設定します。このオプションが選択されると、完了していない全ロードタスクを再開することはできません。

• 全ロードタスクと CDC が有効なタスクの場合、次の Stop task after full load completes のオプションを設定できます。• StopTaskCachedChangesApplied – 全ロードが完了してキャッシュされた変更が適用された後に

タスクを停止するには、このオプションを true に設定します。• StopTaskCachedChangesNotApplied – キャッシュされた変更が適用される前にタスクを停止す

るには、このオプションを true に設定します。• 並行してロードするテーブルの最大数を指定するには、MaxFullLoadSubTasks オプションを設定し

ます。デフォルトは 8、最大値は 49 です。• 全ロードオペレーションを開始する前に、AWS DMS がトランザクションのクローズを待機す

る秒数を設定できます。これを行うには、タスクの開始時にトランザクションが開いている場合は、TransactionConsistencyTimeout オプションを設定します。デフォルト値は 600 (10 分) です。AWS DMS は、開いているトランザクションがある場合でも、タイムアウト値に到達すると全ロードを開始します。全ロードのみのタスクは 10 分間待機せず、即座に開始されます。

• まとめて転送可能なイベントの最大数を指定するには、CommitRate オプションを設定します。

ログ記録タスク設定ロギング機能は、移行プロセス中に Amazon CloudWatch を使用して情報を記録します。ロギングタスク設定を使用して、記録するコンポーネントアクティビティと、ログに書き込まれる情報量を指定できます。ログ記録タスク設定は JSON ファイルに書き込まれます。

CloudWatch ログ記録は、いくつかの方法で有効にできます。移行タスクを作成するときに、AWS マネジメントコンソール で EnableLogging オプションを選択できます。または、AWS DMS API を使用してタスクを作成するときに EnableLogging オプションを true に設定できます。さらに、タスク設定のロギングセクションの JSON で "EnableLogging": true を指定することもできます。

タスクログを削除するには、タスク設定のロギングセクションの JSON で "DeleteTaskLogs": trueを指定することもできます。

以下のコンポーネントアクティビティにロギングを指定できます。

• SOURCE_UNLOAD – データがソースデータベースからアンロードされます。• SOURCE_CAPTURE – データがソースデータベースからキャプチャされます。• TARGET_LOAD – データがターゲットデータベースにロードされます。• TARGET_APPLY – データおよびデータ定義言語 (DDL) ステートメントがターゲットデータベースに適

用されます。• TASK_MANAGER – タスクマネージャーによってイベントがトリガーされます。

コンポーネントアクティビティを指定した後で、記録される情報の量を指定できます。次のリストは、低い情報レベルから高い情報レベルの順序になっています。高いレベルには、必ず低いレベルの情報が含まれています。指定できる重要度の値は以下のとおりです。

• LOGGER_SEVERITY_ERROR – エラーメッセージがログに書き込まれます。• LOGGER_SEVERITY_WARNING – 警告とエラーメッセージがログに書き込まれます。• LOGGER_SEVERITY_INFO – 情報メッセージ、警告、エラーメッセージがログに書き込まれます。

API バージョン API Version 2016-01-01265

Page 273: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドタスク設定

• LOGGER_SEVERITY_DEFAULT – 情報メッセージ、警告、エラーメッセージがログに書き込まれます。

• LOGGER_SEVERITY_DEBUG – デバッグメッセージ、情報メッセージ、警告、エラーメッセージがログに書き込まれます。

• LOGGER_SEVERITY_DETAILED_DEBUG – すべての情報がログに書き込まれます。

たとえば、次の JSON セクションにあるのは、すべてのコンポーネントアクティビティをログに記録するためのタスク設定です。

… "Logging": { "EnableLogging": true, "LogComponents": [{ "Id": "SOURCE_UNLOAD", "Severity": "LOGGER_SEVERITY_DEFAULT" },{ "Id": "SOURCE_CAPTURE", "Severity": "LOGGER_SEVERITY_DEFAULT" },{ "Id": "TARGET_LOAD", "Severity": "LOGGER_SEVERITY_DEFAULT" },{ "Id": "TARGET_APPLY", "Severity": "LOGGER_SEVERITY_INFO" },{ "Id": "TASK_MANAGER", "Severity": "LOGGER_SEVERITY_DEBUG" }] }, …

制御テーブルタスク設定コントロールテーブルは、 AWS DMS タスクに関する情報を提供します。また、現在の移行タスクと今後のタスクの両方を計画および管理するために使用できる有益な統計情報も提供します。これらのタスク設定は JSON ファイルで適用するか、AWS DMS コンソールで [Create task (タスクの作成)] ページの [Advanced Settings (詳細設定)] を選択して適用できます。[Apply Exceptions (例外を適用)] テーブル(dmslogs.awsdms_apply_exceptions) は常に作成されます。以下を含む追加のテーブルを作成することもできます。

• [レプリケーションステータス (dmslogs.awsdms_status)] – このテーブルは、現在のタスクに関する詳細を提供します。これには、タスクステータス、タスクにより消費されるメモリの量、まだターゲットに適用されていない変更の数が含まれます。このテーブルは、AWS DMS が現在読み取っているソースデータベース内の位置も示します。タスクの全ロード、あるいはデータキャプチャの変更 (CDC) についても表示します。

• 停止済みテーブル (dmslogs.awsdms_suspended_tables) – このテーブルは、停止済みテーブルのリストと、停止された理由を示します。

• [レプリケーション履歴 (dmslogs.awsdms_history)] – このテーブルは、レプリケーション履歴に関する情報を提供します。この情報には、タスク中に処理されたレコードの数とボリューム、CDC タスク終了時のレイテンシー、およびその他の統計情報などが含まれています。

例外適用テーブル dmslogs.awsdms_apply_exceptions には、以下のパラメータが含まれます。

列 タイプ 説明

TASK_NAME nvchar AWS DMS タスクの名前。

API バージョン API Version 2016-01-01266

Page 274: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドタスク設定

列 タイプ 説明

TABLE_OWNER nvchar テーブル所有者。

TABLE_NAME nvchar テーブルの名前。

ERROR_TIME timestamp 時間例外 (エラー) が発生しました。

STATEMENT nvchar エラーが発生したときに実行されたステートメント。

ERROR nvchar エラーの名前と説明。

レプリケーション履歴テーブル (dmslogs.awsdms_history) には、以下のパラメータが含まれます。

列 タイプ 説明

SERVER_NAME nvchar レプリケーションタスクを実行しているマシンの名前。

TASK_NAME nvchar AWS DMS タスクの名前。

TIMESLOT_TYPE varchar 次のいずれかの値になります。

• FULL LOAD• CHANGE PROCESSING (CDC)

タスクが全ロードと CDC の両方を実行している場合、2 つの履歴レコードがタイムスロットに書き込まれます。

TIMESLOT timestamp タイムスロットのタイムスタンプ終了。

TIMESLOT_DURATION int タイムスロットの期間。

TIMESLOT_LATENCY int タイムスロットの終了時のターゲットレイテンシー。この値は CDC タイムスロットにのみ適用されます。

RECORDS int タイムスロット中に処理されるレコード数。

TIMESLOT_VOLUME int 処理されるデータ量を MB で 表示。

レプリケーションステータステーブル (dmslogs.awsdms_status) には、タスクの現在のステータスとターゲットのデータベースが含まれます。これには、次の設定があります。

列 タイプ 説明

SERVER_NAME nvchar レプリケーションタスクを実行しているマシンの名前。

TASK_NAME nvchar AWS DMS タスクの名前。

API バージョン API Version 2016-01-01267

Page 275: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドタスク設定

列 タイプ 説明

TASK_STATUS varchar 次のいずれかの値になります。

• FULL LOAD• CHANGE PROCESSING (CDC)

全ロードされているテーブルが少なくとも 1 つある限り、タスクのステータスを FULL LOAD と設定します。CDC が有効化されている場合、すべてのテーブルがロードされた後、タスクステータスは CHANGEPROCESSING に変更します。

STATUS_TIME timestamp タスクの状態のタイムスタンプ。

PENDING_CHANGES int ターゲットに適用されなかった変更レコード数。

DISK_SWAP_SIZE int 古い、またはオフロードされたトランザクションにより使用されるディスク領域の量。

TASK_MEMORY int 使用されている現在のメモリを MBで表示。

SOURCE_CURRENT

_POSITION

varchar AWS DMS が現在読み取っているソースデータベースの位置。

SOURCE_CURRENT

_TIMESTAMP

timestamp AWS DMS が現在読み取っているソースデータベースのタイムスタンプ。

SOURCE_TAIL

_POSITION

varchar 最も以前に起動された完了していないトランザクションの位置。この値は、すべての変更を失わずに返すことができる最も新しい位置を示します。

SOURCE_TAIL

_TIMESTAMP

timestamp 最も以前に起動された完了していないトランザクションのタイムスタンプ。この値は、すべての変更を失わずに返すことができる最も新しいタイムスタンプを示します。

SOURCE_TIMESTAMP

_APPLIED

timestamp 最新の完了したトランザクションのタイムスタンプ。一括適用のプロセスでは、この値はバッチ内の最新トランザクション完了のタイムスタンプの値を示します。

追加の制御テーブル設定には、以下のものが含まれます。

• HistoryTimeslotInMinutes – レプリケーション履歴テーブルにおける各タイムスロットの長さを指定するには、このオプションを使用します。デフォルトは 5 分です。

API バージョン API Version 2016-01-01268

Page 276: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドタスク設定

• ControlSchema – AWS DMS ターゲット制御テーブルのデータベーススキーマ名を指定するには、このオプションを使用します。このフィールドに情報を入力しない場合、テーブルはデータベースのデフォルトの場所にコピーされます。その例を次に示します。• PostgreSQL、Public• Oracle、ターゲットスキーマ• SQL Server、ターゲットデータベース内の dbo• MySQL、awsdms_control• MariaDB、awsdms_control• Redshift、Public• DynamoDB、データベース内で個別のテーブルとして作成

ストリームバッファタスク設定AWS CLI を使用して、以下のようなストリームバッファを設定できます。

• StreamBufferCount – 移行タスクのデータストリームバッファの数を指定するには、このオプションを指定します。デフォルトストリームバッファの数は 3 です。この設定の値を大きくすると、データ抽出速度が上昇する可能性があります。ただし、このパフォーマンス向上は、レプリケーションサーバーのソースシステムやインスタンスクラスなど、移行環境に大きく依存します。ほとんどの場合はデフォルトで十分です。

• StreamBufferSizeInMB – 各データストリームバッファの最大サイズを指定するには、このオプションを使用します。デフォルトサイズは 8 MB です。非常に大きい LOB を使用する場合、このオプションの値を大きくする必要がある場合があります。また、ストリームバッファサイズが不十分であることを示すメッセージがログファイルに記録されている場合も、この値を大きくする必要がある可能性があります。このオプションのサイズを計算するときは、 [Max LOB size (or LOB chunksize)]*[number of LOB columns]*[number of stream buffers]*[number of tablesloading in parallel per task(MaxFullLoadSubTasks)]*3 式を使用できます。

• CtrlStreamBufferSizeInMB – 制御ストリームバッファのサイズを設定するには、このオプションを使用します。値はメガバイト単位で、1 – 8 が使用できます。デフォルト値は 5 です。かなり多くのテーブル (数万のテーブルなど) を使用している場合、状況によってはこの値を大きくする必要があります。

変更処理のチューニング設定以下の設定により、AWS DMS が変更データキャプチャ (CDC) 中にターゲットテーブルの変更を処理する方法が決まります。これらの設定のいくつかは、ターゲットメタデータパラメータ BatchApplyEnabledの値によって異なります。BatchApplyEnabled パラメータの詳細については、「ターゲットメタデータのタスク設定 (p. 263)」を参照してください。

変更処理のチューニング設定には、以下のものが含まれます。

以下の設定は、ターゲットメタデータパラメータ BatchApplyEnabled を true に設定している場合にのみ適用されます。

• BatchApplyPreserveTransaction – true に設定すると、トランザクションの整合性が保持され、バッチにはソースからのトランザクション内のすべての変更が含まれます。デフォルト値は true です。この設定は、Oracle ターゲットエンドポイントにのみ適用されます。

false に設定すると、パフォーマンスを向上させるためにトランザクションの整合性が一時的に失われることがあります。ソースからのトランザクション内のすべての変更が 1 バッチでターゲットに適用されるとは限りません。

• BatchApplyTimeoutMin – バッチ変更の各適用間で AWS DMS が待機する最短時間 (秒) を設定します。デフォルト値は 1 です。

API バージョン API Version 2016-01-01269

Page 277: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドタスク設定

• BatchApplyTimeoutMax – バッチ変更の各適用間でタイムアウトになるまでに AWS DMS が待機する最長時間 (秒) を設定します。デフォルト値は 30 です。

• BatchApplyMemoryLimit – 最適化バッチ適用モードでの前処理に使用されるメモリの最大量 (MB) を設定します。デフォルト値は 500 です。

• BatchSplitSize – 1 つのバッチに適用される変更の最大数を設定します。デフォルト値 0 は、適用される制限がないことを意味します。

以下の設定は、ターゲットメタデータパラメータ BatchApplyEnabled を false に設定している場合にのみ適用されます。

• MinTransactionSize – 各トランザクションに含める変更の最小数を設定します。デフォルト値は1000 です。

• CommitTimeout – AWS DMS がタイムアウトを宣言するまでにトランザクションをバッチで収集する最長時間 (秒) を設定します。デフォルト値は 1 です。

ターゲットメタデータパラメータ BatchApplyEnabled が true または false に設定されている場合、次の設定が適用されます。

• HandleSourceTableAltered – ソーステーブルが変更されたときにターゲットテーブルを変更するには、このオプションを true に設定します。

AWS DMS は、トランザクションがソース/ターゲットに完全にコミットされるまで、トランザクションデータをメモリに保持しようとします。ただし、割り当てたメモリより大きいトランザクションや、指定した制限時間内にコミットされないトランザクションは、ディスクに書き込まれます。

以下の設定は、変更処理のモードに関係なく、変更処理のチューニングに適用されます。

• MemoryLimitTotal – すべてのトランザクションがディスクに書き込まれるまでにメモリ内で占有できる最大サイズ (MB) を設定します。デフォルト値は 1024 です。

• MemoryKeepTime – 各トランザクションがディスクに書き込まれるまでにメモリ内で保持できる最長時間 (秒) を設定します。この期間は、AWS DMS がトランザクションのキャプチャを開始した時間から計算されます。デフォルト値は 60 です。

• StatementCacheSize – ターゲットに変更を適用するときに、後で実行するためにサーバーに保存するプリペアドステートメントの最大数を設定します。デフォルト値は 50 です。最大の値は 200 です。

データ検証タスクの設定データがソースからターゲットに正確に移行されたことを確認できます。タスクの検証を有効にすると、AWS DMS は、テーブルに対して全ロードが実行された後で、ソースデータとターゲットデータの比較をすぐに開始します。タスクのデータ検証の詳細、要件、データベースサポートのスコープ、レポートするメトリクスについては、「AWS DMS タスクの検証 (p. 337)」を参照してください。

データの検証設定およびその値には、以下のものが含まれます。

• EnableValidation – True に設定すると、データの検証を有効にします。それ以外の場合は、タスクの検証が無効になります。デフォルト値は false です。

• FailureMaxCount – 検証がタスクを停止する前に、検証を失敗できるレコードの最大数を指定します。デフォルト値は 10,000 です。検証に失敗するレコードの数に関係なく検証を継続するには、この値をソースのレコード数より大きく設定します。

• HandleCollationDiff – このオプションを true に設定する場合、比較するソースレコードとターゲットレコードが識別されると、PostgreSQL エンドポイントでの列照合の違いが考慮されます。それ以外の場合は、このような列照合の違いは検証で無視されます。PostgreSQL エンドポイントでは、列の照合は行の順序を指定でき、データ検証にとってはとても重要となります。HandleCollationDiff

API バージョン API Version 2016-01-01270

Page 278: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドタスク設定

を true に設定すると、この照合の違いを自動的に解決し、データ検証における誤検出を防ぎます。デフォルト値は false です。

• RecordFailureDelayLimitInMinutes – 検証失敗の詳細を報告する前に遅延を指定します。通常の場合、AWS DMS はターゲットに変更行う際の実際の遅延を認識するタスクレイテンシーを使用して、誤検出を防ぎます。この設定は実際の遅延値を上書きし、すべての検証メトリクスを報告する前のより長い遅延の設定を有効にします。デフォルト値は 0 です。

• TableFailureMaxCount – 検証がタスクを停止する前に、検証を失敗できるテーブルの最大数を指定します。デフォルト値は 1,000 です。検証に失敗するテーブルの数に関係なく検証を継続するには、この値をソースのテーブル数より大きく設定します。

• ThreadCount – 検証中に AWS DMS が使用する実行スレッドの数を指定します。各スレッドは、ソースとターゲットからまだ検証されていないデータを選択し、比較して検証します。デフォルト値は 5 です。ThreadCount をより高い値に設定すると、AWS DMS はより高速に検証を完了できます。ただし、この場合、AWS DMS はより多くの同時クエリを実行し、ソースとターゲットでより多くのリソースを消費します。

• ValidationOnly – このオプションを true に設定すると、タスクの実行時に、データの移行あるはレプリケーションを行わずに、データの検証をプレビューします。

このオプションを設定するには、AWS DMS コンソールでタスクの [Migration type (移行タイプ)]を[Replicate data changes only (データの変更のみをレプリケート)] に設定します。または、AWS DMSAPI で移行タイプを cdc に設定します。

このアプローチを採用することで、実際にデータを移動する前に、検証結果を表示してすべての失敗を解決することができます。このオプションは、すべてのソースデータがターゲットに移行してから失敗を解決するまで待つよりも、より効率的である可能性があります。デフォルト値は false です。

たとえば、以下の JSON ではスレッドのデフォルト数の 2 倍のデータ検証を有効化しています。また、ここでは PostgreSQL エンドポイントでの列照合の違いによって生じるレコード順序の相違も考慮されます。また、すべての検証失敗を処理する追加の時間を考慮に入れた検証報告遅延を提供します。

"ValidationSettings": { "EnableValidation": true, "ThreadCount": 10, "HandleCollationDiff": true, "RecordFailureDelayLimitInMinutes": 30 }

Note

Oracle エンドポイントの場合、AWS DMS は DBMS_CRYPTO を使用して BLOB を検証します。Oracle エンドポイントで BLOB を使用する場合は、Oracle エンドポイントにアクセスするために使用されるユーザーアカウントに DBMS_CRYPTO での実行権限を付与します。これを行うには、以下のステートメントを実行します。

grant execute on sys.dbms_crypto to <dms_endpoint_user>;

変更処理の DDL 処理のタスク設定以下の設定により、AWS DMS が変更データキャプチャ (CDC) 中にターゲットテーブルのデータ定義言語(DDL) の変更を処理する方法が決まります。変更処理の DDL 処理のタスク設定には、以下のものが含まれています。

• HandleSourceTableDropped – ソーステーブルが削除されたときにターゲットテーブルを削除するには、このオプションを true に設定します。

API バージョン API Version 2016-01-01271

Page 279: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドタスク設定

• HandleSourceTableTruncated – ソーステーブルが切り捨てられたときにターゲットテーブルを切り捨てるには、このオプションを true に設定します。

• HandleSourceTableAltered – ソーステーブルが変更されたときにターゲットテーブルを変更するには、このオプションを true に設定します。

文字置換タスクの設定AWS DMS STRING または WSTRING データ型のすべてのソースデータベース列について、レプリケーションタスクがターゲットデータベースで文字置換を実行するように指定できます。次のソースデータベースとターゲットデータベースからのエンドポイントを持つ任意のタスクの文字置換を設定できます。

• ソースデータベース。• Oracle• Microsoft SQL Server• MySQL• PostgreSQL• SAP Adaptive Server Enterprise (ASE)• IBM Db2 LUW

• ターゲットデータベース:• Oracle• Microsoft SQL Server• MySQL• PostgreSQL• SAP Adaptive Server Enterprise (ASE)• Amazon Redshift

Note

AWS DMS は、バージョン 3.1.3 以降で文字置換をサポートしています。

タスク設定の CharacterSetSettings パラメータを使用して、文字置換を指定できます。これらの文字置換は、16 進数表記の Unicode コードポイント値を使用して指定された文字に対して発生します。両方が指定されている場合は、2 つのフェーズで置換を実装できます。

1. 個々の文字置換 –AWS DMS は、ソースで選択した文字の値を、ターゲット上の対応する文字の指定された置換値に置き換えることができます。CharacterSetSettings の CharacterReplacements 配列を使用して、指定した Unicode コードポイントを持つすべてのソース文字を選択します。また、この配列を使用して、ターゲットの対応する文字の置換コードポイントを指定します。

特定のコードポイントを持つソースのすべての文字を選択するには、CharacterReplacements配列の SourceCharacterCodePoint のインスタンスをそのコードポイントに設定します。次に、この配列で TargetCharacterCodePoint の対応するインスタンスを設定することで、すべての同等のターゲット文字の置換コードポイントを指定します。ターゲットキャラクターを置き換えるのではなく削除するには、TargetCharacterCodePoint の適切なインスタンスをゼロ (0) に設定します。CharacterReplacements 配列で SourceCharacterCodePoint 設定とTargetCharacterCodePoint 設定の追加のペアを指定することで、必要な数のターゲットキャラクターの値を置換または削除できます。SourceCharacterCodePoint の複数のインスタンスに同じ値を指定した場合、対応する最後の TargetCharacterCodePoint の設定の値がターゲットに適用されます。

たとえば、CharacterReplacements の次の値を指定するとします。

"CharacterSetSettings": {

API バージョン API Version 2016-01-01272

Page 280: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドタスク設定

"CharacterReplacements": [ { "SourceCharacterCodePoint": 62, "TargetCharacterCodePoint": 61 }, { "SourceCharacterCodePoint": 42, "TargetCharacterCodePoint": 41 } ]}

この例では、AWS DMS はターゲット上のソースコードポイント値 62 のすべての文字をコードポイント値 61 の文字で置き換えます。また、AWS DMS は、すべての文字をターゲット上のソースコードポイント 42 でコードポイント値 41 の文字で置き換えます。つまり、AWS DMS は、ターゲット上の文字'b' のすべてのインスタンスを文字 'a' で置き換えます。同様に、AWS DMS はターゲット上の文字'B' のすべてのインスタンスを文字 'A' で置き換えます。

2. 文字セットの検証と置換 – 個々の文字置換 が完了すると、AWS DMS は、すべてのターゲット文字が、指定した 1 つの文字セットに有効な Unicode コードポイントがあることを確認します。CharacterSetSettings で CharacterSetSupport を使用して、このターゲットキャラクターの検証と変更を設定します。検証文字セットを指定するには、CharacterSetSupportで CharacterSet を文字セットの文字列値に設定します。(指定できる値については、「CharacterSet」を参照してください) 次のいずれかの方法で、AWS DMS に無効なターゲット文字を変更させることができます。• 現在のコードポイントに関係なく、すべての無効なターゲット文字に対して 1 つの置換 Unicode コー

ドポイントを指定します。この置換コードポイントを設定するには、CharacterSetSupport のReplaceWithCharacterCodePoint を指定された値に設定します。

• ReplaceWithCharacterCodePoint をゼロ (0) に設定して、すべての無効なターゲット文字の削除を設定します。

たとえば、CharacterSetSupport の次の値を指定するとします。

"CharacterSetSettings": { "CharacterSetSupport": { "CharacterSet": "UTF16_PlatformEndian", "ReplaceWithCharacterCodePoint": 0 }}

この例では、AWS DMS は、"UTF16_PlatformEndian" 文字セットで無効なターゲットの文字をすべて削除します。したがって、16 進値で指定された文字 2FB6 はすべて削除されます。この値は 4 バイトの Unicode コードポイントであり、UTF16 文字セットが 2 バイトのコードポイントを持つ文字のみを受け付けるため、無効です。

Note

レプリケーションタスクは、テーブルマッピングで指定したグローバルまたはテーブルレベルの変換を開始する前に、指定されたすべての文字置換を完了します。テーブルマッピングの詳細については、「テーブルマッピングを使用して、タスクの設定を指定する (p. 286)」を参照してください。

CharacterSet で AWS DMS がサポートする値を次の表に示します。

UTF-8 ibm-860_P100-1995 ibm-280_P100-1995

UTF-16 ibm-861_P100-1995 ibm-284_P100-1995

UTF-16BE ibm-862_P100-1995 ibm-285_P100-1995

API バージョン API Version 2016-01-01273

Page 281: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドタスク設定

UTF-16LE ibm-863_P100-1995 ibm-290_P100-1995

UTF-32 ibm-864_X110-1999 ibm-297_P100-1995

UTF-32BE ibm-865_P100-1995 ibm-420_X120-1999

UTF-32LE ibm-866_P100-1995 ibm-424_P100-1995

UTF16_PlatformEndian ibm-867_P100-1998 ibm-500_P100-1995

UTF16_OppositeEndian ibm-868_P100-1995 ibm-803_P100-1999

UTF32_PlatformEndian ibm-869_P100-1995 ibm-838_P100-1995

UTF32_OppositeEndian ibm-878_P100-1996 ibm-870_P100-1995

UTF-16BE,version=1 ibm-901_P100-1999 ibm-871_P100-1995

UTF-16LE,version=1 ibm-902_P100-1999 ibm-875_P100-1995

UTF-16,version=1 ibm-922_P100-1999 ibm-918_P100-1995

UTF-16,version=2 ibm-1168_P100-2002 ibm-930_P120-1999

UTF-7 ibm-4909_P100-1999 ibm-933_P110-1995

IMAP-mailbox-name ibm-5346_P100-1998 ibm-935_P110-1999

SCSU ibm-5347_P100-1998 ibm-937_P110-1999

BOCU-1 ibm-5348_P100-1997 ibm-939_P120-1999

CESU-8 ibm-5349_P100-1998 ibm-1025_P100-1995

ISO-8859-1 ibm-5350_P100-1998 ibm-1026_P100-1995

US-ASCII ibm-9447_P100-2002 ibm-1047_P100-1995

gb18030 ibm-9448_X100-2005 ibm-1097_P100-1995

ibm-912_P100-1995 ibm-9449_P100-2002 ibm-1112_P100-1995

ibm-913_P100-2000 ibm-5354_P100-1998 ibm-1122_P100-1999

ibm-914_P100-1995 ibm-1250_P100-1995 ibm-1123_P100-1995

ibm-915_P100-1995 ibm-1251_P100-1995 ibm-1130_P100-1997

ibm-1089_P100-1995 ibm-1252_P100-2000 ibm-1132_P100-1998

ibm-9005_X110-2007 ibm-1253_P100-1995 ibm-1137_P100-1999

ibm-813_P100-1995 ibm-1254_P100-1995 ibm-4517_P100-2005

ibm-5012_P100-1999 ibm-1255_P100-1995 ibm-1140_P100-1997

ibm-916_P100-1995 ibm-5351_P100-1998 ibm-1141_P100-1997

ibm-920_P100-1995 ibm-1256_P110-1997 ibm-1142_P100-1997

iso-8859_10-1998 ibm-5352_P100-1998 ibm-1143_P100-1997

iso-8859_11-2001 ibm-1257_P100-1995 ibm-1144_P100-1997

API バージョン API Version 2016-01-01274

Page 282: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドタスク設定

ibm-921_P100-1995 ibm-5353_P100-1998 ibm-1145_P100-1997

iso-8859_14-1998 ibm-1258_P100-1997 ibm-1146_P100-1997

ibm-923_P100-1998 macos-0_2-10.2 ibm-1147_P100-1997

ibm-942_P12A-1999 macos-6_2-10.4 ibm-1148_P100-1997

ibm-943_P15A-2003 macos-7_3-10.2 ibm-1149_P100-1997

ibm-943_P130-1999 macos-29-10.2 ibm-1153_P100-1999

ibm-33722_P12A_P12A-2009_U2macos-35-10.2 ibm-1154_P100-1999

ibm-33722_P120-1999 ibm-1051_P100-1995 ibm-1155_P100-1999

ibm-954_P101-2007 ibm-1276_P100-1995 ibm-1156_P100-1999

euc-jp-2007 ibm-1006_P100-1995 ibm-1157_P100-1999

ibm-1373_P100-2002 ibm-1098_P100-1995 ibm-1158_P100-1999

windows-950-2000 ibm-1124_P100-1996 ibm-1160_P100-1999

ibm-950_P110-1999 ibm-1125_P100-1997 ibm-1164_P100-1999

ibm-1375_P100-2008 ibm-1129_P100-1997 ibm-1364_P110-2007

ibm-5471_P100-2006 ibm-1131_P100-1997 ibm-1371_P100-1999

ibm-1386_P100-2001 ibm-1133_P100-1997 ibm-1388_P103-2001

windows-936-2000 ISO_2022,locale=ja,version=0ibm-1390_P110-2003

ibm-1383_P110-1999 ISO_2022,locale=ja,version=1ibm-1399_P110-2003

ibm-5478_P100-1995 ISO_2022,locale=ja,version=2ibm-5123_P100-1999

euc-tw-2014 ISO_2022,locale=ja,version=3ibm-8482_P100-1999

ibm-964_P110-1999 ISO_2022,locale=ja,version=4ibm-16684_P110-2003

ibm-949_P110-1999 ISO_2022,locale=ko,version=0ibm-4899_P100-1998

ibm-949_P11A-1999 ISO_2022,locale=ko,version=1ibm-4971_P100-1999

ibm-970_P110_P110-2006_U2 ISO_2022,locale=zh,version=0ibm-9067_X100-2005

ibm-971_P100-1995 ISO_2022,locale=zh,version=1ibm-12712_P100-1998

ibm-1363_P11B-1998 ISO_2022,locale=zh,version=2ibm-16804_X110-1999

ibm-1363_P110-1997 HZ ibm-37_P100-1995,swaplfnl

windows-949-2000 x11-compound-text ibm-1047_P100-1995,swaplfnl

windows-874-2000 ISCII,version=0 ibm-1140_P100-1997,swaplfnl

ibm-874_P100-1995 ISCII,version=1 ibm-1141_P100-1997,swaplfnl

ibm-1162_P100-1999 ISCII,version=2 ibm-1142_P100-1997,swaplfnl

ibm-437_P100-1995 ISCII,version=3 ibm-1143_P100-1997,swaplfnl

API バージョン API Version 2016-01-01275

Page 283: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドタスク設定

ibm-720_P100-1997 ISCII,version=4 ibm-1144_P100-1997,swaplfnl

ibm-737_P100-1997 ISCII,version=5 ibm-1145_P100-1997,swaplfnl

ibm-775_P100-1996 ISCII,version=6 ibm-1146_P100-1997,swaplfnl

ibm-850_P100-1995 ISCII,version=7 ibm-1147_P100-1997,swaplfnl

ibm-851_P100-1995 ISCII,version=8 ibm-1148_P100-1997,swaplfnl

ibm-852_P100-1995 LMBCS-1 ibm-1149_P100-1997,swaplfnl

ibm-855_P100-1995 ibm-37_P100-1995 ibm-1153_P100-1999,swaplfnl

ibm-856_P100-1995 ibm-273_P100-1995 ibm-12712_P100-1998,swaplfnl

ibm-857_P100-1995 ibm-277_P100-1995 ibm-16804_X110-1999,swaplfnl

ibm-858_P100-1997 ibm-278_P100-1995 ebcdic-xml-us

エラー処理タスクの設定以下の設定を使用して、変更データキャプチャ (CDC) 中にレプリケーションタスクのエラー処理動作を設定できます。

• DataErrorPolicy – レコードレベルでデータ処理に関連するエラーが発生した場合に、AWS DMS が実行するアクションを決定します。データ処理エラーの例には、変換エラー、変換時のエラー、および不良データが含まれます。デフォルト: LOG_ERROR。• IGNORE_RECORD – タスクは続行され、該当するデータのレコードは無視されま

す。DataErrorEscalationCount プロパティのエラーカウンターは増分されます。したがって、テーブルにエラー数の制限を設定している場合、このエラーはその制限に向かってカウントされます。

• LOG_ERROR – タスクは続行され、エラーはタスクログに書き込まれます。• SUSPEND_TABLE – タスクは続行されますが、エラーレコードのあるテーブルのデータはエラー状態

になり、データはレプリケートされません。• STOP_TASK – タスクは停止され、手動での介入が必要になります。

• DataTruncationErrorPolicy – データが切り捨てられたときに AWS DMS が実行するアクションを決定します。デフォルト: LOG_ERROR。• IGNORE_RECORD – タスクは続行され、該当するデータのレコードは無視されま

す。DataErrorEscalationCount プロパティのエラーカウンターは増分されます。したがって、テーブルにエラー数の制限を設定している場合、このエラーはその制限に向かってカウントされます。

• LOG_ERROR – タスクは続行され、エラーはタスクログに書き込まれます。• SUSPEND_TABLE – タスクは続行されますが、エラーレコードのあるテーブルのデータはエラー状態

になり、データはレプリケートされません。• STOP_TASK – タスクは停止され、手動での介入が必要になります。

• DataErrorEscalationPolicy – エラーが最大数に達したときに AWS DMS が実行するアクションを決定します。エラーの最大数は DataErrorsEscalationCount パラメータで設定されます。デフォルト: SUSPEND_TABLE。• SUSPEND_TABLE – タスクは続行されますが、エラーレコードのあるテーブルのデータはエラー状態

になり、データはレプリケートされません。• STOP_TASK – タスクは停止され、手動での介入が必要になります。

API バージョン API Version 2016-01-01276

Page 284: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドタスク設定

• DataErrorEscalationCount – 特定のレコードで、データに許可されるエラーの最大数を設定します。この数に到達すると、エラーレコードがあるテーブルのデータは、DataErrorEscalationCountで設定されているポリシーに従って処理されます。デフォルトは 0 です。

• TableErrorPolicy – 特定のテーブルのデータまたはメタデータの処理中にエラーが発生した場合に、AWS DMS が実行するアクションを決定します。このエラーは一般のテーブルデータにのみ適用され、特定のレコードに関連するエラーではありません。デフォルト: SUSPEND_TABLE。• SUSPEND_TABLE – タスクは続行されますが、エラーレコードのあるテーブルのデータはエラー状態

になり、データはレプリケートされません。• STOP_TASK – タスクは停止され、手動での介入が必要になります。

• TableErrorEscalationPolicy – エラーが最大数に達したときに AWS DMS が実行するアクションを決定します。エラーの最大数は TableErrorEscalationCount パラメータで設定されます。デフォルトで、唯一のユーザー設定は STOP_TASK です。この設定では、タスクが停止し手動での介入が必要になります。

• TableErrorEscalationCount – 特定のテーブルで、一般データまたはメタデータに許可されるエラーの最大数。この数に到達すると、このテーブルのデータは、TableErrorEscalationPolicy で設定されたポリシーに従って処理されます。デフォルトは 0 です。

• RecoverableErrorCount – 環境エラーが発生したときに、タスクの再開を試みる最大回数。システムが再起動を試みる回数が指定の回数に達すると、タスクが停止し、手動での介入が必要になります。デフォルト値は -1 で、無限にタスクの再起動を試みるよう AWS DMS に指示します。タスクの再開を試行しない場合には、この値を 0 に設定します。致命的なエラーが発生した場合、AWS DMS はタスクの再起動を 6 回試みた後で試行を中止します。

• RecoverableErrorInterval – タスクの再開を試みてから次に再開を試みるまで AWS DMS が待機する時間 (秒)。デフォルトは 5 です。

• RecoverableErrorThrottling – 有効にすると、再開を試みるたびに、次の試行との間隔が長くなっていきます。デフォルト: true。

• RecoverableErrorThrottlingMax – RecoverableErrorThrottling が有効になっている場合に、タスクの再開を試みてから次に再開を試みるまで AWS DMS が待機する最大時間数 (秒)。デフォルトは 1800 です。

• ApplyErrorDeletePolicy – DELETE オペレーションとの競合がある場合に、AWS DMS が実行するアクションを決定します。デフォルト: IGNORE_RECORD。• IGNORE_RECORD – タスクは続行され、該当するデータのレコードは無視されま

す。ApplyErrorEscalationCount プロパティのエラーカウンターは増分されます。したがって、テーブルにエラー数の制限を設定している場合、このエラーはその制限に向かってカウントされます。

• LOG_ERROR – タスクは続行され、エラーはタスクログに書き込まれます。• SUSPEND_TABLE – タスクは続行されますが、エラーレコードのあるテーブルのデータはエラー状態

になり、データはレプリケートされません。• STOP_TASK – タスクは停止され、手動での介入が必要になります。

• ApplyErrorInsertPolicy – INSERT オペレーションとの競合がある場合に、AWS DMS が実行するアクションを決定します。デフォルト: LOG_ERROR。• IGNORE_RECORD – タスクは続行され、該当するデータのレコードは無視されま

す。ApplyErrorEscalationCount プロパティのエラーカウンターは増分されます。したがって、テーブルにエラー数の制限を設定している場合、このエラーはその制限に向かってカウントされます。

• LOG_ERROR – タスクは続行され、エラーはタスクログに書き込まれます。• SUSPEND_TABLE – タスクは続行されますが、エラーレコードのあるテーブルのデータはエラー状態

になり、データはレプリケートされません。• STOP_TASK – タスクは停止され、手動での介入が必要になります。• INSERT_RECORD – 挿入されたソースレコードと同じプライマリキーを含む既存のターゲットレコー

ドがある場合、ターゲットレコードは更新されます。• ApplyErrorUpdatePolicy – UPDATE オペレーションとの競合がある場合に、AWS DMS が実行する

アクションを決定します。デフォルト: LOG_ERROR。

API バージョン API Version 2016-01-01277

Page 285: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドタスク設定

• IGNORE_RECORD – タスクは続行され、該当するデータのレコードは無視されます。ApplyErrorEscalationCount プロパティのエラーカウンターは増分されます。したがって、テーブルにエラー数の制限を設定している場合、このエラーはその制限に向かってカウントされます。

• LOG_ERROR – タスクは続行され、エラーはタスクログに書き込まれます。• SUSPEND_TABLE – タスクは続行されますが、エラーレコードのあるテーブルのデータはエラー状態

になり、データはレプリケートされません。• STOP_TASK – タスクは停止され、手動での介入が必要になります。• UPDATE_RECORD – ターゲットレコードがない場合、欠落しているターゲットレコードがターゲット

テーブルに挿入されます。このオプションを選択するには、Oracle がソースデータベースの場合、すべてのソーステーブルの列に対し、完全なサプリメンタルロギングが有効である必要があります。

• ApplyErrorEscalationPolicy – エラーが最大数に達したときに AWS DMS が実行するアクションを決定します。エラーの最大数は ApplyErrorsEscalationCount パラメータで設定されます。• LOG_ERROR – タスクは続行され、エラーはタスクログに書き込まれます。• SUSPEND_TABLE – タスクは続行されますが、エラーレコードのあるテーブルのデータはエラー状態

になり、データはレプリケートされません。• STOP_TASK – タスクは停止され、手動での介入が必要になります。

• ApplyErrorEscalationCount – 変更プロセスオペレーションの実行中に特定のテーブルに許可される APPLY 競合の最大数を設定します。この数に到達すると、このテーブルのデータは、ApplyErrorEscalationPolicy パラメータで設定されたポリシーに従って処理されます。デフォルトは 0 です。

• ApplyErrorFailOnTruncationDdl – これを true に設定すると、CDC 中に追跡されたいずれかのテーブルで切り捨てが実行された場合に、タスクは失敗します。エラーメッセージは、「切り捨て DDLが検出されました」のようになります。 デフォルト: false。

この方法は、DDL テーブルの切り捨てをレプリケートしない、PostgreSQL またはその他のソースエンドポイントでは機能しません。

• FailOnNoTablesCaptured – これを true に設定すると、タスクに対して定義された変換ルールによりタスクの開始時にテーブルが見つからなかった場合、タスクは失敗します。デフォルト: false。

• FailOnTransactionConsistencyBreached – このオプションは CDC でソースとして Oracle を使用するタスクに適用されます。これを true に設定すると、トランザクションが指定されたタイムアウトよりも長い時間開かれていて、削除できる場合、タスクは失敗します。

CDC タスクが Oracle で開始されると、AWS DMS は最も古い、開いているトランザクションが終了するのを制限された時間待ってから、CDC を起動します。タイムアウトに達するまで最も古い、開いているトランザクションが終了しない場合、通常、そのトランザクションを無視して CDC が開始されます。この設定が true に設定されている場合、タスクは失敗します。

• FullLoadIgnoreConflicts – これを false に設定すると、AWS DMS では、キャッシュされたイベントを適用するときに、「影響を受ける行がゼロ」および「重複」エラーは無視されます。true に設定した場合、AWS DMS はすべてのエラーを無視されずに報告します。デフォルト: true。

タスク設定の保存別のタスクで設定を再利用する場合、タスクの設定を JSON ファイルして保存することができます。

たとえば、以下の JSON ファイルにはタスクに保存された設定が含まれています。

{ "TargetMetadata": { "TargetSchema": "", "SupportLobs": true, "FullLobMode": false, "LobChunkSize": 64,

API バージョン API Version 2016-01-01278

Page 286: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドタスク設定

"LimitedSizeLobMode": true, "LobMaxSize": 32, "BatchApplyEnabled": true }, "FullLoadSettings": { "TargetTablePrepMode": "DO_NOTHING", "CreatePkAfterFullLoad": false, "StopTaskCachedChangesApplied": false, "StopTaskCachedChangesNotApplied": false, "MaxFullLoadSubTasks": 8, "TransactionConsistencyTimeout": 600, "CommitRate": 10000 }, "Logging": { "EnableLogging": false }, "ControlTablesSettings": { "ControlSchema":"", "HistoryTimeslotInMinutes":5, "HistoryTableEnabled": false, "SuspendedTablesTableEnabled": false, "StatusTableEnabled": false }, "StreamBufferSettings": { "StreamBufferCount": 3, "StreamBufferSizeInMB": 8 }, "ChangeProcessingTuning": { "BatchApplyPreserveTransaction": true, "BatchApplyTimeoutMin": 1, "BatchApplyTimeoutMax": 30, "BatchApplyMemoryLimit": 500, "BatchSplitSize": 0, "MinTransactionSize": 1000, "CommitTimeout": 1, "MemoryLimitTotal": 1024, "MemoryKeepTime": 60, "StatementCacheSize": 50 }, "ChangeProcessingDdlHandlingPolicy": { "HandleSourceTableDropped": true, "HandleSourceTableTruncated": true, "HandleSourceTableAltered": true }, "ErrorBehavior": { "DataErrorPolicy": "LOG_ERROR", "DataTruncationErrorPolicy":"LOG_ERROR", "DataErrorEscalationPolicy":"SUSPEND_TABLE", "DataErrorEscalationCount": 50, "TableErrorPolicy":"SUSPEND_TABLE", "TableErrorEscalationPolicy":"STOP_TASK", "TableErrorEscalationCount": 50, "RecoverableErrorCount": 0, "RecoverableErrorInterval": 5, "RecoverableErrorThrottling": true, "RecoverableErrorThrottlingMax": 1800, "ApplyErrorDeletePolicy":"IGNORE_RECORD", "ApplyErrorInsertPolicy":"LOG_ERROR", "ApplyErrorUpdatePolicy":"LOG_ERROR", "ApplyErrorEscalationPolicy":"LOG_ERROR", "ApplyErrorEscalationCount": 0, "FullLoadIgnoreConflicts": true }}

API バージョン API Version 2016-01-01279

Page 287: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドLOB サポートの設定

AWS DMS タスクのソースデータベースの LOB サポートの設定ラージバイナリオブジェクト (LOB) をシステム間で移行することは難しい場合があります。AWS DMS には、LOB の列のチューニングに役立つ多くのオプションが用意されています。どのデータ型がいつ AWSDMS によって LOB と見なされるかについては、AWS DMS のドキュメントを参照してください。

データベース間でデータを移行するとき、特に異機種間で移行するときは、LOB の保存方法の見直しが必要になる場合があります。その場合、LOB データを移行する必要はありません。

LOB を含める場合は、他の LOB 設定を決定できます。

• LOB モードにより、LOB の処理方法が決定されます。• Full LOB モード – 完全 LOB モードでは、AWS DMS によってソースからターゲットに、サイズにか

かわらずすべての LOB が移行されます。この設定では、AWS DMS の最大許容 LOB サイズに関する情報は不要です。したがって、LOB は一度に 1 つずつ移行されます。Full LOB mode は非常に低速になることがあります。

• 制限付き LOB モード – 制限付き LOB モードでは、AWS DMS の最大許容 LOB サイズを設定します。これにより、AWS DMS によってメモリが事前に割り当てられ、LOB データを一括でロードできるようになります。最大 LOB サイズを超える LOB は切り捨てられ、警告がログファイルに発行されます。limited LOB mode では、Full LOB mode よりも大幅にパフォーマンスが向上します。可能な限り Limited LOB mode を使用することをお勧めします。

Note

Oracle では、LOB は可能な限り VARCHAR データ型として扱われます。この方法では、AWSDMS によって LOB がデータベースから一括でフェッチされるため、他の方法よりも大幅に高速になります。Oracle での VARCHAR の最大サイズは 64 K です。そのため、Oracle がソースデータベースである場合は、最大許容 LOB サイズを 64 K 未満に設定するのが最適です。

• 制限付き LOB モードで実行されるようにタスクを設定している場合、[Max LOB size (K) (最大 LOB サイズ (K))] オプションによって AWS DMS の最大許容 LOB サイズが決まります。この値よりも大きいLOB はこの値まで切り捨てられます。

• 完全 LOB モードを使用するようにタスクを設定している場合、AWS DMS によって LOB は 1 つずつ取得されます。[LOB chunk size (K) (LOB チャンクサイズ (K))] オプションにより、各ピースのサイズが決定されます。このオプションを設定するときは、ネットワーク設定の最大許容パケットサイズに特に注意してください。LOB チャンクサイズが最大許容パケットサイズを超えた場合は、切断エラーが表示されることがあります。

タスク設定でこれらのオプションを指定する方法の詳細については、「ターゲットメタデータのタスク設定 (p. 263)」を参照してください。

複数のタスクの作成移行シナリオによっては、複数の移行タスクを作成する必要があります。タスクは個別に動作し、同時に実行できます。各タスクには、独自の初期ロード、CDC、およびログ読み取りプロセスがあります。データ操作言語 (DML) を通じて関連付けられたテーブルは、同じタスクの一部である必要があります。

移行のために複数のタスクを作成する理由として、以下の理由が挙げられます。

• タスクのターゲットテーブルが異なるデータベースに存在している (分散していたり、システムを複数のシステムに分割している場合など)。

• フィルタリングを使用して、大きいテーブルの移行を複数のタスクに分割したい。

API バージョン API Version 2016-01-01280

Page 288: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイド継続的なレプリケーション用のタスク

Note

タスクごとに独自の変更キャプチャおよびログ読み取りプロセスがあるため、タスク間で変更は調整されません。したがって、複数のタスクを使用して移行を実行する場合は、ソーストランザクションが 1 つのタスク内に完全に含まれていることを確認してください。

AWS DMS を使用した継続的なレプリケーション用のタスクの作成

ソースデータストアへの継続的な変更をキャプチャする AWS DMS タスクを作成できます。データの移行中にこのキャプチャを実行できます。サポートされているターゲットデータストアへの初回(全ロード)の移行が完了した後で、継続的な変更をキャプチャするタスクを作成することもできます。このプロセスは継続的なレプリケーションまたは変更データキャプチャ (CDC) と呼ばれます。AWS DMS では、このプロセスを使用してソースデータストアの継続的な変更をレプリケートします。このプロセスでは、データベースエンジンのネイティブ API を使用してデータベースログへの変更を収集します。

Note

全ロードタスクのみを使用してビューを移行できます。タスクが CDC のみのタスクであるか、完了後に CDC を開始する全ロードタスクである場合、移行にはソースのテーブルのみが含まれます。全ロードのみのタスクを使用して、ビューまたはテーブルとビューの組み合わせを移行できます。詳細については、「 JSON を使用するテーブルマッピングによりテーブル選択および変換を指定する (p. 291)」を参照してください。

ソースエンジンごとに、この変更ストリームを指定されたユーザーアカウントに開示するための固有の設定要件があります。ほとんどのエンジンでは、キャプチャプロセスでデータ損失を発生させずに意味のある方法で変更データを使用するために、追加の設定が必要です。たとえば、Oracle ではサプリメンタルロギングの追加が必要であり、MySQL では行レベルのバイナリログ (bin ログ) が必要です。

ソースデータベースから継続的な変更を読み取るために、AWS DMS はエンジン固有の API アクションを使用してソースエンジンのトランザクションログから変更を読み取ります。これを AWS DMS で実行する例を以下に示します。

• Oracle AWS DMS は、Oracle LogMiner API または Binary Reader API (bfile API) を使用して、継続的な変更を読み取ります。AWS DMS は、システム変更番号 (SCN) に基づいてオンラインまたはアーカイブREDO ログから継続的な変更を読み取ります。

• Microsoft SQL Server の場合、AWS DMS は MS-Replication または MS-CDC を使用して SQL Serverのトランザクションログに情報を書き込みます。次に、SQL Server の fn_dblog() 関数または fn_dump_dblog() 関数を使用して、ログシーケンス番号 (LSN) に基づいてトランザクションログの変更を読み取ります。

• MySQL の場合、AWS DMS は、行ベースのバイナリログ (binlogs) から変更を読み取り、この変更をターゲットに移行します。

• PostgreSQL の場合、AWS DMS はレプリケーションスロットを設定し、test_decoding プラグインを使用して、ソースから変更を読み取り、この変更をターゲットに移行します。

• ソースとしての Amazon RDS の場合は、CDC をセットアップするためのバックアップが有効になっていることを確認してください。また、変更ログを十分な時間だけ (通常は 24 時間) 保持するようにソースデータベースが設定されていることを確認してください。

継続的なレプリケーションタスクには 2 つのタイプがあります。

• 全ロード + CDC – タスクでは、まず既存のデータを移行し、次にソースデータベースへの変更に応じてターゲットデータベースを更新します。

API バージョン API Version 2016-01-01281

Page 289: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドCDC 開始ポイントから開始するレプリケーション

• CDC のみ – タスクでは、ターゲットデータベースにデータが取り込まれた後の継続的な変更を移行します。

CDC 開始ポイントからのレプリケーションの実行AWS DMS の継続的なレプリケーションタスク (変更データのキャプチャのみ) は、複数のポイントから開始できます。これには次のものが含まれます。

• カスタム CDC 開始時刻から – AWS マネジメントコンソール または AWS CLI を使用して、レプリケーションを開始するタイムスタンプを AWS DMS に提供できます。AWS DMS は、このカスタム CDC開始時刻から継続的なレプリケーションタスクを開始します。AWS DMS は、提供されたタイムスタンプ (UTC) をネイティブ開始ポイント (SQL Server の LSN または Oracle の SCN など) に変換します。AWS DMS は、エンジン固有の方法を使用し、ソースエンジンの変更ストリームに基づいて移行タスクの正確な開始位置を決定します。

Note

PostgreSQL をソースとする場合、カスタム CDC の開始時刻はサポートされません。これは、PostgreSQL データベースエンジンには、Oracle や SQL Server とは異なり、タイムスタンプを LSN や SCN にマップする方法がないためです。

• CDC ネイティブの開始ポイントから – ソースエンジンのトランザクションログのネイティブポイントから開始することもできます。場合によっては、タイムスタンプはトランザクションログで複数のネイティブポイントを示すことができるため、このアプローチのほうが適している場合があります。AWSDMS では、この機能を以下のソースエンドポイントでサポートしています。• SQL Server• Oracle• MySQL

CDC ネイティブの開始ポイントの決定CDC ネイティブの開始ポイントは、CDC を開始できる時間を定義するデータベースエンジンのログ内のポイントです。たとえば、特定の時点からあるバルクデータダンプがターゲットに適用されているとします。この場合、ダンプが取得されるより前のポイントから継続的なレプリケーションのみのタスクのネイティブ開始ポイント始点を参照できます。

以下の例では、サポートされているソースエンジンから CDC ネイティブの開始ポイントを見つける方法を示します。

SQL Server

SQL Server では、ログシーケンス番号 (LSN) は以下の 3 つのパートで構成されています。• 仮想ログファイル (VLF) シーケンス番号• ログブロックの開始オフセット• スロット番号

LSN の例: 00000014:00000061:0001

トランザクションログのバックアップ設定に基づいて SQL Server の移行タスクの開始ポイントを取得するには、SQL Server の fn_dblog() 関数または fn_dump_dblog() 関数を使用します。

SQL Server で CDC ネイティブの開始ポイントを使用するには、継続的なレプリケーションに参加しているいずれかのテーブルでパブリケーションを作成します。パブリケーションの作成の詳細については、「 継続的なレプリケーション用の SQL Server パブリケーションの作成 (p. 109)」を参照して

API バージョン API Version 2016-01-01282

Page 290: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドCDC 開始ポイントから開始するレプリケーション

ください。CDC ネイティブ開始ポイントを使用せずに CDC を使用すると、AWS DMS が自動的にパブリケーションを作成します。

Oracle

システム変更番号 (SCN) は、Oracle データベースで使用される論理的な内部タイムスタンプです。SCN は、データベース内で発生するイベントを順序付けします。これは、トランザクションのACID プロパティを満たすために必要です。Oracle データベースでは、ディスクに書き込まれたすべての変更の位置を SCN でマークするため、書き込み済みの変更には復旧アクションが適用されません。また、Oracle では、データセットで REDO が存在しないポイントをマークして復旧を停止できるようにするためにも SCN を使用します。Oracle SCNs の詳細については、Oracle のドキュメントを参照してください。

Oracle データベース内の現在の SCN を取得するには、次のコマンドを実行します。

SELECT current_scn FROM V$DATABASE

MySQL

MySQL バージョン 5.6.3 がリリースされるまで、MySQL のログシーケンス番号 (LSN) は 4 バイトの符号なし整数でした。MySQL バージョン 5.6.3 で、REDO ログファイルのサイズ上限が 4 GB から512 GB に引き上げられ、LSN は 8 バイトの符号なし整数になりました。この引き上げは、サイズ情報の保存に追加のバイトが必要になったことが理由です。MySQL 5.6.3 以降で構築された LSN 値を使用するアプリケーションでは、LSN 値を保存し比較するために 32 ビット変数ではなく 64 ビット変数を使用する必要があります。MySQL の LSN の詳細については、MySQL のドキュメントを参照してください。

MySQL データベース内の現在の LSN を取得するには、以下のコマンドを実行します。

mysql> show master status;

このクエリから、binlog ファイルの名前、位置、およびその他いくつかの値が返されます。CDCネイティブの開始ポイントは、binlogs ファイルの名前と位置の組み合わせです (例: mysql-bin-changelog.000024:373)。この例で、mysql-bin-changelog.000024 は binlogs ファイルの名前、373 は AWS DMS で変更のキャプチャを開始する位置です。

チェックポイントを CDC の開始ポイントとして使用する継続的なレプリケーションタスクでは変更を移行し、AWS DMS では AWS DMS 固有のチェックポイント情報を時々キャッシュします。AWS DMS が作成するチェックポイントに含まれている情報に従って、レプリケーションエンジンは変更ストリームの復旧ポイントを確認します。チェックポイントを使用して変更のタイムラインをさかのぼり、失敗した移行タスクを復旧できます。チェックポイントを使用して、別のターゲットに向けて別の継続的なレプリケーションタスクを任意の時点から開始することもできます。

チェックポイント情報は、以下の 2 つの方法で取得できます。

• API コマンド DescribeReplicationTasks を実行して結果を確認します。情報をタスク別にフィルタ処理し、チェックポイントを検索できます。タスクが停止状態または失敗状態のときに最新のチェックポイントを取得できます。

• ターゲットインスタンスで awsdms_txn_state というメタデータテーブルを表示します。テーブルにクエリを実行してチェックポイント情報を取得できます。メタデータテーブルを作成するには、タスクの作成時に TaskRecoveryTableEnabled パラメータを Yes に設定します。この設定により、AWSDMS はチェックポイント情報を継続的にターゲットメタデータテーブルに書き込みます。タスクを削除すると、この情報は失われます。

次に、メタデータテーブル checkpoint:V1#34#00000132/0F000E48#0#0#*#0#121 でのチェックポイントの例を示します

API バージョン API Version 2016-01-01283

Page 291: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドタスクの変更

コミット時間ポイントまたはサーバー時間ポイントでのタスクの停止CDC ネイティブの開始ポイントの導入により、AWS DMS では以下のポイントでタスクを停止することもできます。

• ソースのコミット時間• レプリケーションインスタンスのサーバー時間

必要に応じてタスクを変更し、停止する時刻を UTC で設定できます。タスクは、設定したコミット時間またはサーバー時間に基づいて自動的に停止します。さらに、タスクの作成時に移行タスクを停止する時間があらかじめわかっている場合は、タスクの作成時に停止時間を設定できます。

タスクの変更タスクの設定、テーブルのマッピング、その他の設定を変更する必要がある場合、タスクを変更できます。DMS コンソールでタスクを選択し、[Modify] を選択して、タスクを変更できます。AWS CLI や AWSDMS API コマンド ModifyReplicationTask を使用することもできます。

タスクの変更には、いくつかの制限があります。具体的には次のとおりです。

• タスクのソースまたはターゲットエンドポイントは変更できません。• タスクの移行タイプを変更することはできません。• 実行されたタスクを変更する場合、タスクのステータスは [Stopped] または [Failed] である必要があり

ます。

タスク実行中のテーブルの再ロードタスクを実行中に、ソースのデータを使用して移行先データベースのテーブルを再ロードできます。タスク実行中にエラーが発生した際、またはパーティション操作によるデータの変更が生じた際に、テーブルの再ロードが必要になる場合があります。タスクから最大で 10 までのテーブルを再ロードできます。

テーブルを再ロードするには、以下の条件を適用する必要があります。

• タスクが実行中であることが必要です。• タスクの移行メソッドは、全ロードまたは CDC による全ロードであることが必要です。• テーブルは複製できません。• AWS DMS では、以前に読み込んだテーブル定義が保持されます。再ロードオペレーション中に再作

成されることはありません。テーブルが再ロードされる前に、ALTER TABLE ADD COLUMN、DROPCOLUMN などの DDL ステートメントを実行すると、再ロードオペレーションが失敗する可能性があります。

AWS マネジメントコンソールAWS DMS コンソールを使用してテーブルを再ロードするには

1. AWS マネジメントコンソール にサインインして AWS DMS を選択します。AWS Identity and AccessManagement (IAM) ユーザーとしてサインインしている場合、AWS DMS にアクセスするには適切なアクセス許可が必要です。必要なアクセス権限の詳細については、「AWS DMS を使用するのに必要な IAM アクセス許可 (p. 33)」を参照してください。

2. ナビゲーションペインから [Tasks] を選択します。

API バージョン API Version 2016-01-01284

Page 292: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドAWS マネジメントコンソール

3. 再ロードするテーブルを含む実行中のタスクを選択します。4. [テーブル統計] タブを選択します。

5. 再ロードするテーブルを選択します。タスクがすでに実行されていない場合は、テーブルを再ロードできません。

API バージョン API Version 2016-01-01285

Page 293: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドテーブルマッピング

6. [Reload table data (テーブルデータの再ロード)] を選択します。

AWS DMS でテーブルの再ロードを準備中である場合は、コンソールでテーブルの状態が [Table is beingreloaded (テーブルを再ロード中)] に変更されます。

テーブルマッピングを使用して、タスクの設定を指定する

テーブルマッピングは、データソース、ソーススキーマ、データ、そしてタスク実行中に必要なすべての変換を指定するための複数のルールタイプを使用します。テーブルマッピングを使用して、データベースで移行する個々のテーブルや、移行に使用するスキーマを指定できます。また、フィルタを使用して、レプリケートする特定のテーブルの列からデータを指定できます。変換を使用して、ターゲットデータベースに書き込むデータを変更できます。

コンソールからのテーブルマッピングによりテーブル選択および変換を指定するAWS マネジメントコンソール コンソールを使用して、テーブルの選択、変換の指定などのテーブルマッピングを実施できます。コンソールで、[Where (場所)] セクションを使用してスキーマ、テーブル、およびアクションを含めるか除外するかを指定できます。[フィルタ] セクションを使用して、レプリケーションタスクに適用する、テーブルの列の名前と条件を指定します。これら 2 つのアクションを合わせて、選択ルールを作成します。

選択ルールを 1 つ以上指定した後に、変換をテーブルマッピングに含めることができます。変換を使用して、スキーマまたはテーブルの名前を変更したり、スキーマまたはテーブルにプレフィックスやサフィックスを追加したり、テーブルの列を削除したりできます。

以下の例は、「EntertainmentAgencySample」というスキーマの「Customers」テーブルの選択ルールを設定する方法を示しています。選択ルールと変換は、[Guided (ガイド)] タブで作成します。このタブは、スキーマとテーブル情報があるソースエンドポイントを選択した場合のみ表示されます。

テーブルの選択を指定するには、AWS コンソールを使用して、条件と変換でフィルタリングします。

1. AWS マネジメントコンソール にサインインして AWS DMS を選択します。AWS Identity and AccessManagement (IAM) ユーザーとしてサインインしている場合、AWS DMS にアクセスするには適切なアクセス許可が必要です。必要なアクセス権限の詳細については、「AWS DMS を使用するのに必要な IAM アクセス許可 (p. 33)」を参照してください。

2. [ダッシュボード] ページで、[タスク] を選択します。3. [タスクの作成] を選択します。4. [タスク名]、[レプリケーションインスタンス]、[ソースエンドポイント]、[ターゲットエンドポイン

ト]、[移行タイプ] などのタスク情報を入力します。[テーブルマッピング] セクションから [Guided (ガイド)] を選択します。

API バージョン API Version 2016-01-01286

Page 294: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドコンソールからのテーブルマッピングによりテーブル選択および変換を指定する

5. [テーブルマッピング] セクションで、スキーマ名とテーブル名を選択します。テーブル名を指定するとき、「%」をワイルドカード値として使用できます。フィルタを使用して、定義されたデータを含める、除外するかなど、実行するアクションを指定します。

API バージョン API Version 2016-01-01287

Page 295: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドコンソールからのテーブルマッピングによりテーブル選択および変換を指定する

6. [Add column filter (列フィルタの追加)] および [条件の追加] リンクを使用して、フィルタ情報を指定します。

a. まず、[Add column filter (列フィルタの追加)] を選択して列と条件を指定します。b. [追加] を選択してその他の条件を追加します。

以下の例は、01 から 85 の間に AgencyIDs を含む Customers テーブルのフィルタを示しています。

API バージョン API Version 2016-01-01288

Page 296: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドコンソールからのテーブルマッピングによりテーブル選択および変換を指定する

7. 希望の選択を作成したら、[Add selection rule (選択ルールの追加)] を選択します。8. 選択ルールを 1 つ以上作成したら、タスクに変換を追加できます。[add transformation rule (変換ルー

ルの追加)] を選択します。

9. 変換を希望するターゲットを選択し、必要な追加情報を入力します。以下の例は、Customer テーブルから AgencyStatus 列を削除する変換を示しています。

API バージョン API Version 2016-01-01289

Page 297: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドコンソールからのテーブルマッピングによりテーブル選択および変換を指定する

10. [Add transformation rule] を選択します。11. (オプション) [add selection rule (選択ルールの追加)] または [add transformation rule (変換ルールの追

加)] を選択して、他の選択ルールや変換ルールを追加します。完了したら、[Create task] を選択します。

API バージョン API Version 2016-01-01290

Page 298: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドJSON を使用するテーブルマッピングによりテーブル選択および変換を指定する

JSON を使用するテーブルマッピングによりテーブル選択および変換を指定するJSON 形式でテーブルマッピングを作成できます。AWS DMS マネジメントコンソールを使用して移行タスクを作成する場合、JSON を直接テーブルマッピングボックスに入力できます。CLI または API を使用して移行を実行する場合、JSON ファイルを作成して移行中に適用するテーブルマッピングを指定できます。

使用するテーブル、ビュー、スキーマを指定できます。テーブル、ビュー、スキーマの変換を実行し、AWS DMS が個々のテーブルとビューをロードする方法の設定を指定することもできます。これらのオプションのテーブルマッピングルールは、次のルールタイプを使用して作成します。

• selection ルール – ロードするソーステーブル、ビュー、スキーマのタイプと名前を識別します。詳細については、「選択ルールと選択アクション (p. 292)」を参照してください。

• transformation ルール – ターゲットにロードする前に、ソースの特定のソーステーブルとスキーマに対する特定の変更または追加を指定します。詳細については、「 変換ルールおよび変換アクション (p. 295)」を参照してください。

• table-settings ルール – DMS タスクが個々のテーブルのデータをロードする方法を指定します。詳細については、テーブル設定のルールとオペレーション (p. 304) を参照してください。

Note

また、Amazon S3 では、post-processing ルールタイプおよび add-tag ルールアクションを使用して、選択したテーブルとスキーマに S3 オブジェクトにマッピングされたタグ付けを行うことができます。詳細については、「Amazon S3 オブジェクトのタグ付け (p. 190)」を参照してください。

API バージョン API Version 2016-01-01291

Page 299: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドJSON を使用するテーブルマッピングによりテーブル選択および変換を指定する

選択ルールと選択アクションテーブルマッピングを使用すると、選択ルールと選択アクションを使用することで、使用するテーブル、ビューやスキーマを指定できます。選択ルールタイプを使用するテーブルマッピングルールの場合、次の値を適用できます。

パラメータ 使用できる値 説明

rule-type selection 選択ルール。テーブルマッピングを指定するときは、少なくとも 1 つの選択ルールを定義します。

rule-id 数値。 ルールを識別する一意の数値。

rule-name 英数字値。 ルールを特定する一意な名前。

rule-action include、exclude、explicit ルールによって選択されたオブジェクトを含めたり、除外する値。explicit を指定した場合、明示的に指定したテーブルおよびスキーマに該当する 1 つだけのオブジェクトを選択して含めることができます。

object-locator 以下のパラメータを使用するオブジェクト。

• schema-name – スキーマの名前。• table-name – テーブルの名前。• (オプション)table-type–table| view | all は、table-name がテーブル、ビュー、またはテーブルとビューの両方を参照するかどうかを示します。デフォルト: table。

AWS DMS は、全ロードタスクでのみビューをロードします。全ロードおよび変更データキャプチャ (CDC) タスクのみがある場合は、ビューをロードするように少なくとも 1 つの全ロード専用タスクを設定します。

ルールが適用されるスキーマ、テーブルまたはビューごとの名前。ルールにテーブルのみを含めるか、ビューのみを含めるか、テーブルとビューの両方を含めるかを指定することもできます。rule-action が include あるいは excludeの場合、schema-name および table-name パラメータの一部あるいはすべての値に「%」パーセント記号をワイルドカードとして使用できます。したがって、これらの項目には以下を対応させることができます。

• 単一のスキーマ内の単一のテーブルまたはビュー

• 一部またはすべてのスキーマの単一のテーブルまたはビュー

• 単一のスキーマの一部またはすべてのテーブルとビュー

• 一部またはすべてのスキーマの一部またはすべてのテーブルとビュー

rule-action が explicit の場合、1つのテーブル、ビューとそのスキーマ(ワイルドカードなし)の正確な名前のみを指定できます。ビューでサポートされているソースは次のとおりです。

• Oracle• Microsoft SQL Server• MySQL

API バージョン API Version 2016-01-01292

Page 300: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドJSON を使用するテーブルマッピングによりテーブル選択および変換を指定する

パラメータ 使用できる値 説明• PostgreSQL• IBM Db2 LUW• SAP Adaptive Server Enterprise

(ASE)

Note

AWS DMS はソースビューをターゲットビューにロードしません。ソースビューは、ソースのビューと同じ名前のターゲット上の同等のテーブルにロードされます。

load-order 正の整数。最大の値は 2,147,483,647 です。

テーブルとビューを読み込むための優先度。値が大きいテーブルとビューが最初に読み込まれます。

filters オブジェクトの配列。 ソースをフィルタリングする 1 つ以上のオブジェクト。ソースの単一の列でフィルタリングするオブジェクトパラメータを指定します。複数の列をフィルタリングする複数のオブジェクトを指定します。詳細については、「ソースフィルタの使用 (p. 321)」を参照してください。

Example スキーマ内のすべてのテーブルの移行

以下の例では、ソース内の Test という名前のスキーマからすべてのテーブルをターゲットエンドポイントに移行します。

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "Test", "table-name": "%" }, "rule-action": "include" } ]}

Example スキーマの一部のテーブルの移行

以下の例では、ソース内の Test という名前のスキーマから、先頭が DMS のテーブルを除くすべてのテーブルをターゲットエンドポイントに移行します。

{ "rules": [ {

API バージョン API Version 2016-01-01293

Page 301: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドJSON を使用するテーブルマッピングによりテーブル選択および変換を指定する

"rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "Test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "selection", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "Test", "table-name": "DMS%" }, "rule-action": "exclude" } ]}

Example 単一のスキーマで指定した単一のテーブルの移行

以下の例では、ソース内の NewCust スキーマから Customer テーブルをターゲットエンドポイントに移行します。

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "NewCust", "table-name": "Customer" }, "rule-action": "explicit" } ]}

Note

複数の選択ルールを指定することで、複数のテーブルとスキーマを明示的に選択できます。

Example 設定順でテーブルを移行

以下の例は、2 つのテーブルを移行します。テーブル loadfirst (優先度 2) はテーブル loadsecond より前に移行されます。

{"rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "Test", "table-name": "loadfirst" }, "rule-action": "include", "load-order": "2"

API バージョン API Version 2016-01-01294

Page 302: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドJSON を使用するテーブルマッピングによりテーブル選択および変換を指定する

}, { "rule-type": "selection", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "Test", "table-name": "loadsecond" }, "rule-action": "include", "load-order": "1" } ] }

Example スキーマの一部のビューの移行

以下の例では、ソースの Test という名前のスキーマからターゲット内の同等のテーブルに、一部のビューを移行します。

{ "rules": [ { "rule-type": "selection", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "Test", "table-name": "view_DMS%", "table-type": "view" }, "rule-action": "include" } ]}

Example スキーマ内のすべてのテーブルとビューの移行

以下の例では、ソースの report という名前のスキーマからターゲット内の同等のテーブルに、すべてのテーブルとビューを移行します。

{ "rules": [ { "rule-type": "selection", "rule-id": "3", "rule-name": "3", "object-locator": { "schema-name": "report", "table-name": "%", "table-type": "all" }, "rule-action": "include" } ]}

変換ルールおよび変換アクション選択したスキーマ、テーブルまたはビューに適用する変換を指定するには、変換アクションを使用します。変換ルールはオプションです。

API バージョン API Version 2016-01-01295

Page 303: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドJSON を使用するテーブルマッピングによりテーブル選択および変換を指定する

変換ルールタイプを使用するテーブルマッピングルールの場合、次の値を適用できます。

パラメータ 使用できる値 説明

rule-type transformation 選択ルールにより指定された各オブジェクトにルールを適用する値。特に明記されていない限り、transformation を使用します。

rule-id 数値。 ルールを識別する一意の数値。

rule-name 英数字値。 ルールを特定する一意な名前。

object-locator 以下のパラメータを使用するオブジェクト。

• schema-name – スキーマの名前。• table-name– テーブルまたはビュー

の名前。• table-tablespace-name – 既存の

テーブルのテーブルスペース名。• index-tablespace-name – 既存の

インデックスのテーブルスペース名。

ルールが適用される各スキーマ、テーブルまたはビュー、テーブルのテーブルスペース、インデックスのテーブルスペースの名前。各 object-locator パラメータの値のすべてあるいは一部で、「%」パーセント記号をワイルドカードとして使用できます。したがって、これらの項目には以下を対応させることができます。

• 単一のスキーマ内の単一のテーブルまたはビュー

• 一部またはすべてのスキーマの単一のテーブルまたはビュー

• 単一のスキーマの一部またはすべてのテーブルとビュー

• 一部またはすべてのスキーマの一部またはすべてのテーブルとビュー

また、table-tablespace-name あるいは index-tablespace-name パラメータは、Oracle ソースのエンドポイントと一致させるためのみに使用できます。table-tablespace-name または index-tablespace-name を単一のルールで指定できますが、両方を指定することはできません。したがって、以下の項目のいずれかを一致させることができます。

• 1 つ、一部、あるいはすべてのテーブルのテーブルスペース

• 1 つ、一部、あるいはすべてのインデックスのテーブルスペース

rule-action rename

remove-column

convert-lowercase、convert-uppercase

add-prefix、remove-prefix、replace-prefix

オブジェクトに適用する変換。すべて変換ルールアクションでは、大文字と小文字が区別されます。

API バージョン API Version 2016-01-01296

Page 304: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドJSON を使用するテーブルマッピングによりテーブル選択および変換を指定する

パラメータ 使用できる値 説明add-suffix、remove-suffix、replace-suffix

define-primary-key

rule-target schema、table、column、table-tablespace、index-tablespace

変換するオブジェクトのタイプ。

table-tablespace あるいは index-tablespace 値は、Oracle のターゲットエンドポイントでのみ使用できます。また、object-locator の一部として指定した該当するパラメータと一致する値を指定できます (table-tablespace-name あるいは index-tablespace-name)。

value ターゲットタイプの名前付けルールに従った英数字値。

入力が必要なアクションの新しい値(rename など)。

old-value ターゲットタイプの名前付けルールに従った英数字値。

置き換えが必要なアクションの古い値(replace-prefix など)。

primary-key-def

以下のパラメータを使用するオブジェクト。

• name – テーブルまたはビューの新しいプライマリキーまたは一意のインデックスの名前。

• (オプション) origin – 定義する一意のキーのタイプ。primary-key (デフォルト) または unique-index。

• columns – プライマリキーあるいは一意のインデックスに表示される順番の列の名前をリストした文字列の配列。

このパラメータでは、変換されたテーブルまたはビューの一意のキーの名前、タイプ、内容を定義できます。これは、ルールアクションが define-primary-key に設定され、ルールターゲットが table に設定されている場合に実行されます。デフォルトでは、一意のキーはプライマリキーとして定義されます。

Example スキーマの名前変更

以下の例では、スキーマの名前をソースでの Test からターゲットでの Test1 に変更します。

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "Test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "rename",

API バージョン API Version 2016-01-01297

Page 305: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドJSON を使用するテーブルマッピングによりテーブル選択および変換を指定する

"rule-target": "schema", "object-locator": { "schema-name": "Test" }, "value": "Test1" } ]}

Example テーブル名の変更

以下の例では、テーブルの名前をソースでの Actor からターゲットでの Actor1 に変更します。

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "Test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "rename", "rule-target": "table", "object-locator": { "schema-name": "Test", "table-name": "Actor" }, "value": "Actor1" } ]}

Example 列名の変更

以下の例では、テーブル Actor の列の名前をソースでの first_name からターゲットでの fname に変更します。

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "4", "rule-name": "4", "rule-action": "rename", "rule-target": "column",

API バージョン API Version 2016-01-01298

Page 306: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドJSON を使用するテーブルマッピングによりテーブル選択および変換を指定する

"object-locator": { "schema-name": "test", "table-name": "Actor", "column-name" : "first_name" }, "value": "fname" } ]}

Example Oracle テーブルのテーブルスペースの名前変更

次の例では、Oracle ソースの Actor という名前のテーブルの SetSpace という名前のテーブルのテーブルスペースを、Oracle のターゲットエンドポイントで SceneTblSpace に名前変更します。

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "Play", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "rename", "rule-target": "table-tablespace", "object-locator": { "schema-name": "Play", "table-name": "Actor", "table-tablespace-name: "SetSpace" }, "value": "SceneTblSpace" } ]}

Example Oracle インデックスのテーブルスペースの名前変更

以下の例では、Oracle ソースの Actor という名前のテーブルの SetISpace という名前のインデックスのテーブルスペースを、Oracle のターゲットエンドポイントで SceneIdxSpace に名前変更します。

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "Play", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2",

API バージョン API Version 2016-01-01299

Page 307: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドJSON を使用するテーブルマッピングによりテーブル選択および変換を指定する

"rule-name": "2", "rule-action": "rename", "rule-target": "table-tablespace", "object-locator": { "schema-name": "Play", "table-name": "Actor", "table-tablespace-name: "SetISpace" }, "value": "SceneIdxSpace" } ]}

Example 列の削除

以下の例では、ソース内の Actor という名前のテーブルを変換し、先頭文字が col のすべての列をターゲットから削除します。

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "remove-column", "rule-target": "column", "object-locator": { "schema-name": "test", "table-name": "Actor", "column-name": "col%" } }] }

Example 小文字への変換

以下の例では、テーブルの名前をソースでの ACTOR からターゲットでの actor に変換します。

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "convert-lowercase", "rule-target": "table", "object-locator": {

API バージョン API Version 2016-01-01300

Page 308: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドJSON を使用するテーブルマッピングによりテーブル選択および変換を指定する

"schema-name": "test", "table-name": "ACTOR" } }]}

Example 大文字への変換

次の例では、すべてのテーブルおよびすべてのスキーマ内のすべての列を、ソースでの小文字からターゲットでの大文字に変換します。

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "convert-uppercase", "rule-target": "column", "object-locator": { "schema-name": "%", "table-name": "%", "column-name": "%" } } ]}

Example プレフィックスの追加

以下の例では、ソース内のすべてのテーブルを変換し、ターゲットではそれらのテーブルにプレフィックス DMS_ を追加します。

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "add-prefix", "rule-target": "table", "object-locator": { "schema-name": "test", "table-name": "%" },

API バージョン API Version 2016-01-01301

Page 309: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドJSON を使用するテーブルマッピングによりテーブル選択および変換を指定する

"value": "DMS_" }] }

Example プレフィックスの置き換え

以下の例では、ソースでプレフィックス Pre_ を含むすべての列を変換し、ターゲットではプレフィックスを NewPre_ に置き換えます。

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "replace-prefix", "rule-target": "column", "object-locator": { "schema-name": "%", "table-name": "%", "column-name": "%" }, "value": "NewPre_", "old-value": "Pre_" } ]}

Example サフィックスの削除

以下の例では、ソース内のすべてのテーブルを変換し、ターゲットではそれらのテーブルからサフィックス _DMS を削除します。

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "remove-suffix", "rule-target": "table", "object-locator": { "schema-name": "test", "table-name": "%"

API バージョン API Version 2016-01-01302

Page 310: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドJSON を使用するテーブルマッピングによりテーブル選択および変換を指定する

}, "value": "_DMS" }]}

Example プライマリキーを定義します。

次の例では、ターゲットエンドポイントに移行した ITEM テーブルの 3 つの列の ITEM-primary-key という名前のプライマリキーを定義します。

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "inventory", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "define-primary-key", "rule-target": "table", "object-locator": { "schema-name": "inventory", "table-name": "ITEM" }, "primary-key-def": { "name": ITEM-primary-key, "columns": [ "ITEM-NAME", "BOM-MODEL-NUM", "BOM-PART-NUM" ] } }]}

Example 一意のインデックスを定義します。

次の例では、ターゲットエンドポイントに移行した ITEM テーブルの 3 つの列の ITEM-unique-idx という名前の一意のインデックスを定義します。

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "inventory", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "define-primary-key", "rule-target": "table", "object-locator": {

API バージョン API Version 2016-01-01303

Page 311: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドテーブル設定のルールとオペレーション

"schema-name": "inventory", "table-name": "ITEM" }, "primary-key-def": { "name": ITEM-unique-idx, "origin": unique-index, "columns": [ "ITEM-NAME", "BOM-MODEL-NUM", "BOM-PART-NUM" ] } }]}

テーブル設定のルールとオペレーションテーブル設定を使用して、指定されたオペレーションで選択されたテーブルまたはビューに適用する設定を指定します。テーブル設定ルールはオプションです。

テーブル設定ルールタイプを使用するテーブルマッピングルールの場合、以下のパラメータを適用することができます。

パラメータ 使用できる値 説明

rule-type table-settings 選択ルールにより指定されたテーブルまたはビューにルールを適用する値。

rule-id 数値。 ルールを識別する一意の数値。

rule-name 英数字値。 ルールを特定する一意な名前。

object-locator 以下のパラメータを使用するオブジェクト。

• schema-name – スキーマの名前。

• table-name– テーブルまたはビューの名前。

特定のスキーマ、テーブルまたはビューの名前(ワイルドカードなし)。

parallel-load 以下のパラメータを使用するオブジェクト。

• type – 並列のロードを有効にするかどうかを指定します。そうでない場合、このパラメータは、テーブルまたはビューのパーティション、サブパーティションや並列でロードする他のセグメントを識別するメカニズムもしています。パーティションは、ソーステーブルまたはビューですでに定義され、名前で識別されるセグメントです。Oracle エンドポイントのみでは、サブパーティションはソーステーブルまた

object-locator オプションで識別されたテーブルまたはビューでの並列ロード(マルチスレッド)オペレーションを指定する値。この場合、次の任意の方法で並行してロードすることができます。

• 使用可能なすべてのパーティションまたはサブパーティションで指定されるセグメントによって。

• パーティションおよびサブパーティションで選択することによって。

• 指定したセグメントに基づいた範囲によって。

API バージョン API Version 2016-01-01304

Page 312: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドテーブル設定のルールとオペレーション

パラメータ 使用できる値 説明はビューですでに定義されて名前によって識別できるセグメントの追加レベルとなります。1 つ以上のテーブル列またはビュー列に値範囲の境界を指定することで、table-settings ルール内の他のセグメントを識別できます。

• partitions – type がpartitions-list の場合、この値はすべてのパーティションが並列ロードされるように指定します。

• subpartitions – Oracle エンドポイントのみでは、typeが partitions-list の場合、この値はすべてのパーティションが並列ロードされるように指定します。

• columns – type が rangesの場合、この値は並列でロードする範囲ベースのセグメントを識別するために使用する列の名前を指定します。

• boundaries – type がranges の場合、この値は並列でロードされる範囲ベースのセグメントを識別するために使用する columns の値を指定します。

並列ロードの詳細については、「選択したテーブルおよびビューで並列ロードを使用する (p. 309)」を参照してください。

API バージョン API Version 2016-01-01305

Page 313: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドテーブル設定のルールとオペレーション

パラメータ 使用できる値 説明

type parallel-load の次のいずれか。

• partitions-auto – テーブルまたはビューのすべてのパーティションが並列でロードされます。各パーティションは個別のスレッドに割り当てられます。

• subpartitions-auto –(Oracle エンドポイントのみ)テーブルまたはビューのすべてのサブパーティションが並列でロードされます。すべてのサブパーティションは個別のスレッドに割り当てられます。

• partitions-list – テーブルまたはビューで指定されたすべてのパーティションが並列でロードされます。Oracleエンドポイントのみでは、テーブルまたはビューのすべてのサブパーティションが並列でロードされます。指定する各パーティションおよびサブパーティションは、独自のスレッドに割り当てられます。並列ロードするパーティションおよびサブパーティションをパーティション名(partitions) とサブパーティション名 (subpartitions)で指定します。

• ranges – テーブルまたはビューの指定されたすべてのセグメントが並列でロードされます。識別した各テーブルまたはビューセグメントは個別のスレッドに割り当てられます。このセグメントを列名 (columns) および 列の値(boundaries) で指定します。

• none – テーブルまたはビューは、パーティションやサブパーティションに関係なく、シングルスレッドタスクでロードされます(デフォルト)。詳細については、「タスクの作成 (p. 254)」を参照してください。

並列でロードするテーブルまたはビューのパーティション、サブパーティション、またはセグメントを識別するメカニズム。

API バージョン API Version 2016-01-01306

Page 314: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドテーブル設定のルールとオペレーション

パラメータ 使用できる値 説明

partitions type が partitions-list の場合、これは並列でロードするパーティションの名前を指定する文字列の配列です。

並列ロードするパーティションの名前。

subpartitions (Oracle エンドポイントのみ)type が partitions-list の場合、これは並列してロードするサブパーティションの名前を指定する文字列の配列です。

並列ロードするサブパーティションの名前。

columns type が ranges の場合、並列でロードする範囲ベースのテーブルセグメントまたはビューセグメントを識別する列の名前に設定された文字列の配列です。

並列でロードする範囲ベースのテーブルセグメントまたはビューセグメントを識別する列の名前。

boundaries type が ranges の場合、列の値の配列の配列。各列の値の配列には、数量の列値と columnsで指定された順序が含まれています。列の値の配列はテーブルセグメントまたはビューセグメントの上限の境界を指定します。各追加列値の配列は、1 つの追加テーブルセグメントまたはビューセグメンの上限の境界を追加します。このような範囲ベースのテーブルセグメントまたはビューセグメントはすべて並列ロードです。

並列ロードする範囲ベースのテーブルパーティションまたはビューパーティションを識別する列の値。

lob-settings 以下のパラメータを使用するオブジェクト。

• mode – LOB の移行処理モードを指定します。

• bulk-max-size – mode 設定に応じて、LOB の最大サイズを指定します。

object-locator オプションによって識別されるテーブルまたはビューの LOB 処理を指定する値。指定された LOB 処理は、このテーブルまたはビューのみのすべてのタスク LOB 設定を上書きします。LOB 設定パラメータの使用に関する詳細については、「選択したテーブルまたはビューの LOB 設定を指定 (p. 313)」を参照してください。

API バージョン API Version 2016-01-01307

Page 315: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドテーブル設定のルールとオペレーション

パラメータ 使用できる値 説明

mode 以下の値を使用して、指定されたテーブルまたはビューの LOBの移行処理を指定します。

• limited –(デフォルト)この値は、テーブルまたはビュー内のすべての列データタイプとともにすべての LOB移行インラインを使用して、制限された LOB モードに移行を設定します。主に小さな LOB (100 MB 以下) をレプリケートするときに、この値を使用します。また、bulk-max-size 値を指定します(ゼロは無効です)。bulk-max-size より大きなサイズの移行された LOB はすべて、設定したサイズに切り捨てられます。

• unlimited – この値は、移行を完全 LOB モードに設定します。レプリケートするほとんどあるいはすべての LOB が 1GB より大きい場合には、この値を使用します。bulk-max-size 値をゼロに指定する場合、すべての LOB は標準の完全 LOB モードで移行されます。この形式の unlimitedモードでは、ソーステーブルまたはビューからのルックアップを使用して、すべてのLOB が他の列データタイプとは別に移行されます。bulk-max-size 値をゼロより大きく設定する場合、すべてのLOB は組み合わせ完全 LOBモードで移行されます。この形式の unlimited モードでは、bulk-max-size よりも大きな LOB は、ソーステーブルルックアップまたはビュールックアップを使用して移行されます。これは、標準完全LOB モードに類似しています。それ以外の場合は、このサイズ以下の LOB はインラインで移行されます。これは制限付き LOB モードに似ています。使用する形式に関係なく、unlimited モードではLOB が切り捨てられることはありません。

LOB を移行するために使用されるメカニズム。

API バージョン API Version 2016-01-01308

Page 316: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドテーブル設定のルールとオペレーション

パラメータ 使用できる値 説明• none – すべてのテーブルまた

はビューの LOB はタスクのLOB 設定に従って移行されます。

タスクの LOB 設定の詳細については、「ターゲットメタデータのタスク設定 (p. 263)」を参照してください。

LOB を移行する方法およびこれらのタスクの LOB 設定を指定する方法については、「AWS DMS タスクのソースデータベースの LOB サポートの設定 (p. 280)」を参照してください。

bulk-max-size この値の効果は mode によって異なります。

LOB の最大サイズ (キロバイト単位)。このオプションは、小さなLOB をレプリケートする必要がある場合、またはターゲットエンドポイントが無制限の LOB サイズをサポートしていない場合にのみ指定します。

選択したテーブルおよびビューで並列ロードを使用する移行を高速化してより効率的にするには、選択したテーブルおよびビューを並列ロードできます。つまり、複数のスレッドを並列で使用して単一にセグメント化されたテーブルまたはビューを移行できます。これを行うため、AWS DMS は完全ロードタスクをスレッドに分割し、各テーブルセグメントを各自のスレッドに割り当てます。

この並列ロードプロセスを使用すると、まず複数のスレッドが複数のテーブルおよびビューを並列してソースのエンドポイントからアップロードするようにできます。次に、複数のスレッドを移行し、同じテーブルおよびビューを並列してターゲットエンドポイントにロードさせることができます。一部のデータベースエンジンでは、既存のパーティションあるいはサブパーティションを使用してテーブルおよびビューをセグメント化することができます。それ以外の場合は、列の値の範囲を指定することで任意のテーブルまたはビューをセグメント化できます。

並列ロードは以下のソースエンドポイントでサポートされています。

• Oracle• Microsoft SQL Server• MySQL• PostgreSQL• IBM Db2• SAP Adaptive Server Enterprise (ASE)

並列ロードは以下のターゲットエンドポイントでサポートされています。

• Oracle

API バージョン API Version 2016-01-01309

Page 317: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドテーブル設定のルールとオペレーション

• Microsoft SQL Server• MySQL• PostgreSQL• Amazon Redshift• SAP Adaptive Server Enterprise (ASE)• Amazon DynamoDB• Amazon Kinesis Data Streams• Amazon Elasticsearch Service

並行してロードするテーブルとビューの最大数を指定するには、MaxFullLoadSubTasks タスク設定を使用します。並行ロードタスクのテーブルまたはビューあたりのスレッドの最大数を指定するには、ParallelLoadThreads タスク設定を使用します。並列ロードタスクのバッファサイズを指定するには、 タスク設定を使用します。ParallelLoadThreads および、ParallelLoadBufferSize の可用性と設定は、ターゲットエンドポイントによって異なります。

ParallelLoadThreads および ParallelLoadBufferSize 設定の詳細については、ターゲットメタデータのタスク設定 (p. 263) を参照してください。MaxFullLoadSubTasks 設定の詳細については、全ロードタスク設定 (p. 264) を参照してください。ターゲットエンドポイントに固有の情報については、関連するトピックを参照してください。

並列ロードを使用するには、parallel-load オプションを指定した table-settings タイプのテーブルマッピングルールを作成します。table-settings ルールでは、並列でロードする単一テーブルまたはビューのセグメント化の条件を指定できます。これを行うには、 parallel-load オプションの typeパラメータの複数のオプションのいずれかに設定します。これを行う方法は、並行ロード用にテーブルまたはビューをセグメント化する方法によって異なります。

• パーティションを使用 – partitions-auto タイプを使用して、すべての既存のテーブルまたはビューのパーティションをロードします。または、partitions-list タイプを指定した partitions 配列で使用して、選択したパーティションのみをロードします。

• (Oracle エンドポイントのみ)サブパーティションを使用 – subpartitions-auto タイプを使用してすべての既存のテーブルサブパーティションまたはビューパーティションをロードします。または、partitions-list タイプを指定した subpartitions 配列で使用して、選択したサブパーティションのみをロードします。

• 定義するセグメントを使用 – 列値の境界を使用して定義したテーブルセグメントまたはビューセグメントをロードします。これを行うには、ranges タイプを指定した columns 配列および boundaries 配列で使用します。

並列でロードする追加のテーブルまたはビューを識別するには、追加の table-settings オブジェクトを parallel-load オプションで指定します。

次の手順では、各並列ロードタイプの JSON を記述する方法を、単純なものからきわめて複雑なものまで説明します。

すべてのテーブルまたはビューパーティション、またはすべてのテーブルまたはビューサブパーティションを指定するには

• partitions-auto タイプまたは subpartitions-auto タイプのいずれか (両方は使用できません)を指定して parallel-load を指定します。

各テーブルまたはビューのパーティションまたはサブパーティションは、個別のスレッドに自動的に割り当てられます。

Note

並列ロードには、テーブルまたはビューですでに定義されている場合に、パーティションあるいはサブパーティションが含まれます。

API バージョン API Version 2016-01-01310

Page 318: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドテーブル設定のルールとオペレーション

選択したテーブルまたはビューのパーティション、サブパーティション、またはその両方を指定するには

1. partitions-list タイプで parallel-load を指定します。2. (オプション) パーティション名の配列を partitions の値として指定したパーティションが含まれま

す。

指定されたパーティションがそれぞれ独自のスレッドに割り当てられます。3. (オプション、Oracle エンドポイントのみ) サブパーティション名を subpartitions の値として指定

したサブパーティションが含まれます。

指定されたサブパーティションがそれぞれ独自のスレッドに割り当てられます。

Note

並列ロードには、テーブルまたはビューですでに定義されている場合に、パーティションあるいはサブパーティションが含まれます。

テーブルセグメントまたはビューセグメントを列値の範囲として指定することができます。その場合、次の列の特性について注意してください。

• インデックス化された列を指定するとパフォーマンスが大幅に向上します。• 最大 10 個の列を指定できます。• 次の AWS DMS データタイプでは、セグメントの境界を定義するために列を使用できませ

ん。DOUBLE、FLOAT、BLOB、CLOB、NCLOB• Null 値のレコードはレプリケートされません。

テーブルセグメントまたはビューセグメントを列値の範囲として指定するには

1. ranges タイプで parallel-load を指定します。2. columns の値として列名の配列を指定して、テーブルまたはビューのセグメント間の境界を定義しま

す。テーブルまたはビューのセグメント間で境界を定義するすべての列でこれを行います。

列の順序は重要です。次に説明するように、各境界を定義するうえで最初の列がもっとも重要であり最後の列は最も重要度が低くなります。

3. boundaries の値として境界配列を指定して、すべてのテーブルまたはビューのセグメントでデータ範囲を定義します。境界配列は列値の配列の配列です。これを行うには、次のステップを実行します。

a. 列と値の配列の各要素を各列に対応する値として指定します。列と値の配列は、定義する各テーブルまたはビューのセグメントの上限の境界を表します。columns 配列の列で指定したものと同じ順序で各列を指定します。

Note

DATE 列の値を、ソースでサポートされる形式で入力します。b. 列と値の配列をそれぞれ上限の境界として指定します。テーブルまたはビューの一番下のセグメ

ントから、上から 2 番目のセグメントまで、順番に各セグメントを指定します。指定した上限の上にテーブルの行が存在する場合、これらの行はテーブルまたはビューの一番上のセグメントを形成します。そのため、範囲ベースのセグメントの数は、境界配列のセグメント境界の数より 1つ多くなることがあります。このような範囲ベースのセグメントはそれぞれ個別のスレッドに割り当てられます。

API バージョン API Version 2016-01-01311

Page 319: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドテーブル設定のルールとオペレーション

Note

データテーブル内のすべての列のデータ範囲を定義しない場合でも、null 以外のすべてのテーブルまたはビューのデータがレプリケートされます。

たとえば、次のように COL1、COL2 COL 3 に 3 つの列と値の配列を定義したとします。

COL1 COL2 COL3

10 30 105

20 20 120

100 12 99

3 つのセグメントの境界を定義したことで、合計で 4 つのセグメントができることがあります。

各セグメントでレプリケートする行の範囲を識別するため、レプリケーションインスタンスは 4 つのセグメントごとにこれらの 3 つの列で検索を適用します。検索は次のようになります。

セグメント 1

以下の条件が true であるすべての行をレプリケートします。最初の 2 列の値が、対応する セグメント 1 の上限値以下です。また、3 番目の列の値は、セグメント 1 の上限値より小さくなります。

セグメント 2

以下の条件が true であるすべての行(セグメント 1 行を除く)をレプリケートします。最初の 2列の値が、対応する セグメント 2 の上限値以下です。また、3 番目の列の値は、セグメント 2 の上限値より小さくなります。

セグメント 3

以下の条件が true であるすべての行(セグメント 2 行を除く)をレプリケートします。最初の 2列の値が、対応する セグメント 3 の上限値以下です。また、3 番目の列の値は、セグメント 3 の上限値より小さくなります。

セグメント 4

残りのすべての行 (セグメント 1、2、3 の行を除く) をレプリケートします。

この場合、レプリケーションインスタンスが次のように WHERE 句を作成して各セグメントをロードします。

セグメント 1

((COL1 < 10) OR ((COL1 = 10) AND (COL2 < 30)) OR ((COL1 = 10) AND (COL2= 30) AND (COL3 < 105)))

セグメント 2

NOT ((COL1 < 10) OR ((COL1 = 10) AND (COL2 < 30)) OR ((COL1 = 10) AND(COL2 = 30) AND (COL3 < 105))) AND ((COL1 < 20) OR ((COL1 = 20) AND(COL2 < 20)) OR ((COL1 = 20) AND (COL2 = 20) AND (COL3 < 120)))

API バージョン API Version 2016-01-01312

Page 320: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドテーブル設定のルールとオペレーション

セグメント 3

NOT ((COL1 < 20) OR ((COL1 = 20) AND (COL2 < 20)) OR ((COL1 = 20) AND(COL2 = 20) AND (COL3 < 120))) AND ((COL1 < 100) OR ((COL1 = 100) AND(COL2 < 12)) OR ((COL1 = 100) AND (COL2 = 12) AND (COL3 < 99)))

セグメント 4

NOT ((COL1 < 100) OR ((COL1 = 100) AND (COL2 < 12)) OR ((COL1 = 100) AND(COL2 = 12) AND (COL3 < 99)))

選択したテーブルまたはビューの LOB 設定を指定1 つ以上の table-settings オブジェクトで lob-settings オプションを使用してタイプ table-settings のテーブルマッピングルールを作成すると、1 つ以上のテーブルに LOB 設定のタスクを設定できます。

選択したテーブルへの LOB 設定の指定は、次のソースエンドポイントでサポートされています。

• Oracle• Microsoft SQL Server• MySQL• PostgreSQL• IBM Db2 (以下で説明するように、mode および bulk-max-size 設定に応じます)• SAP Adaptive Server Enterprise (ASE) (以下で説明するように、mode および bulk-max-size 設定に

応じます)

選択したテーブルまたはビューへの LOB 設定の指定は、次のターゲットエンドポイントでサポートされています。

• Oracle• Microsoft SQL Server• MySQL• PostgreSQL• SAP ASE (以下で説明するように、mode および bulk-max-size 設定に応じます)

Note

LOB データタイプはプライマリキーが含まれるテーブルおよびビューのみで使用できます。

選択したテーブルまたはビューの LOB 設定を使用するには、lob-settings オプションを指定してtable-settings タイプのテーブルマッピングルールを作成します。これにより、object-locator オプションで識別されたテーブルまたはビューの LOB 処理が指定されます。table-settings ルール内で、以下のパラメータを使用して lob-settings オブジェクトを指定できます。

• mode – 選択したテーブルまたはビューの LOB 移行処理のメカニズムを次のように指定します。• limited – デフォルトの制限付き LOB モードは最も速くて効率的なモードです。すべての LOB が小

さいか、またはターゲットのエンドポイントで未制限の LOB サイズがサポートされていない場合のみ、このモードを使用します。また、limited を使用する場合、すべての LOB は bulk-max-sizeで設定したサイズ内にする必要があります。

完全ロードタスクにおけるこのモードでは、レプリケーションインスタンスはすべての LOB を他の列のデータ型と一緒にメインテーブルストレージまたはメインビューストレージの一部としてインラインで移行します。ただし、bulk-max-size 値より大きい LOB はすべて、インスタンスによって指

API バージョン API Version 2016-01-01313

Page 321: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドテーブル設定のルールとオペレーション

定のサイズに切り捨てられます。変更データキャプチャ (CDC) のロードの場合、インスタンスはすべての LOB をソーステーブルの参照を使用して移行します。これは標準の完全 LOB モードと同様です(以下を参照)。これは、LOB に関係なく行われます。

Note

全ロードタスクに対してのみビューを移行できます。• unlimited – 完全 LOB モードの移行メカニズムは、次のように bulk-max-size に設定した値に

よって異なります。• 標準の完全 LOB モード – bulk-max-size を 0 に設定すると、レプリケーションインスタンスは

標準の完全 LOB モードを使用してすべての LOB を移行します。このモードでは、サイズにかかわらずすべての LOB を移行でソーステーブルまたはソースビューを参照する必要があります。このアプローチでは通常、制限付き LOB モードよりもはるかに低速で移行されます。すべてまたはほとんどの LOB が大きい (1 GB 以上) の場合にのみ、このモードを使用します。

• 組み合わせ完全 LOB モード – bulk-max-size をゼロ以外の値に設定すると、この完全 LOB モードは制限付き LOB モードと標準の完全 LOB モードを組み合わせて使用します。これは完全ロードタスク向けであり、LOB サイズが bulk-max-size 値以内の場合、インスタンスは制限付き LOBモードのようにインラインで LOB を移行します。LOB のサイズがこの値より大きい場合は、インスタンスは標準の完全 LOB モードのようにソーステーブルまたはソースビューの参照を使用してLOB を移行します。変更データキャプチャ (CDC) のロードの場合、インスタンスはすべての LOBをソーステーブルの参照を使用して移行します。これは標準の完全 LOB モードと同様です (以下を参照)。これは、LOB に関係なく行われます。

Note

全ロードタスクに対してのみビューを移行できます。

このモードにより、移行速度はより高速な制限付き LOB モードと低速な標準の完全 LOB モードの中間になります。このモードは、小さい LOB と大きい LOB が混在しており、ほとんどの LOB が小さい場合にのみ使用します。

この組み合わせ完全 LOB モードは、つぎのエンドポイントのみで使用できます。• IBM Db2 (ソースとして)• SAP ASE (ソースあるいはターゲットとして)

unlimited モードに指定するメカニズムに関わらず、インスタンスはすべての LOB を完全に移行し、切り捨ては行われません。

• none – レプリケーションインスタンスはタスク LOB 設定を使用して、選択されたテーブルまたはビューの LOB を移行します。このオプションを使用すると、選択されたテーブルまたはビューでLOB 設定を使用した場合と使用しない場合の移行結果を比較できます。

指定したテーブルまたはビューにレプリケーションに含まれる LOB があるときには、limited LOBモードを使用する場合のみ BatchApplyEnabled タスクを true に設定できます。

場合によっては、BatchApplyEnabled を true に、また、BatchApplyPreserveTransactionを false に設定できます。このようなケースでは、テーブルまたはビューに LOB があり、ソースおよびターゲットのエンドポイントが Oracle である場合に、インスタンスはBatchApplyPreserveTransaction を true に設定します。

• bulk-max-size – 前の項目で説明した mode に応じて、この値を 0 または 0 以外の値 (キロバイト) に設定します。limited モードでは、このパラメータにゼロ以外の値を設定する必要があります。

インスタンスは LOB をバイナリ形式に変換します。したがって、レプリケートする必要がある最大の LOB を指定するには、サイズを 3 倍します。たとえば、最大の LOB が 2 MB の場合、bulk-max-size を 6000 (6 MB) に設定します。

API バージョン API Version 2016-01-01314

Page 322: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドテーブル設定のルールとオペレーション

テーブル設定の例テーブル設定を使用する説明の例を次に示します。

Example パーティションでセグメント化されたテーブルのロード

次の例では、すべてのパーティションに基づいて並列でロードすることで、ソース内の SALES テーブルを効率的にロードします。

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "HR", "table-name": "SALES" }, "parallel-load": { "type": "partitions-auto" } } ]}

Example サブパーティションでセグメント化されたテーブルのロード

次の例では、すべてのサブパーティションに基づいて並列でロードすることで、Oracle ソース内の SALESテーブルを効率的にロードします。

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "HR", "table-name": "SALES" }, "parallel-load": { "type": "subpartitions-auto" }

API バージョン API Version 2016-01-01315

Page 323: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドテーブル設定のルールとオペレーション

} ]}

Example パーティションのリストでセグメント化されたテーブルのロード

次の例では、特定のパーティションのリストに基づいて並列でロードすることで、ソース内の SALES テーブルをロードします。ここで、指定されたパーティションはアルファベットの一部で始まる値を取って命名されます。たとえば、ABCD やEFGH などです。

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "HR", "table-name": "SALES" }, "parallel-load": { "type": "partitions-list", "partitions": [ "ABCD", "EFGH", "IJKL", "MNOP", "QRST", "UVWXYZ" ] } } ]}

Example 選択されたパーティションおよびサブパーティションのリストでセグメント化されたOracle テーブルのロード

次の例では、選択されたパーティションおよびサブパーティションのリストを使用して並列でロードすることで、Oracle ソースの SALES テーブルをロードします。ここで、指定されたパーティションはアルファベットの一部で始まる値を取って命名されます。たとえば、ABCD やEFGH などです。指定されたサブパーティションは、数字で始まる値を取って命名されます。たとえば、01234 や 56789 などです。

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include"

API バージョン API Version 2016-01-01316

Page 324: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドテーブル設定のルールとオペレーション

}, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "HR", "table-name": "SALES" }, "parallel-load": { "type": "partitions-list", "partitions": [ "ABCD", "EFGH", "IJKL", "MNOP", "QRST", "UVWXYZ" ], "subpartitions": [ "01234", "56789" ] } } ]}

Example 列の値の範囲でセグメント化されたテーブルのロード

次の例では、SALES_NO および REGION 列の値の範囲で指定されたセグメントを使用して並列でロードすることで、ソース内の SALES テーブルをロードします。

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "HR", "table-name": "SALES" }, "parallel-load": { "type": "ranges", "columns": [ "SALES_NO", "REGION" ], "boundaries": [ [ "1000", "NORTH" ], [

API バージョン API Version 2016-01-01317

Page 325: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドテーブル設定のルールとオペレーション

"3000", "WEST" ] ] } } ]}

ここで、2 つの列は、SALES_NO および REGION という名前でセグメント範囲に指定されます。2 つの境界は 2 セットの列の値 (["1000","NORTH"] および ["3000","WEST"]) で指定されます。

したがって、これら 2 つの境界によって、並列でロードされる次の 3 つのテーブルセグメントが識別されます。

セグメント 1

SALES_NO が 1000 以下であり REGION が "NORTH" 未満である行。つまり、EAST リージョンで販売数が最大 1000 まで。

セグメント 2

セグメント 1 以外で SALES_NO が 3000 以下であり REGION が "WEST" 未満である行。つまり、NORTH および SOUTH リージョンで販売数が 1,000 を超え 3,000 まで。

セグメント 3

セグメント 1 および セグメント 2 以外の残りすべての行。つまり、WEST リージョンで販売数が3000 超。

Example 1 つは範囲でセグメント化され、もう 1 つはパーティションでセグメント化された 2 つのテーブルのロード

次の例では、SALES テーブルを識別したセグメント境界で並列にロードします。また、前の例と同様に、ORDERS テーブルをすべてのパーティションで並列にロードします。

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "HR", "table-name": "SALES" }, "parallel-load": { "type": "ranges", "columns": [ "SALES_NO", "REGION" ], "boundaries": [ [

API バージョン API Version 2016-01-01318

Page 326: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドテーブル設定のルールとオペレーション

"1000", "NORTH" ], [ "3000", "WEST" ] ] } }, { "rule-type": "table-settings", "rule-id": "3", "rule-name": "3", "object-locator": { "schema-name": "HR", "table-name": "ORDERS" }, "parallel-load": { "type": "partitions-auto" } } ]}

Example 制限付き LOB モードを使用した LOB を含むテーブルのロード

次の例では、ソース内の LOB を含む ITEMS テーブルを、切り捨てられない最大サイズが 100 MB の制限付き LOB モード(デフォルト)を使用してロードします。このサイズよりも大きい LOB はすべて 100MB に切り捨てられます。すべての LOB は、他のすべての列のデータ型と一緒にインラインでロードされます。

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "INV", "table-name": "ITEMS" }, "lob-settings": { "bulk-max-size": "100000" } } ]}

Example 標準の完全 LOB モードを使用したテーブルのロード

次の例では、標準の完全 LOB モードを使用して、すべての LOB を切り捨てずに、ソースの ITEMS テーブルをロードします。サイズを問わずすべての LOB は、ソーステーブルの各 LOB ごとに参照を使用して、他のデータ型とは別にロードされます。

API バージョン API Version 2016-01-01319

Page 327: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドテーブル設定のルールとオペレーション

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "INV", "table-name": "ITEMS" }, "lob-settings": { "mode": "unlimited" "bulk-max-size": "0" } } ]}

Example 組み合わせ完全 LOB モードを使用した LOB を含むテーブルのロード

次の例では、組み合わせ完全 LOB モードを使用して、すべての LOB を切り捨てずに、ソースの ITEMSテーブルをロードします。サイズが 100 MB 以内のすべての LOB は他のデータ型とともにインラインでロードされます。制限付き LOB モードと同様です。サイズが 100 MB を超えるすべての LOB は、他のデータ型とは別にロードされます。この個別のロードでは、標準の完全 LOB モードのように、ソーステーブルのそのような各 LOB のルックアップが使用されます。

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "INV", "table-name": "ITEMS" }, "lob-settings": { "mode": "unlimited" "bulk-max-size": "100000" } } ]}

API バージョン API Version 2016-01-01320

Page 328: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドソースフィルタの使用

Example タスク LOB 設定を使用した LOB を含むテーブルのロード

次の例では、タスク LOB 設定を使用して、すべての LOB を含め、ソースの ITEMS テーブルをロードします。100 MB の bulk-max-size 設定は無視され、limited または unlimited モードにクイックリセットするためにのみ残されます。

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "INV", "table-name": "ITEMS" }, "lob-settings": { "mode": "none" "bulk-max-size": "100000" } } ]}

ソースフィルタの使用ソースフィルタを使用すると、ソースからターゲットに転送されるレコードの数とタイプを制限できます。たとえば、本社を拠点とする従業員だけがターゲットデータベースに移行されるように指定できます。フィルタは、選択ルールの一部です。データの列にフィルタを適用します。

ソースフィルタは、以下の制約に従う必要があります。

• 選択ルールには、フィルタを設定しないことも、1 つ以上のフィルタを選択することもできます。• すべてのフィルタには 1 つ以上のフィルタ条件を設定できます。• 複数のフィルタを使用する場合、フィルタのリストはフィルタ間で AND 演算子を使用しているものと

して結合されます。• 1 つのフィルタ内で複数のフィルタ条件を使用する場合、フィルタ条件のリストはフィルタ条件間で

OR 演算子を使用しているものとして結合されます。• フィルタは rule-action = 'include' の場合のみ適用されます。• フィルタには、列名とフィルタ条件のリストが必要です。フィルタ条件には、フィルタ演算子と値が必

要です。• 列名、テーブル名、ビュー名およびスキーマ名では大文字と小文字が区別されます。

ソースフィルタの使用には、次の制限が適用されます。

• フィルタは、右から左に読む言語の列を計算しません。• LOB 列にはフィルタを適用しないでください。

API バージョン API Version 2016-01-01321

Page 329: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドソースフィルタの使用

• 変更不可の列にのみフィルタを適用します。そうしないと、ソースフィルタが変更可能な列に適用された場合に、不正な動作が発生する可能性があります。以下に例を示します。

列内の特定の行を除外または含めるフィルタでは、後で行が変更された場合でも、指定された行が常に除外または含められます。たとえば、列 A で行 1~10 を除外または含めることを選択し、後でそれらの行が行 11~20 に変更された場合、データが同じでなくなっても、引き続き除外または含まれます。

また、フィルタの範囲外にある行が後で更新され (または更新後に削除され)、フィルタの定義どおりに除外または含める必要がある場合、その行はターゲットではレプリケートされません。

JSON 形式のソースフィルタルールの作成選択ルールで JSON filters パラメータを使用してソースフィルタを作成できます。filters パラメータは、1 つ以上の JSON オブジェクトの配列を指定します。各オブジェクトには、ソースフィルタのタイプ、列の名前、フィルタ条件を指定するパラメータがあります。これらのフィルタ条件には、1 つ以上のフィルタ演算子およびフィルタ値が含まれています。

次の表は、filters オブジェクトでソースフィルタリングを指定するパラメータを示しています。

パラメータ 値

filter-type source

column-name フィルタを適用するソース列の名前。名前は、大文字と小文字が区別されます。

filter-conditions filter-operator 値に応じて、1 つ以上のオブジェクトにはfilter-operator パラメータおよび適切な値パラメータが含まれています。

filter-operator このパラメータには以下の値のいずれかがあります。

• ste – 以下• gte – 以上• eq – 等しい• between – 2 つの値に等しい、またはその間

value または

start-value

end-value

filter-operator パラメータの値。filter-operator に between以外の値がある場合には、value を使用します。filter-operatorが between に設定されている場合は、1 つが start-value 用、もう1 つが end-value 用の 2 つの値を指定します。

以下の例では、ソースフィルタを使用する一般的な方法をいくつか示します。

Example 1 つのフィルタ

次のフィルタは、empid >= 100 のすべての従業員をターゲットデータベースにレプリケートします。

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test",

API バージョン API Version 2016-01-01322

Page 330: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドソースフィルタの使用

"table-name": "employee" }, "rule-action": "include", "filters": [{ "filter-type": "source", "column-name": "empid", "filter-conditions": [{ "filter-operator": "gte", "value": "100" }] }] }]}

Example 複数のフィルタ演算子

以下のフィルタは、複数のフィルタ演算子を 1 つのデータ列に適用します。このフィルタは、(empid<=10) または (empid is between 50 and 75) または (empid >= 100) のすべての従業員をターゲットデータベースにレプリケートします。

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "employee" }, "rule-action": "include", "filters": [{ "filter-type": "source", "column-name": "empid", "filter-conditions": [{ "filter-operator": "ste", "value": "10" }, { "filter-operator": "between", "start-value": "50", "end-value": "75" }, { "filter-operator": "gte", "value": "100" }] }] }] }

Example 複数のフィルタ

以下のフィルタは、テーブル内の 2 つの列に複数のフィルタを適用します。このフィルタは、(empid <=100) および (dept= tech) のすべての従業員をターゲットデータベースにレプリケートします。

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1",

API バージョン API Version 2016-01-01323

Page 331: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドソースフィルタの使用

"object-locator": { "schema-name": "test", "table-name": "employee" }, "rule-action": "include", "filters": [{ "filter-type": "source", "column-name": "empid", "filter-conditions": [{ "filter-operator": "ste", "value": "100" }] }, { "filter-type": "source", "column-name": "dept", "filter-conditions": [{ "filter-operator": "eq", "value": "tech" }] }] }]}

時刻と日付でフィルタリングインポートするデータを選択すると、フィルタ条件の一部として日付または期間を指定できます。AWSDMS は、フィルタリングに日付形式 YYYY-MM-DD と時刻形式 YYYY-MM-DD HH:MM:SS を使用します。AWS DMS 比較関数は SQLite のルールに従います。SQLite のデータ型と日付変換については、SQLite ドキュメントの「SQLite バージョン 3 のデータ型」を参照してください。

以下の例は、日付をフィルタリングする方法を示しています。これは、empstartdate >= January 1,2002 のすべての従業員をターゲットデータベースにレプリケートします。

Example 1 つの日付フィルタ

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "employee" }, "rule-action": "include", "filters": [{ "filter-type": "source", "column-name": "empstartdate", "filter-conditions": [{ "filter-operator": "gte", "value": "2002-01-01" }] }] }]}

API バージョン API Version 2016-01-01324

Page 332: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドタスクのステータス

AWS DMS タスクのモニタリングタスクのステータスを確認し、タスクの統制テーブルをモニタリングすることで、タスクの進行状況を監視できます。統制テーブルの詳細については、「制御テーブルタスク設定 (p. 266)」を参照してください。

Amazon CloudWatch を使用して、タスクの進行状況をモニタリングすることもできます。AWS マネジメントコンソール、AWS コマンドラインインターフェイス (CLI)、または AWS DMS API を使用して、タスクの進行状況、使用されているリソースとネットワーク接続をモニタリングできます。

最後に、テーブルの状態を表示することにより、タスクのソーステーブルの状態をモニタリングできます。

DMS コンソールの「最終更新」列は、テーブルに対して AWS DMS が最後にテーブル統計レコードを更新した時刻を示すのみであることに注意してください。これはテーブルの最終更新時間を示すものではありません。

詳細については、以下のトピックを参照してください。

トピック• タスクのステータス (p. 325)• タスク実行中のテーブルの状態 (p. 326)• Amazon CloudWatch を使用したレプリケーションモニタリングタスク (p. 327)• データ移行サービスメトリクス (p. 329)• AWS DMS タスクログの管理 (p. 332)• AWS CloudTrail を使用した AWS DMS API コールのログ作成 (p. 333)

タスクのステータスタスクのステータスはタスクの状態を表します。以下の表では、タスクがなる得るステータスを示しています。

タスクのステータス 説明

作成 AWS DMS がタスクを作成中です。

実行中 タスクが指定された移行処理を実行中です。

停止 タスクが停止されました。

停止中 タスクが停止中です。これは通常、タスクでのユーザーによる介入を示します。

削除 タスクが (通常はユーザーによる介入のためリクエストから)削除中です。

Failed タスクが失敗しました。詳細については、タスクのログファイルを参照してください。

Starting タスクがレプリケーションインスタンスに、さらにソースおよびターゲットエンドポイントに接続中です。フィルタと変換を適用中です。

API バージョン API Version 2016-01-01325

Page 333: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドタスク実行中のテーブルの状態

タスクのステータス 説明

準備完了 タスクの実行準備ができました。このステータスになるのは通常、"creating" 状態の後です。

変更中 タスクが (通常はユーザーによるタスク設定の変更アクションのため) 変更中です。

タスクのステータスバーで、タスクの進捗状況を予測できます。この予測の正確さはソースデータベースのテーブル統計の正確さによって異なります。テーブル統計が正確であればあるほど、正確に予測できます。予測された列の統計がないテーブルが 1 つだけのタスクでは、どのような種類であっても完了率の予測を提供できません。この場合、タスクのステータスと、ロードされた列の表示を使って、タスクが実際に実行されて進行していることを確認できます。

タスク実行中のテーブルの状態AWS DMS コンソールは、移行中にテーブルの状態に関する情報を更新します。以下の表では、表示される可能性のある状態値を示しています。

州/地域 説明

テーブルが存在しません AWS DMS がソースエンドポイントでテーブルを見つけられません。

ロード前 フルロードプロセスが有効になっていますが、まだ開始されていません。

API バージョン API Version 2016-01-01326

Page 334: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドAmazon CloudWatch を使用したレプリケーションモニタリングタスク

州/地域 説明

Full load 全ロードプロセスが進行中です。

Table completed 全ロードが完了しました。

Table cancelled テーブルのロードがキャンセルされました。

Table error テーブルのロード時にエラーが発生しました。

Amazon CloudWatch を使用したレプリケーションモニタリングタスク

Amazon CloudWatch のアラームやイベントを使用して、移行をより詳細に追跡できます。AmazonCloudWatch の詳細については、『Amazon CloudWatch ユーザーガイド』の「AmazonCloudWatch、Amazon CloudWatch Events、Amazon CloudWatch Logs とは」をご覧ください。AmazonCloudWatch の使用には料金が発生することに注意してください。

AWS DMS コンソールには、次の図に示すように、タスクのステータス、完了率、経過時間、テーブルの統計を含めて、各タスクの基本的な CloudWatch 統計が表示されます。レプリケーションタスクを選択し、[Task monitoring] タブを選択します。

API バージョン API Version 2016-01-01327

Page 335: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドAmazon CloudWatch を使用したレプリケーションモニタリングタスク

AWS DMS コンソールで [Table statistics (テーブル統計)] タブを選択すると、挿入、削除、更新の数など、各テーブルのパフォーマンス統計が表示されます。

API バージョン API Version 2016-01-01328

Page 336: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドデータ移行サービスメトリクス

加えて、[Replication Instance] ページからレプリケーションインスタンスを選択した場合、[Monitoring] タブを選択することでインスタンスのパフォーマンスメトリクスを表示できます。

データ移行サービスメトリクスAWS DMS には、次の統計情報が表示されます。

• ホストメトリクス – Amazon CloudWatch により提供されるレプリケーションホストのパフォーマンスおよび使用状況の統計。使用可能なメトリクスの完全なリストについては、「レプリケーションインスタンスのメトリクス (p. 330)」を参照してください。

• レプリケーションタスクメトリクス – 受信した変更とコミットされた変更、レプリケーションホストとソースおよびターゲットデータベースの間のレイテンシーなど、レプリケーションタスクの統計。使用可能なメトリクスの完全なリストについては、「レプリケーションタスクのメトリクス (p. 331)」を参照してください。

• テーブルメトリクス – 挿入、更新、削除、完了した DDL ステートメントの数など、移行が進行中のテーブルの統計。

API バージョン API Version 2016-01-01329

Page 337: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドレプリケーションインスタンスのメトリクス

タスクメトリクスは、レプリケーションホストおよびソースエンドポイント間の統計と、レプリケーションホストおよびターゲットエンドポイント間の統計に分けられます。関連する 2 つの統計を一緒に追加することで、タスクの統計の合計を調べることもできます。たとえば、CDCLatencySource 値とCDCLatencyTarget 値を組み合わせることで、タスクの合計レイテンシー (レプリカラグ) を調べることができます。

タスクメトリック値は、ソースデータベースにおける現在のアクティビティの影響を受ける可能性があります。たとえば、トランザクションが開始したが、コミットされていない場合、CDCLatencySource メトリクスはトランザクションがコミットされるまで大きくなり続けます。

レプリケーションインスタンスの場合、FreeableMemory メトリクスには説明が必要です。解放可能なメモリは、実際の使用可能な空きメモリを示しているわけではありません。これは、解放して他の用途に使用できる現在使用中のメモリであり、レプリケーションインスタンスで使用されているバッファとキャッシュの組み合わせです。

FreeableMemory メトリクスに実際の使用可能な空きメモリは反映されませんが、FreeableMemory および SwapUsage メトリクスの組み合わせにより、レプリケーションインスタンスが過負荷になっているかどうかがわかります。

次の状態について、これらの 2 つのメトリクスをモニタリングします。

• FreeableMemory メトリクスが 0 に近づいている。

• SwapUsage メトリクスが増加または変動する。

これらの 2 つの状態のいずれかが表示された場合は、より大きなレプリケーションインスタンスへの移行を検討する必要があります。また、レプリケーションインスタンスで実行中のタスクの数とタイプを減らすことも検討してください。全ロードタスクは、変更をレプリケートするだけのタスクよりも多くのメモリを必要とします。

レプリケーションインスタンスのメトリクスレプリケーションインスタンスのモニタリングには、次の統計に関する Amazon CloudWatch メトリクスが含まれています。

CPUUtilization

使用される CPU の量。

単位: バイトFreeStorageSpace

使用可能なストレージ領域の容量。

単位: バイトFreeableMemory

使用可能な RAM の容量。

単位: バイトWriteIOPS

1 秒あたりのディスク I/O 操作の平均回数。

単位: Count/SecondReadIOPS

1 秒あたりのディスク I/O 操作の平均回数。

単位: Count/Second

API バージョン API Version 2016-01-01330

Page 338: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドレプリケーションタスクのメトリクス

WriteThroughput

1 秒あたりのディスクへの平均書き込みバイト数。

単位: バイト/SecondReadThroughput

1 秒あたりのディスクからの平均読み取りバイト数。

単位: バイト/SecondWriteLatency

1 回のディスク I/O (出力) 操作にかかる平均時間。

単位: ミリ秒ReadLatency

1 回のディスク I/O (入力) 操作にかかる平均時間。

単位: ミリ秒SwapUsage

レプリケーションインスタンスで使用されるスワップ領域の量。

単位: バイトNetworkTransmitThroughput

モニタリングとレプリケーションに使用される顧客データベーストラフィックと AWS DMS トラフィックの両方を含む、レプリケーションインスタンスの送信ネットワークトラフィック。

単位: バイト/秒NetworkReceiveThroughput

モニタリングとレプリケーションに使用される顧客データベーストラフィックと AWS DMS トラフィックの両方を含む、レプリケーションインスタンスの受信ネットワークトラフィック。

単位: バイト/秒

レプリケーションタスクのメトリクスレプリケーションタスクのモニタリングには、次の統計のメトリクスが含まれています。

FullLoadThroughputBandwidthSource

ソースから受信した全ロードによるネットワーク帯域幅 (1 秒あたりの KB 数)。FullLoadThroughputBandwidthTarget

ターゲットに送信される全ロードによるネットワーク帯域幅 (1 秒あたりの KB 数)。FullLoadThroughputRowsSource

ソースから受信した全ロードによる変更 (1 秒あたりの行数)。FullLoadThroughputRowsTarget

ターゲットに送信される全ロードによる変更 (1 秒あたりの行数)。CDCIncomingChanges

ターゲットへの適用を待機している、特定の時点での変更イベントの合計数。これは、ソースエンドポイントのトランザクション変更レートの測定と同じではありません。通常、このメトリクスの多く

API バージョン API Version 2016-01-01331

Page 339: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドAWS DMS ログを管理する

は、AWS DMS がキャプチャされた変更をタイムリーに適用できず、ターゲットのレイテンシーが高くなっていることを示します。

CDCChangesMemorySource

メモリに累積され、ソースからのコミットを待機している行の数。CDCChangesMemoryTarget

メモリに累積され、ターゲットへのコミットを待機している行の数。CDCChangesDiskSource

ディスクに累積され、ソースからのコミットを待機している行の数。CDCChangesDiskTarget

ディスクに累積され、ターゲットへのコミットを待機している行の数。CDCThroughputBandwidthSource

ターゲットのネットワーク帯域幅 (KB/秒)。CDCThroughputBandwidth は、サンプリングポイントで帯域幅を記録します。ネットワークトラフィックが見つからない場合、値は 0 です。CDC は長時間実行トランザクションを発行しないため、ネットワークトラフィックは記録されない場合があります。

CDCThroughputBandwidthTarget

ターゲットのネットワーク帯域幅 (KB/秒)。CDCThroughputBandwidth は、サンプリングポイントで帯域幅を記録します。ネットワークトラフィックが見つからない場合、値は 0 です。CDC は長時間実行トランザクションを発行しないため、ネットワークトラフィックは記録されない場合があります。

CDCThroughputRowsSource

ソースから受信したタスクの変更 (1 秒あたりの行数)。CDCThroughputRowsTarget

ターゲットに送信されるタスクの変更 (1 秒あたりの行数)。CDCLatencySource

ソースエンドポイントからキャプチャされた最後のイベントと、AWS DMS インスタンスの現在のシステムタイムスタンプの間の間隔 (秒)。タスクの絞り込みによりソースから変更がキャプチャされない場合、この値はゼロに設定されます。

CDCLatencyTarget

ターゲットでコミットを待機中の最初のイベントタイムスタンプと、AWS DMS インスタンスの現在のタイムスタンプの間の間隔 (秒)。この値は、ターゲットによって処理されていないトランザクションがある場合に発生します。それ以外の場合、すべてのトランザクションが適用されると、ターゲットレイテンシーはソースレイテンシーと同じになります。ターゲットレイテンシーをソースレイテンシーより小さくすることはできません。

AWS DMS タスクログの管理AWS DMS は、移行プロセス中に Amazon CloudWatch を使用してタスク情報を記録します。AWSCLI または AWS DMS API を使用すると、タスクログに関する情報を表示できます。これを行うには、describe-replication-instance-task-logs AWS CLI コマンドまたは AWS DMS API アクション DescribeReplicationInstanceTaskLogs を使用します。

たとえば、次の AWS CLI コマンドは、JSON 形式のタスクログメタデータを表示します。

$ aws dms describe-replication-instance-task-logs \

API バージョン API Version 2016-01-01332

Page 340: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドAWS CloudTrail を使用した

AWS DMS API コールのログ作成

--replication-instance-arn arn:aws:dms:us-east-1:237565436:rep:CDSFSFSFFFSSUFCAY

コマンドからのレスポンス例を次に示します。

{ "ReplicationInstanceTaskLogs": [ { "ReplicationTaskArn": "arn:aws:dms:us-east-1:237565436:task:MY34U6Z4MSY52GRTIX3O4AY", "ReplicationTaskName": "mysql-to-ddb", "ReplicationInstanceTaskLogSize": 3726134 } ], "ReplicationInstanceArn": "arn:aws:dms:us-east-1:237565436:rep:CDSFSFSFFFSSUFCAY"}

このレスポンスでは、1 つのタスクログ (mysql-to-ddb) がレプリケーションインスタンスに関連付けられています。このログのサイズは、3,726,124 バイトです。

describe-replication-instance-task-logs により返される情報を使用して、タスクログの問題を診断およびトラブルシューティングできます。たとえば、タスクの詳細なデバッグログを有効にした場合、タスクログはすぐに大きくなるため、レプリケーションインスタンスの使用可能なストレージをすべて消費し、インスタンスステータスが storage-full に変化する可能性があります。タスクログを記述することによって、必要ないタスクログを判断できます。これにより、それらのタスクログを削除してストレージ領域を解放できます。

Note

ログを削除する前に、関連するタスクの実行を中止します。関連付けられたタスクの実行中は、AWS CLI または AWS DMS コンソールを使用してログを削除することはできません。

タスクのタスクログを削除するには、タスク設定 DeleteTaskLogs を true に設定します。たとえば、AWS CLI modify-replication-task コマンドまたは AWS DMS API ModifyReplicationTaskアクションを使用してタスクを変更するときに、次の JSON はタスクログを削除します。

{ "Logging": { "DeleteTaskLogs":true }}

AWS CloudTrail を使用した AWS DMS API コールのログ作成

AWS DMS は AWS CloudTrail と統合されています。このサービスは、AWS DMS 内でユーザーやロール、または AWS のサービスによって実行されたアクションを記録するサービスです。CloudTrailは、AWS DMS コンソールからのコールや、AWS DMS API へのコード呼び出しを含む、AWS DMS のすべての API コールをイベントとしてキャプチャします。証跡を作成する場合は、AWS DMS のイベントなど、Amazon S3 バケットへの CloudTrail イベントの継続的な配信を有効にすることができます。証跡を設定しない場合でも、CloudTrail コンソールの [Event history (イベント履歴)] で最新のイベントを表示できます。CloudTrail によって収集された情報を使用して、リクエストの作成元の IP アドレス、リクエストの

API バージョン API Version 2016-01-01333

Page 341: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドCloudTrail 内の AWS DMS 情報

実行者、リクエストの実行日時などの詳細を調べて、AWS DMS に対してどのようなリクエストが行われたかを判断できます。

CloudTrail の詳細については、「AWS CloudTrail User Guide」を参照してください。

CloudTrail 内の AWS DMS 情報CloudTrail は、アカウント作成時に AWS アカウントで有効になります。AWS DMS でアクティビティが発生すると、そのアクティビティは [Event history (イベント履歴)] の AWS の他のサービスのイベントとともに CloudTrail イベントに記録されます。最近のイベントは、AWS アカウントで表示、検索、ダウンロードできます。詳細については、「CloudTrail イベント履歴でのイベントの表示」を参照してください。

AWS DMS のイベントなど、AWS アカウントのイベントの継続的な記録については、証跡を作成します。証跡により、CloudTrail はログファイルを Amazon S3 バケットに配信できます。デフォルトでは、コンソールで証跡を作成するときに、証跡がすべてのリージョンに適用されます。証跡では、AWS パーティションのすべてのリージョンからのイベントがログに記録され、指定した Amazon S3 バケットにログファイルが配信されます。さらに、より詳細な分析と CloudTrail ログで収集されたデータに基づいた行動のためにその他の AWS サービスを設定できます。詳細については、以下のトピックを参照してください。

• 証跡を作成するための概要• CloudTrail でサポートされるサービスと統合• CloudTrail の Amazon SNS 通知の設定• 「複数のリージョンから CloudTrail ログファイルを受け取る」と「複数のアカウントから CloudTrail ロ

グファイルを受け取る」

AWS DMS アクションはすべて CloudTrail によって記録されます。また、これらのアクションは AWS Database Migration Service API Referenceで説明されています。たとえば、CreateReplicationInstance、TestConnection、StartReplicationTask の各アクションを呼び出すと、CloudTrail ログファイルにエントリが生成されます。

各イベントまたはログエントリには、リクエストの生成者に関する情報が含まれます。この ID 情報は以下のことを確認するのに役立ちます。

• リクエストが、ルートと IAM ユーザー認証情報のどちらを使用して送信されたか。• リクエストが、ロールとフェデレーティッドユーザーのどちらの一時的なセキュリティ認証情報を使用

して送信されたか.• リクエストが、別の AWS サービスによって送信されたかどうか。

詳細については、「CloudTrail userIdentity 要素」を参照してください。

AWS DMS ログファイルエントリの概要証跡は、指定した Amazon S3 バケットにイベントをログファイルとして配信できる設定です。CloudTrailログファイルには、1 つ以上のログエントリが含まれます。イベントは任意の送信元からの単一のリクエストを表し、リクエストされたアクション、アクションの日時、リクエストのパラメータなどに関する情報が含まれます。CloudTrail ログファイルは、パブリック API 呼び出しの順序付けられたスタックトレースではないため、特定の順序では表示されません。

以下の例は、RebootReplicationInstance アクションの CloudTrail ログエントリを示しています。

{

API バージョン API Version 2016-01-01334

Page 342: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドAWS DMS ログファイルエントリの概要

"eventVersion": "1.05", "userIdentity": { "type": "AssumedRole", "principalId": "AKIAIOSFODNN7EXAMPLE:johndoe", "arn": "arn:aws:sts::123456789012:assumed-role/admin/johndoe", "accountId": "123456789012", "accessKeyId": "ASIAYFI33SINADOJJEZW", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2018-08-01T16:42:09Z" }, "sessionIssuer": { "type": "Role", "principalId": "AKIAIOSFODNN7EXAMPLE", "arn": "arn:aws:iam::123456789012:role/admin", "accountId": "123456789012", "userName": "admin" } } }, "eventTime": "2018-08-02T00:11:44Z", "eventSource": "dms.amazonaws.com", "eventName": "RebootReplicationInstance", "awsRegion": "us-east-1", "sourceIPAddress": "72.21.198.64", "userAgent": "console.amazonaws.com", "requestParameters": { "forceFailover": false, "replicationInstanceArn": "arn:aws:dms:us-east-1:123456789012:rep:EX4MBJ2NMRDL3BMAYJOXUGYPUE" }, "responseElements": { "replicationInstance": { "replicationInstanceIdentifier": "replication-instance-1", "replicationInstanceStatus": "rebooting", "allocatedStorage": 50, "replicationInstancePrivateIpAddresses": [ "172.31.20.204" ], "instanceCreateTime": "Aug 1, 2018 11:56:21 PM", "autoMinorVersionUpgrade": true, "engineVersion": "2.4.3", "publiclyAccessible": true, "replicationInstanceClass": "dms.t2.medium", "availabilityZone": "us-east-1b", "kmsKeyId": "arn:aws:kms:us-east-1:123456789012:key/f7bc0f8e-1a3a-4ace-9faa-e8494fa3921a", "replicationSubnetGroup": { "vpcId": "vpc-1f6a9c6a", "subnetGroupStatus": "Complete", "replicationSubnetGroupArn": "arn:aws:dms:us-east-1:123456789012:subgrp:EDHRVRBAAAPONQAIYWP4NUW22M", "subnets": [ { "subnetIdentifier": "subnet-cbfff283", "subnetAvailabilityZone": { "name": "us-east-1b" }, "subnetStatus": "Active" }, { "subnetIdentifier": "subnet-d7c825e8", "subnetAvailabilityZone": { "name": "us-east-1e" },

API バージョン API Version 2016-01-01335

Page 343: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドAWS DMS ログファイルエントリの概要

"subnetStatus": "Active" }, { "subnetIdentifier": "subnet-6746046b", "subnetAvailabilityZone": { "name": "us-east-1f" }, "subnetStatus": "Active" }, { "subnetIdentifier": "subnet-bac383e0", "subnetAvailabilityZone": { "name": "us-east-1c" }, "subnetStatus": "Active" }, { "subnetIdentifier": "subnet-42599426", "subnetAvailabilityZone": { "name": "us-east-1d" }, "subnetStatus": "Active" }, { "subnetIdentifier": "subnet-da327bf6", "subnetAvailabilityZone": { "name": "us-east-1a" }, "subnetStatus": "Active" } ], "replicationSubnetGroupIdentifier": "default-vpc-1f6a9c6a", "replicationSubnetGroupDescription": "default group created by console for vpc id vpc-1f6a9c6a" }, "replicationInstanceEniId": "eni-0d6db8c7137cb9844", "vpcSecurityGroups": [ { "vpcSecurityGroupId": "sg-f839b688", "status": "active" } ], "pendingModifiedValues": {}, "replicationInstancePublicIpAddresses": [ "18.211.48.119" ], "replicationInstancePublicIpAddress": "18.211.48.119", "preferredMaintenanceWindow": "fri:22:44-fri:23:14", "replicationInstanceArn": "arn:aws:dms:us-east-1:123456789012:rep:EX4MBJ2NMRDL3BMAYJOXUGYPUE", "replicationInstanceEniIds": [ "eni-0d6db8c7137cb9844" ], "multiAZ": false, "replicationInstancePrivateIpAddress": "172.31.20.204", "patchingPrecedence": 0 } }, "requestID": "a3c83c11-95e8-11e8-9d08-4b8f2b45bfd5", "eventID": "b3c4adb1-e34b-4744-bdeb-35528062a541", "eventType": "AwsApiCall", "recipientAccountId": "123456789012"}

API バージョン API Version 2016-01-01336

Page 344: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイド

AWS DMS タスクの検証トピック

• レプリケーションタスクの統計 (p. 338)• タスク実行中のテーブル再検証 (p. 340)• トラブルシューティング (p. 340)• 制約事項 (p. 341)

AWS DMS は、データがソースからターゲットに正確に移行されたことを確認するため、データ検証のサポートを提供します。タスクに対してこれを有効にすると、AWS DMS は、テーブルに対して全ロードが実行された後で、ソースデータとターゲットデータの比較をすぐに開始します。

データ検証はオプションです。AWS DMS はソースレコードとターゲットレコードを比較し、不一致があるとそれを報告します。さらに AWS DMS は、CDC が有効なタスクについては、増分変更を比較し、不一致があるとそれを報告します。

データの検証中に AWS DMS はソースの各行をターゲットの対応する行と比較し、それらの行に同じデータが含まれていることを確認します。AWS DMS は、これを達成するため、適切なクエリを実行してデータを取得します。これらのクエリは、ソースとターゲットでその他のリソースと、その他のネットワークリソースを消費します。

データ検証は、AWS DMS がソースとターゲットのエンドポイントでサポートしている次のデータベースで動作します。

• Oracle• PostgreSQL• MySQL• MariaDB• Microsoft SQL Server• Amazon Aurora (MySQL)• Amazon Aurora (PostgreSQL)

サポートされているエンドポイントの詳細については、「AWS DMS エンドポイントの使用 (p. 86)」を参照してください。

データの検証には、移行自体に必要な時間以外にも、さらに時間がかかります。必要な追加の時間は、移行されたデータの量によって異なります。

データの検証設定には、以下のものが含まれます。

• EnableValidation – データ検証を有効または無効にします。• FailureMaxCount – 検証がタスクを停止する前に、検証を失敗できるレコードの最大数を指定しま

す。• HandleCollationDiff – 比較するソースレコードとターゲットレコードが識別される

と、PostgreSQL エンドポイントでの列照合の違いが考慮されます。• RecordFailureDelayLimitInMinutes – 検証失敗の詳細を報告する前に遅延を指定します。• TableFailureMaxCount – 検証がタスクを停止する前に、検証を失敗できるテーブルの最大数を指定

します。• ThreadCount – 検証中に AWS DMS が使用する実行スレッドの数を調整します。

API バージョン API Version 2016-01-01337

Page 345: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドレプリケーションタスクの統計

• ValidationOnly – 一切のデータの移行あるいはレプリケーションを実行せずに、タスクの検証をプレビューします。

たとえば、次の JSON は検証を有効にし、スレッドの数を 8 に増加して、検証が失敗したすべてのテーブルを中断します。

ValidationSettings": { "EnableValidation":true, "ThreadCount":8, "TableFailureMaxCount":1}

これらの設定の詳細については、「 データ検証タスクの設定 (p. 270)」を参照してください。

レプリケーションタスクの統計データ検証が有効になっている場合、AWS DMS はテーブルレベルで以下の統計情報を提供します。

• ValidationState — テーブルの検証状態。このパラメータには以下の値があります。• Not enabled — 移行タスクでテーブルに対して検証が有効化されていません。• Pending records — テーブル内の一部のレコードが、検証を待機しています。• Mismatched records — テーブル内の一部のレコードが、ソースとターゲット間で一致しません。さま

ざまな理由により、不一致が発生することがあります。詳細については、ターゲットエンドポイントの awsdms_validation_failures を確認してください。

• Suspended records — テーブル内に検証できないレコードがあります。• No primary key — テーブルにプライマリキーがないため、検証できません。• Table error — テーブルがエラー状態で一部のデータが移行されなかったため、テーブルは検証されま

せんでした。• Validated — テーブル内のすべての行が検証されます。テーブルが更新された場合、ステータスは

[Validated] から変わる可能性があります。• Error — 予期しないエラーが発生したため、テーブルを検証できません。

• ValidationPending — ターゲットに移行されたが、まだ検証されていないレコードの数。

ValidationSuspended — AWS DMS が比較することができないレコードの数。たとえば、ソースのレコードが頻繁に更新されている場合、AWS DMS は、ソースとターゲットを比較できません。詳細については、「エラー処理タスクの設定 (p. 276)」を参照してください。

• ValidationFailed — データの検証フェーズに合格しなかったレコードの数。詳細については、「エラー処理タスクの設定 (p. 276)」を参照してください。

• ValidationSucceededRecordCount — AWS DMS が検証した 1 分あたりの行数。• ValidationAttemptedRecordCount — 検証が試行された行の 1 分あたりの数。• ValidationFailedOverallCount — 検証が失敗した行の数。• ValidationSuspendedOverallCount — 検証が停止された行の数。• ValidationPendingOverallCount — 検証がまだ保留中の行の数。• ValidationBulkQuerySourceLatency — AWS DMS は、特に多くの変更がある場合に全ロード中または継

続的なレプリケーション中の特定のシナリオで、データの検証を一括して実行できます。このメトリックスは、ソースエンドポイントから大量のデータを読み取るために必要なレイテンシーを示します。

• ValidationBulkQueryTargetLatency — AWS DMS は、特に多くの変更がある場合に全ロード中または継続的なレプリケーション中の特定のシナリオで、データの検証を一括して実行できます。このメトリックスは、ターゲットエンドポイントの大量のデータを読み取るために必要なレイテンシーを示します。

API バージョン API Version 2016-01-01338

Page 346: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドレプリケーションタスクの統計

• ValidationItemQuerySourceLatency — 継続的なレプリケーションでは、データ検証によって継続的な変更を識別し、それらの変更を検証できます。このメトリックスは、変更をソースから読み取る際のレイテンシーを示します。検証中にエラーが発生した場合、検証では必要な数以上のクエリを実行できます。

• ValidationItemQueryTargetLatency — 継続的なレプリケーションでは、データ検証によって継続的な変更を識別し、それらの変更を行ごとに検証できます。このメトリックスは、変更をターゲットから読み取る際のレイテンシーを示します。検証中にエラーが発生した場合、検証では必要な数以上のクエリが実行される場合があります。

データ検証情報を表示するには、 コンソール、AWS CLI、または AWS DMS API を使用できます。

• コンソールで、タスクを作成または変更するときにタスクの検証を選択できます。コンソールを使用してデータ検証レポートを表示するには、[Tasks] ページでタスクを選択し、詳細セクションの [Tablestatistics] タブを選択します。

• CLI を使用して、タスクを作成または変更してデータ検証を開始するときに、EnableValidation パラメータを true に設定します。以下の例では、タスクを作成し、データ検証を有効にします。

create-replication-task --replication-task-settings '{"ValidationSettings":{"EnableValidation":true}}' --replication-instance-arn arn:aws:dms:us-east-1:5731014: rep:36KWVMB7Q --source-endpoint-arn arn:aws:dms:us-east-1:5731014: endpoint:CSZAEFQURFYMM --target-endpoint-arn arn:aws:dms:us-east-1:5731014: endpoint:CGPP7MF6WT4JQ --migration-type full-load-and-cdc --table-mappings '{"rules": [{"rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": {"schema-name": "data_types", "table-name": "%"}, "rule-action": "include"}]}'

describe-table-statistics コマンドを使用して、JSON 形式でデータ検証レポートを受け取ります。以下のコマンドでは、データ検証レポートを表示します。

aws dms describe-table-statistics --replication-task-arn arn:aws:dms:us-east-1:5731014:rep:36KWVMB7Q

このレポートは以下の例のようになります。

{ "ReplicationTaskArn": "arn:aws:dms:us-west-2:5731014:task:VFPFTYKK2RYSI", "TableStatistics": [ { "ValidationPendingRecords": 2, "Inserts": 25, "ValidationState": "Pending records", "ValidationSuspendedRecords": 0, "LastUpdateTime": 1510181065.349, "FullLoadErrorRows": 0, "FullLoadCondtnlChkFailedRows": 0, "Ddls": 0, "TableName": "t_binary", "ValidationFailedRecords": 0, "Updates": 0, "FullLoadRows": 10, "TableState": "Table completed", "SchemaName": "d_types_s_sqlserver", "Deletes": 0 }

API バージョン API Version 2016-01-01339

Page 347: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドタスク実行中のテーブル再検証

}

• AWS DMS API を使用し、[CreateReplicationTask] アクションを使ってタスクを作成します。次に、EnableValidation パラメータを true に設定して、タスクによって移行されたデータを検証します。DescribeTableStatistics アクションを使用して、JSON 形式でデータ検証レポートを受け取ります。

タスク実行中のテーブル再検証タスクを実行中に、AWS DMS がデータ検証を実行するようにリクエストできます。

AWS マネジメントコンソール1. AWS マネジメントコンソール にサインインして AWS DMS を選択します。AWS Identity and Access

Management (IAM) ユーザーとしてサインインしている場合、AWS DMS にアクセスするには適切なアクセス許可が必要です。必要なアクセス権限の詳細については、「AWS DMS を使用するのに必要な IAM アクセス許可 (p. 33)」を参照してください。

2. ナビゲーションペインから [Tasks] を選択します。3. 再検証するテーブルを含む実行中のタスクを選択します。4. [テーブル統計] タブを選択します。5. 再検証するテーブルを選択します (一度に最大 10 個のテーブルを選択できます)。タスクがすでに実行

されていない場合は、テーブルを再検証できません。6. [Revalidate (再検証)] を選択します。

トラブルシューティング検証中に、AWS DMS はターゲットエンドポイント awsdms_validation_failures_v1 に新しいテーブルを作成します。レコードが ValidationSuspended または ValidationFailed 状態になった場合、AWSDMS は診断情報を awsdms_validation_failures_v1 に書き込みます。このテーブルをクエリすることで、検証エラーをトラブルシューティングすることができます。

以下に、awsdms_validation_failures_v1 テーブルの説明を示します。

列名 データ型 説明

TASK_NAME VARCHAR(128)NOT NULL

AWS DMS タスク識別子。

TABLE_OWNERVARCHAR(128)NOT NULL

テーブルのスキーマ (所有者)。

TABLE_NAMEVARCHAR(128)NOT NULL

テーブル名。

FAILURE_TIMEDATETIME(3)NOT NULL

イベントが失敗した時刻。

KEY TEXT NOT NULL これは行レコードタイプのプライマリキーです。

FAILURE_TYPEVARCHAR(128)NOT NULL

検証エラーの重大度。Failed または Suspended とすることができます。

API バージョン API Version 2016-01-01340

Page 348: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイド制約事項

以下のクエリでは、awsdms_validation_failures_v1 テーブルに対してクエリを実行して、タスクのすべての失敗を表示します。タスク名は、タスクの外部リソース ID である必要があります。タスクの外部リソース ID は、タスク ARN の最後の値です。たとえば、ARN 値が arn:aws:dms:us-west-2:5599:task:VFPFKH4FJR3FTYKK2RYSI のタスクの場合、タスクの外部リソース ID は VFPFKH4FJR3FTYKK2RYSIとなります。

select * from awsdms_validation_failures_v1 where TASK_NAME = 'VFPFKH4FJR3FTYKK2RYSI'

失敗したレコードのプライマリキーを入手したら、ソースエンドポイントとターゲットエンドポイントをクエリし、レコードの一致しない部分を確認できます。

制約事項• データ検証では、テーブルにプライマリキーまたは一意のインデックスがなければなりません。

• プライマリキー列の型を CLOB、BLOB、または BYTE に設定することはできません。• 型が VARCHAR または CHAR であるプライマリキー列の場合、長さは 1024 未満にする必要がありま

す。• ターゲット PostgreSQL インスタンスのプライマリキー列の照合が「C」に設定されていない場合、

プライマリキーと Oracle ではソート順が異なります。PostgreSQL と Oracle でソート順序が異なる場合、データ検証でレコードの検証に失敗します。

• データ検証では、ソースデータベースとターゲットデータベースに対して追加のクエリが生成されます。両方のデータベースに、この追加の負荷を処理するための十分なリソースがあることを確認する必要があります。

• 移行でカスタマイズされたフィルタリングを使用する場合や、複数のデータベースを 1 つに統合する際、データ移行はサポートされません。

• ソースまたはターゲット Oracle エンドポイントの場合、AWS DMS は DBMS_CRYPTO を使用してBLOB を検証します。Oracle エンドポイントで BLOB を使用する場合は、Oracle エンドポイントにアクセスするために使用されるユーザーアカウントに、dbms_crypto での実行権限を付与する必要があります。これを行うには、以下のステートメントを実行します。

grant execute on sys.dbms_crypto to <dms_endpoint_user>;

• 検証中にターゲットデータベースが AWS DMS 外部で変更された場合、不整合は正確に報告されない可能性があります。これは、AWS DMS によってターゲットテーブルで検証が実行されている際に、いずれかのアプリケーションがそのテーブルにデータを書き込む場合に発生する可能性があります。

• 1 つまたは複数の行が検証中に継続的に変更される場合、AWS DMS はそれらの行を検証することができません。ただし、タスクの完了後に、それらの行を手動で検証することができます。

• AWS DMS が 10,000 以上の失敗または停止されたレコードを検出した場合、検証は中止されます。先に進む前に、データの根本的な問題を解決する必要があります。

API バージョン API Version 2016-01-01341

Page 349: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイド

AWS Database Migration Service でのリソースへのタグ付け

AWS Database Migration Service (AWS DMS) のタグを使用して、リソースにメタデータを追加できます。また、これらのタグを AWS Identity and Access Management (IAM) ポリシーで使用して、AWS DMSリソースへのアクセスを管理したり、AWS DMS リソースに適用できるアクションを制御したりできます。最後に、これらのタグを使用して、類似のリソースの費用をグループ化することで、コストを追跡できます。

以下のすべての AWS DMS リソースにタグを付けることができます。

• レプリケーションインスタンス• エンドポイント• レプリケーションタスク• 証明書

AWS DMS タグは、AWS DMS リソースを定義してそのリソースに関連付ける名前と値のペアです。その名前はキーと呼ばれます。キーの値の指定は省略可能です。タグを使用して、AWS DMS リソースに任意の情報を割り当てることができます。たとえば、タグキーを使用してカテゴリを定義し、タグ値をそのカテゴリのアイテムにすることができます。具体的には、「project」というタグキーと「Salix」というタグ値を定義して、AWS DMS リソースが Salix プロジェクトに割り当てられていることを示すことができます。また、タグキーとして environment=test や environment=production などを使用して、AWS DMS リソースがテスト用なのか本稼働用なのかを示すこともできます。AWS DMS リソースに関連付けられているメタデータの追跡が簡単になるように、一貫した一連のタグキーを使用することをお勧めします。

タグを使用して、ユーザー独自のコスト構造を反映するように AWS 請求を整理します。そのためには、AWS アカウントにサインアップして、タグキー値が含まれた AWS アカウントの請求書を取得する必要があります。次に、結合したリソースのコストを見るには、同じタグキー値のリソースに従って請求書情報を整理します。たとえば、複数のリソースに特定のアプリケーション名のタグを付け、請求情報を整理することで、複数のサービスを利用しているアプリケーションの合計コストを確認することができます。詳細については、AWS 請求情報とコスト管理情報についての「コスト配分とタグ付け」を参照してください。

各 AWS DMS リソースにはタグセットがあり、それぞれの AWS DMS リソースに割り当てられているすべてのタグが含まれています。タグセットには、最大 10 個のタグを格納でき、空にすることもできます。AWS DMS リソースに追加したタグのキーがそのリソースの既存のタグのキーと同じ場合、既存の値は新しい値によって上書きされます。

AWS はタグに関連する意味を適用しません。タグはキャラクタ文字列として厳密に解釈されます。AWSDMS は、リソース作成時の設定に応じて、AWS DMS リソースにタグを設定する場合があります。

AWS DMS タグの特徴は以下のとおりです。

• タグキーは、必須のタグ名です。文字列値は、1〜128 文字の Unicode 文字です。「aws:」または「dms:」をプレフィックスとして使用することはできません。文字列には、一連の Unicode 文字、数字、空白、「_」、「.」、「/」、「=」、「+」、「-」(Java 正規表現: "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-]*)$)だけが含まれます。

• タグ値は、タグの省略可能な文字列値です。文字列値は、1 ~ 256 文字の Unicode 文字です。「aws:」または「dms:」をプレフィックスとして使用することはできません。文字列には、一連の Unicode 文

API バージョン API Version 2016-01-01342

Page 350: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドAPI

字、数字、空白、「_」、「.」、「/」、「=」、「+」、「-」(Java 正規表現: "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-]*)$) だけが含まれます。

値はタグセット内で一意である必要はなく、null を指定できます。例えば、project/Trinity と cost-center/Trinity のタグセット内に 1 つのキーと値のペアを使用できます。

AWS CLI、あるいは AWS DMS API を使用して、AWS DMS リソースにタグの追加、一覧表示あるいは削除ができます。AWS CLI または AWS DMS API を使用するときは、操作する AWS DMS リソースのAmazon リソースネーム (ARN) を指定する必要があります。ARN の作成の詳細については、「AWS DMSの Amazon リソースネーム (ARN) の構築 (p. 14)」を参照してください。

タグはリソース承認用にキャッシュに格納されます。そのため、AWS DMS リソースに対するタグの追加や更新には数分かかることがあります。

APIAWS DMS API を使用して AWS DMS リソースのタグを追加、一覧表示、または削除できます。

• AWS DMS リソースにタグを追加するには、AddTagsToResource オペレーションを使用します。• AWS DMS リソースに割り当てられているタグを一覧表示するには、ListTagsForResource オペ

レーションを使用します。• AWS DMS リソースからタグを削除するには、RemoveTagsFromResource オペレーションを使用しま

す。

必要な ARN を作成する方法の詳細については、「AWS DMS の Amazon リソースネーム (ARN) の構築 (p. 14)」を参照してください。

AWS DMS API を使用して XML を操作する場合、タグでは以下のスキーマを使用します。

<Tagging> <TagSet> <Tag> <Key>Project</Key> <Value>Trinity</Value> </Tag> <Tag> <Key>User</Key> <Value>Jones</Value> </Tag> </TagSet></Tagging>

以下の表に示しているのは、使用可能な XML タグとその特性のリストです。キーと値では大文字と小文字が区別されます。たとえば、project=Trinity と PROJECT=Trinity は 2 つの別個のタグです。

タグ付け要素 説明

タグセット タグセットは、Amazon RDS リソースに割り当てられるすべてのタグのコンテナーです。リソースごとに割り当て可能なのは 1 つのタグセットのみです。AWS DMS API によってのみタグセットを操作できます。

Tag タグはユーザー定義のキーと値のペアです。1 ~ 10 個のタグをタグセットに含めることができます。

API バージョン API Version 2016-01-01343

Page 351: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドAPI

タグ付け要素 説明

キー キーはタグの必須の名前です。文字列値は、1 ~ 128 文字の Unicode 文字です。「dms:」または「aws:」をプレフィックスとして使用することはできません。文字列には、一連の Unicode 文字、数字、空白、「_」、「.」、「/」、「=」、「+」、「-」(Java 正規表現: "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-]*)$)だけが含まれます。

キーはタグセットに対して一意である必要があります。たとえば、タグセットでキーが同じで値が異なるキーと値のペアは使用できません。たとえば、project/Trinity や project/Xanadu は使用できません。

値 値はタグの省略可能な値です。文字列値は、1 ~ 256 文字の Unicode 文字です。「dms:」または「aws:」をプレフィックスとして使用することはできません。文字列には、一連の Unicode 文字、数字、空白、「_」、「.」、「/」、「=」、「+」、「-」(Java 正規表現: "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-]*)$)だけが含まれます。

値はタグセット内で一意である必要はなく、null を指定できます。例えば、project/Trinity と cost-center/Trinity のタグセット内に 1 つのキーと値のペアを使用できます。

API バージョン API Version 2016-01-01344

Page 352: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイド

AWS Database Migration Service のイベントと通知の使用

AWS Database Migration Service (AWS DMS) は Amazon Simple Notification Service (Amazon SNS) を使用して、AWS DMS イベントが発生したときに (レプリケーションインスタンスが作成されたときや削除されたときなどに) 通知を送信します。これらの通知は、E メールメッセージ、テキストメッセージ、HTTP エンドポイントの呼び出しなど、AWS リージョン用に Amazon SNS でサポートされているいずれの形式でも使用できます。

AWS DMS は、サブスクライブ可能なカテゴリにイベントをグループ分けします。これにより、そのカテゴリのイベントが発生すると、通知を受け取ることができます。たとえば、特定のレプリケーションインスタンスの作成カテゴリにサブスクライブした場合は、レプリケーションインスタンスに影響を与える作成関連のイベントが発生するたびに通知を受け取ります。レプリケーションインスタンスの設定変更カテゴリにサブスクライブした場合は、レプリケーションインスタンスの設定が変更されると、通知を受け取ります。また、イベント通知サブスクリプションが変更されても、通知を受け取ります。AWS DMS に用意されているイベントカテゴリのリストについては、以下の「AWS DMS イベントのカテゴリおよびイベントメッセージ (p. 346)」を参照してください。

AWS DMS は、イベントサブスクリプションを作成するときに指定したアドレスにイベント通知を送信します。いくつかの異なるサブスクリプションを作成することもできます。たとえば、すべてのイベント通知を受け取るサブスクリプションと、本稼働環境の DMS リソースに関する重要なイベントのみを含むサブスクリプションを作成できます。AWS DMS コンソールで [Enabled (有効)] オプションを [No (いいえ)]に設定するか、AWS DMS API を使用して Enabled パラメータを [false] に設定することで、サブスクリプションを削除せずに通知を簡単に無効にすることができます。

Note

SMS テキストメッセージを使用した AWS DMS イベント通知は現在、AWS DMS がサポートされているすべてのリージョンで AWS DMS リソースで使用できます。SNS によるテキストメッセージの使用の詳細については、「Amazon SNS を使用した SMS 通知の送信と受信」を参照してください。

AWS DMS では、サブスクリプション識別子を使用して各サブスクリプションが識別されます。複数のAWS DMS イベントサブスクリプションを同じ Amazon SNS トピックに公開できます。イベント通知を使用する場合は、Amazon SNS 料金が適用されます。Amazon SNS の請求の詳細については、「AmazonSNS 料金表」を参照してください。

AWS DMS イベントにサブスクライブするには、以下のプロセスを使用します。

1. Amazon SNS トピックを作成します。トピックでは、受け取る通知のタイプと、通知先のアドレスまたは番号を指定します。

2. AWS マネジメントコンソール、AWS CLI、または AWS DMS API を使用して、AWS DMS イベント通知サブスクリプションを作成します。

3. サブスクリプションの作成で指定したアドレス宛てに、AWS DMS から承認の E メールまたは SMSメッセージが送信されます。サブスクリプションを確認するには、承認の E メールまたは SMS メッセージのリンクをクリックします。

4. サブスクリプションを確認すると、AWS DMS コンソールの [Event Subscriptions (イベントサブスクリプション)] セクションで、サブスクリプションのステータスが更新されます。

5. その後、イベント通知を受け取り始めます。

通知できるカテゴリとイベントのリストについては、次のセクションを参照してください。AWS DMS イベントサブスクリプションおよび使用方法の詳細については、「AWS DMS イベント通知へサブスクライブする (p. 348)」を参照してください。

API バージョン API Version 2016-01-01345

Page 353: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドAWS DMS イベントのカテゴリおよびイベントメッセージ

AWS DMS イベントのカテゴリおよびイベントメッセージ

AWS DMS では、AWS DMS コンソールまたは AWS DMS API を使用してサブスクライブできるカテゴリ内で多数のイベントが生成されます。各カテゴリはソースタイプに適用されます。AWS DMS では現在、レプリケーションインスタンスとレプリケーションタスクのソースタイプがサポートされています。

以下の表では、レプリケーションインスタンスソースタイプの可能なカテゴリとイベントを示しています。

カテゴリ DMS イベント ID 説明

設定変更 DMS-EVENT-0012 REP_INSTANCE_CLASS_CHANGING – このレプリケーションインスタンスのレプリケーションインスタンスクラスが変更中です。

設定変更 DMS-EVENT-0014 REP_INSTANCE_CLASS_CHANGE_COMPLETE – このレプリケーションインスタンスのレプリケーションインスタンスクラスが変更されました。

設定変更 DMS-EVENT-0018 BEGIN_SCALE_STORAGE – レプリケーションインスタンスのストレージが増加中です。

設定変更 DMS-EVENT-0017 FINISH_SCALE_STORAGE – レプリケーションインスタンスのストレージが増加しました。

設定変更 DMS-EVENT-0024 BEGIN_CONVERSION_TO_HIGH_AVAILABILITY – レプリケーションインスタンスがマルチ AZ 設定に移行中です。

設定変更 DMS-EVENT-0025 FINISH_CONVERSION_TO_HIGH_AVAILABILITY – レプリケーションインスタンスがマルチ AZ 設定に移行されました。

設定変更 DMS-EVENT-0030 BEGIN_CONVERSION_TO_NON_HIGH_AVAILABILITY– レプリケーションインスタンスがシングル AZ 設定に移行中です。

設定変更 DMS-EVENT-0029 FINISH_CONVERSION_TO_NON_HIGH_AVAILABILITY– レプリケーションインスタンスがシングル AZ 設定に移行されました。

作成 DMS-EVENT-0067 CREATING_REPLICATION_INSTANCE – レプリケーションインスタンスが作成中です。

作成 DMS-EVENT-0005 CREATED_REPLICATION_INSTANCE – レプリケーションインスタンスが作成されました。

削除 DMS-EVENT-0066 DELETING_REPLICATION_INSTANCE – レプリケーションインスタンスが削除中です。

削除 DMS-EVENT-0003 DELETED_REPLICATION_INSTANCE – レプリケーションインスタンスが削除されました。

メンテナンス DMS-EVENT-0047 FINISH_PATCH_INSTANCE – レプリケーションインスタンスの管理ソフトウェアが更新されました。

API バージョン API Version 2016-01-01346

Page 354: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドAWS DMS イベントのカテゴリおよびイベントメッセージ

カテゴリ DMS イベント ID 説明

メンテナンス DMS-EVENT-0026 BEGIN_PATCH_OFFLINE – レプリケーションインスタンスのオフラインメンテナンスが実行中です。レプリケーションインスタンスは現在使用できません。

メンテナンス DMS-EVENT-0027 FINISH_PATCH_OFFLINE – レプリケーションインスタンスのオフラインメンテナンスが完了しました。レプリケーションインスタンスは現在使用できます。

メンテナンス DMS-EVENT-0068 CANNOT_PATCH_INSTANCE – レプリケーションインスタンスがアップグレードできない状態にあります。

LowStorage DMS-EVENT-0007 LOW_STORAGE – レプリケーションインスタンスの空きストレージが少なくなっています。

フェイルオーバー DMS-EVENT-0013 FAILOVER_STARTED – マルチ AZ レプリケーションインスタンスのフェイルオーバーが開始されました。

フェイルオーバー DMS-EVENT-0049 FAILOVER_COMPLETED – マルチ AZ レプリケーションインスタンスのフェイルオーバーが完了しました。

フェイルオーバー DMS-EVENT-0015 HM_SECONDARY_PROMOTION_COMPLETE – マルチ AZ フェイルオーバーを完了できます。

フェイルオーバー DMS-EVENT-0050 MAZ_INSTANCE_ACTIVATION_STARTED – マルチAZ アクティベーションが開始されました。

フェイルオーバー DMS-EVENT-0051 MAZ_INSTANCE_ACTIVATION_COMPLETED – マルチ AZ アクティベーションが完了しました。

フェイルオーバー DMS-EVENT-0034 FAILOVER_RECENTLY_OCCURED – 必要以上に頻繁にフェイルオーバーをリクエストした場合、通常のフェイルオーバーイベントの代わりにこのイベントが発生します。

失敗 DMS-EVENT-0031 REPLICATION_INSTANCE_FAILURE – レプリケーションインスタンスでストレージの障害が発生しました。

失敗 DMS-EVENT-0036 INCOMPATIBLE_NETWORK – 互換性のないネットワークのためレプリケーションインスタンスで障害が発生しました。

失敗 DMS-EVENT-0037 INACCESSIBLE_ENCRYPTION_CREDS – データボリュームの暗号化に使用する KMS キーにサービスがアクセスできない場合です。

以下の表では、レプリケーションタスクソースタイプの可能なカテゴリとイベントを示しています。

カテゴリ DMS イベント ID 説明

StateChange DMS-EVENT-0069 REPLICATION_TASK_STARTED – レプリケーションタスクが開始されました。

StateChange DMS-EVENT-0077 REPLICATION_TASK_CDC_STARTED – レプリケーションタスクで CDC が開始されました。

API バージョン API Version 2016-01-01347

Page 355: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドAWS DMS イベント通知へサブスクライブする

カテゴリ DMS イベント ID 説明

StateChange DMS-EVENT-0081 RELOAD_TABLES_EVENT – テーブル詳細の再ロードがリクエストされました。

StateChange DMS-EVENT-0079 REPLICATION_TASK_STOPPED – レプリケーションタスクが停止されました。

失敗 DMS-EVENT-0078 REPLICATION_TASK_FAILED – レプリケーションタスクが失敗しました。

失敗 DMS-EVENT-0082 CLEAN_TASK_FAILED – タスクデータ消去への呼び出しが失敗しました。

ConfigurationChangeDMS-EVENT-0080 REPLICATION_TASK_MODIFIED – レプリケーションタスクが変更されています。

削除 DMS-EVENT-0073 REPLICATION_TASK_DELETED – レプリケーションタスクが削除されました。

作成 DMS-EVENT-0074 REPLICATION_TASK_CREATED – レプリケーションタスクが作成されました。

AWS DMS イベント通知へサブスクライブするAWS DMS イベント通知サブスクリプションを作成して、AWS DMS イベントが発生したときに通知を受け取るようにできます。サブスクリプションを作成する最も簡単な方法は、AWS DMS コンソールを使用する方法です。AWS DMS API を使用してイベント通知サブスクリプションを作成する場合、AmazonSNS トピックを作成し、Amazon SNS コンソールまたは API を使用してそのトピックにサブスクライブする必要があります。この場合、トピックの Amazon リソースネーム (ARN) も記録しておく必要があります。この ARN は、CLI コマンドまたは API アクションを送信するときに使用するためです。AmazonSNS トピックを作成してサブスクライブする方法については、「Amazon SNS の開始方法」を参照してください。

通知サブスクリプションでは、通知するソースのタイプと、イベントをトリガーする AWS DMS ソースを指定できます。SourceType 値を使用して、AWS DMS ソースタイプを定義します。SourceIdentifier 値を使用して、イベントを生成するソースを定義します。[SourceType] と [SourceIdentifier] を、SourceType= db-instance と SourceIdentifier = myDBInstance1 などに指定すると、指定したソースに関するすべての DB_Instance イベントの通知を受け取ります。SourceType を指定しても、SourceIdentifierを指定しない場合は、すべての AWS DMS ソースについて、指定したソースタイプのイベントの通知を受け取ります。SourceType も SourceIdentifier も指定しない場合は、お客様のアカウントに属するすべてのAWS DMS ソースから生成されたイベントの通知を受け取ります。

AWS マネジメントコンソールコンソールを使用して AWS DMS イベント通知にサブスクライブするには

1. AWS マネジメントコンソールにサインインし、[AWS DMS] を選択します。AWS Identity and AccessManagement (IAM) ユーザーとしてサインインしている場合は、AWS DMS にアクセスするための適切なアクセス許可が必要です。

2. 左のナビゲーションペインで、[Event Subscriptions] を選択します。3. [Event Subscriptions] ページで、[Create Event Subscription] を選択します。4. [Create Event Subscription] ページで、以下の操作を行います。

a. [Name] に、イベント通知サブスクリプションの名前を入力します。

API バージョン API Version 2016-01-01348

Page 356: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドAWS DMS API

b. [Send notifications to (通知の送信先)] 用の既存の Amazon SNS トピックを選択するか、[createtopic (トピックを作成)] を選択します。通知の送信先として、既存の Amazon SNS トピックを使用するか、トピックを作成する必要があります。[create topic] を選択した場合、通知の送信先のE メールアドレスを入力できます。

c. [Source Type] で、ソースタイプを選択します。選択できるのは、[replication instance] のみです。

d. [Yes] を選択して、サブスクリプションを有効にします。サブスクリプションを作成しても、通知はまだ送信しない場合は、[No] を選択します。

e. 選択したソースタイプに応じて、イベント通知を受け取る対象となるイベントカテゴリとソースを選択します。

f. [Create] を選択します。

AWS DMS コンソールでは、サブスクリプションが作成されることが示されます。

AWS DMS APIAWS DMS API を使用して AWS DMS イベント通知にサブスクライブするには

• CreateEventSubscription を呼び出します。

API バージョン API Version 2016-01-01349

Page 357: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイド

AWS Database Migration Service とAWS Snowball Edge を使用した大規模データストアの移行

大規模データの移行には数テラバイトの情報が含まれることがあります。このプロセスは、ネットワークの帯域幅制限だけでなく膨大な量のデータというだけでも面倒な作業になることがあります。AWSDatabase Migration Service (AWS DMS) は、AWS Snowball Edge と Amazon S3 を使用して、他の方法に比べてより高速に大規模データベースを移行することができます。

AWS Snowball Edge は、ネットワークよりも早い速度でクラウド上にデータを転送するために使用できる Edge デバイスを提供する AWS のサービスです。Edge デバイスは AWS が所有するアプライアンスです。このデバイスは 100 TB までのデータを保持できます。256 ビットの暗号化、およびデータのセキュリティと完全な保管継続性を確保するための業界標準であるトラステッドプラットフォームモジュール(TPM) を使用します。AWS Snowball Edge には多くの追加機能が用意されています。詳細については、『AWS Snowball Edge 開発者ガイド』の「AWS Snowball Edge とは」を参照してください。

Amazon S3 は AWS のストレージおよび取得サービスです。Amazon S3 にオブジェクトを保管するには、バケットに保管するファイルをアップロードします。ファイルをアップロードする際に、オブジェクトだけにではなく、いずれのメタデータにも権限を設定することができます。詳細については、S3 ドキュメントを参照してください。

Edge デバイスを使用する際、データ移行プロセスには以下のステージが含まれます。

1. AWS Schema Conversion Tool (AWS SCT) を使用して、データをローカルに摘出して Edge デバイスに移動します。

2. Edge デバイスは送付するか、または AWS にデバイスを返送します。3. AWS が送付物を受け取ると、Edge デバイスは自動的にデータを Amazon S3 バケットにロードしま

す。4. AWS DMS はファイルを受け取り、データをターゲットデータストアに移行します。変更データキャプ

チャ (CDC) を使用している場合、これらの更新は Amazon S3 バケットに書き込まれてからターゲットデータストアに適用されます。

このセクションでは、Edge デバイスを使用して AWS SCT および AWS DMS でリレーショナルデータベースを移行する方法について学習できます。また、Edge デバイスと AWS SCT を使用して、オンプレミスデータウェアハウスを AWS クラウドに移行することもできます。データウェアハウスの移行に関する詳細は、『AWS Schema Conversion Tool ユーザーガイド』の「オンプレミスデータウェアハウスからAmazon Redshift へのデータの移行」を参照してください。

トピック• DMS と Snowball Edge を使用した大規模データ移行の概要 (p. 351)• DMS と Snowball Edge を使用した大規模データ移行の前提条件 (p. 352)• 移行チェックリスト (p. 352)• Snowball Edge で AWS DMS を使用してデータを移行するためのステップバイステップ手順 (p. 354)• Snowball Edge および AWS DMS の使用における制限 (p. 370)

API バージョン API Version 2016-01-01350

Page 358: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドプロセスの概要

DMS と Snowball Edge を使用した大規模データ移行の概要

AWS DMS および AWS Snowball Edge を使用するプロセスには、オンプレミスアプリケーションとAmazon が管理するサービスの両方が組み込まれています。用語のローカルおよびリモートは、これらのコンポーネントを区別するために使用されます。

ローカルコンポーネントには次が含まれています。

• AWS SCT• AWS DMS エージェント (オンプレミスで作動する AWS DMS のローカルバージョン)• Snowball Edge デバイス

リモートコンポーネントには次が含まれています。

• Amazon S3• AWS DMS

以下のセクションには、1 つ以上の Edge デバイスを使用して AWS DMS 移行を設定、インストール、管理するステップバイステップガイドがあります。

次の図に示しているのは、この移行プロセスの概要です。

移行には、DMS エージェントを使用して Edge デバイスにデータを移動するローカルなタスクが含まれています。Edge デバイスがロードされたら、デバイスを AWS に返送します。複数の Edge デバイスがある場合には、一時または別々に返送することができます。AWS が Edge デバイスを受け取ると、AWS DMSを使用したリモートタスクで AWS のターゲットデータストアにデータがロードされます。

ローカルデータストアから AWS データストアに移行するには、次の手順を実行します。

1. AWS Snowball マネジメントコンソール を使用して、[Snowball Edge Storage Optimized] で S3 にデータをインポートする新しいジョブを作成します。ジョブには、お客様の住所にデバイスを送信するリクエストが含まれます。

2. AWS にアクセスできるローカルマシンで AWS SCT をセットアップします。別のローカルマシンにSnowball Edge クライアントをインストールします。

3. Edge デバイスが到着したら、電源を入れて接続し、クライアントツールでロックを解除します。ステップバイステップの手順については、『AWS Snowball Edge 開発者ガイド』の「AWS SnowballEdge の開始方法」を参照してください。

API バージョン API Version 2016-01-01351

Page 359: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイド前提条件

4. データソース用 Open Database Connectivity (ODBC) ドライバをインストールします。Edge クライアントツールがあるマシンにこれらを配置します。

5. Edge クライアントツールがあるマシンにホストされる AWS DMS エージェントをインストールして設定します。

DMS エージェントには、ソースデータベース、AWS SCT、AWS および Snowball Edge に接続できることが必要です。DMS エージェントは次の Linux プラットフォームのみでサポートされます。• Red Hat Enterprise Linux バージョン 6.2~6.8、7.0、7.1 (64 ビット)• SUSE Linux バージョン 12 (64 ビット)

DMS エージェントは AWS SCT インストールパッケージに含まれていますが、これらを同じ場所に配置しないことが最適です。DMS エージェントを別のマシン (AWS SCT がインストールされているマシンではなく) にインストールすることが推奨されます。

6. AWS SCT で新しいプロジェクトを作成します。7. Snowball Edge デバイスを使用するように AWS SCT を設定します。8. AWS SCT に DMS エージェントを登録します。9. SCT でローカルおよび DMS タスクを作成します。10.SCT でタスクを実行してモニタリングします。

DMS と Snowball Edge を使用した大規模データ移行の前提条件

移行プロセスを開始する前に、以下の前提条件を満たす必要があります。

• AWS SCT の基本操作を理解しています。• 移行のために使用する 1 つ以上の S3 バケットがある、あるいは作成できます。• S3 バケットと同じリージョンに AWS DMS レプリケーションインスタンスがあります。• AWS Command Line Interface (AWS CLI) の使用に慣れています。• Snowball Edge 開発者ガイドを理解しています。

移行チェックリスト移行中の操作を容易にするには、次のチェックリストを使用して移行中に必要な項目のリストを作成することができます。

----------------------------------------------------------------DMS Migration Checklist----------------------------------------------------------------

This checklist is for my schemas named:

The database engine that my schemas reside on is:

----------------------------------------------------------------

AWS Region for the migration:

Name of migration job that you created in the AWS Snowball Management Console:

S3 bucket (and folder) for this job:

API バージョン API Version 2016-01-01352

Page 360: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイド移行チェックリスト

IAM role that has access to the S3 Bucket and the target database on AWS:

----------------------------------------------------------------

Path to the installation directory of AWS SCT (needed for a future step):

Name/IP of Machine #1 (SCT):

Name/IP of Machine #2 (Connectivity):

----------------------------------------------------------------

IP address of your Snowball Edge:

Port for the Snowball Edge:

Unlock code for the Snowball Edge device:

Path to the manifest file:

Output of the command snowballEdge get-secret-access-key: AWS access key ID: AWS secret access Key:

----------------------------------------------------------------

Confirm ODBC drivers is installed on Machine #2 (Connectivity):

----------------------------------------------------------------

Confirm DMS Agent is installed on Machine #2 (Connectivity):

Confirm DMS Agent is running two processes:

DMS Agent password:

DMS Agent port number:

Confirm that your firewall allows connectivity:

----------------------------------------------------------------

Name of SCT project:

----------------------------------------------------------------

Confirm that DMS Agent is registered with SCT:

New agent or service profile name that you provided:

----------------------------------------------------------------

Confirm local and DMS task exists:

Task name that you provided:

----------------------------------------------------------------

Confirm:

DMS Agent connects to the following: __ The source database __ The staging S3 bucket __ The Edge device

DMS task connects to the following:

API バージョン API Version 2016-01-01353

Page 361: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドステップバイステップの手順

__ The staging S3 bucket __ The target database on AWS

----------------------------------------------------------------

Confirm the following: __ Stopped Edge client __ Powered off Edge device __ Returned Edge device to AWS

Snowball Edge で AWS DMS を使用してデータを移行するためのステップバイステップ手順

次のセクションでは、移行タイプについての詳細を説明します。

ステップ 1: Snowball Edge ジョブを作成する「Snowball Edge デバイスの開始方法」セクションに説明されている手順を実行します (AWS SnowballEdge 開発者ガイド)。AWS Snowball マネジメントコンソール を開き、[Amazon S3 へのインポート] に新しいジョブを作成します。

通常の Snowball デバイスは AWS DMS でサポートされていないため、Snowball Edge デバイス([Snowball Edge ストレージの最適化]) をリクエストしていることを確認します。残りの設定については、画面の指示に従います。ジョブを作成する前に、設定を確認する機会があります。

ステップ 2: AWS Schema Conversion Tool (AWSSCT) をダウンロードしてインストールするEdge デバイスに加えて、2 つのローカルマシンでこのプロセスを実行する必要があります。

AWS Schema Conversion Tool アプリをダウンロードして、AWS にアクセスできるローカルマシンにこれをインストールします。互換性のあるオペレーティングシステムについての情報を含む詳細については、「AWS Schema Conversion Tool のインストールと更新」を参照してください。

DMS エージェントをインストールする予定の別のマシンに、AWS Snowball Edge リソースから SnowballEdge クライアントをダウンロードしてインストールします。

このステップが完了したら、2 つのマシンがある必要があります。

• AWS SCT がインストールされたマシン 1 (SCT)• 移行するデータベース用に DMS エージェントおよび ODBC ドライバーをインストールする予定

の、Edge クライアントがある、マシン 2 (接続)

ステップ 3: Snowball Edge デバイスをロック解除するEdge デバイスが到着したら、使用の準備を行います。

『AWS Snowball Edge 開発者ガイド』の「AWS Snowball Edge デバイスの開始方法」セクションに説明されている手順を実行します。

また、AWS サポートからガイドラインツアー (AWS Snowball Edge をロック解除するには) をチェックするか、AWS Showball Edge 開始方法マーケティングページ で他のリソースを参照することもできます。

API バージョン API Version 2016-01-01354

Page 362: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドステップ 3: Snowball Edge デバイスをロック解除する

デバイスの電源を入れてローカルネットワークに接続し、Edge デバイスの IP アドレスを記録したら、Snowball Edge コンソールからロック解除コードとマニフェストファイルを取得します。コンソールで、使用するジョブ、[ジョブの詳細を表示]、[認証情報] の順に選択します。クライアントロック解除コードとマニフェストファイルの両方を保存します。

Edge デバイス画面で、[Connection (接続)] タブから Edge デバイスの IP を取得します。次に、IP と認証情報で snowballEdge unlock コマンドを使用して、デバイスをロック解除します。次の例は、このコマンドのサンプル構文を示しています。

snowballEdge unlock -i IP_Address -m Local_path_to_manifest_file -u 29_character_unlock_code

次がサンプルのコマンドです。

snowballEdge unlock \ -i 192.0.2.0 \ -m /Downloads/JID2EXAMPLE-0c40-49a7-9f53-916aEXAMPLE81-manifest.bin \ -u 12345-abcde-12345-ABCDE-12345

最後に、Edge クライアントを使用してデバイスから Snowball Edge アクセスキーを取得します。以下に示すのは、アクセスキーを取得するコマンドの入力および出力の例です。

入力例

API バージョン API Version 2016-01-01355

Page 363: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドステップ 4: ODBC ドライバーで

DMS エージェントホストを設定する

snowballEdge list-access-keys \ --endpoint https://192.0.2.0 \ --manifest-file Path_to_manifest_file \ --unlock-code 12345-abcde-12345-ABCDE-12345

出力例

{ "AccessKeyIds" : [ "AKIAIOSFODNN7EXAMPLE" ]}

以下に示すのは、シークレットキーを取得するコマンドの入力および出力の例です。

入力例

snowballEdge get-secret-access-key \ --access-key-id AKIAIOSFODNN7EXAMPLE \ --endpoint https://192.0.2.0 \ --manifest-file /Downloads/JID2EXAMPLE-0c40-49a7-9f53-916aEXAMPLE81-manifest.bin \ --unlock-code 12345-abcde-12345-ABCDE-12345

出力例

[snowballEdge]aws_access_key_id = AKIAIOSFODNN7EXAMPLEaws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

Snowball Edge が使用可能になると、AWS CLI あるいは S3 SDK Adapter for Snowball を使用して、直接やり取りできるようになります。また、このアダプタは Edge デバイスでも使用できます。

ステップ 4: ODBC ドライバーで DMS エージェントホストを設定するEdge クライアントがすでにインストールされているステップ 2 のマシン 2 (接続) を使用して、必要なODBC ドライバーをインストールします。これらのドライバは、ソースデータベースに接続するために必要です。必要なドライバーは、データベースエンジンによって異なります。以下のセクションでは、各データベースエンジンについて説明します。

トピック• Oracle (p. 356)• Microsoft SQL Server (p. 357)• ASE SAP Sybase (p. 357)• MySQL (p. 357)• PostgreSQL (p. 357)

OracleOracle Instant Client for Linux (x86-64) バージョン 11.2.0.3.0 以降をインストールします。

さらに、まだシステムに含まれていない場合は、$ORACLE_HOME\lib directory にシンボリックリンクを作成する必要があります。このリンクは libclntsh.so という名前で、このファイルの特定のバージョンを指す必要があります。たとえば、Oracle 12c クライアントでは次を使用します。

API バージョン API Version 2016-01-01356

Page 364: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドステップ 4: ODBC ドライバーで

DMS エージェントホストを設定する

lrwxrwxrwx 1 oracle oracle 63 Oct 2 14:16 libclntsh.so ->/u01/app/oracle/home/lib/libclntsh.so.12.1

さらに、LD_LIBRARY_PATH 環境変数には Oracle lib ディレクトリを付加し、インストールの lib フォルダの site_arep_login.sh スクリプトに追加する必要があります。このスクリプトが存在しない場合は追加します。

vi /opt/amazon/aws-schema-conversion-tool-dms-agent/bin/site_arep_login.sh

export ORACLE_HOME=/usr/lib/oracle/12.2/client64; export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib

Microsoft SQL ServerMicrosoft ODBC ドライバーをインストールします。

site_arep_login.sh スクリプトを次のコードで更新します。

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/microsoft/msodbcsql/lib64/

ASE SAP SybaseSAP Sybase ASE ODBC 64 ビットクライアントがインストールされている必要があります。

インストールディレクトリが /opt/sap の場合は、次を使用して site_arep_login.sh スクリプトを更新します。

export SYBASE_HOME=/opt/sapexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$SYBASE_HOME/DataAccess64/ODBC/lib:$SYBASE_HOME/DataAccess/ODBC/lib:$SYBASE_HOME/OCS-16_0/lib:$SYBASE_HOME/OCS-16_0/lib3p64:$SYBASE_HOME/OCS-16_0/lib3p

/etc/odbcinst.ini ファイルには次のエンジンが含まれている必要があります。

[Sybase]Driver=/opt/sap/DataAccess64/ODBC/lib/libsybdrvodb.soDescription=Sybase ODBC driver

MySQLMySQL Connector/ODBC for Linux バージョン 5.2.6 以降をインストールします。

次の例に示すように、/etc/odbcinst.ini ファイルに MySQL 用のエントリが含まれていることを確認します。

[MySQL ODBC 5.2.6 Unicode Driver]Driver = /usr/lib64/libmyodbc5w.so UsageCount = 1

PostgreSQLインストール postgresql94-9.4.4-1PGDG.<OS Version>.x86_64.rpm.このパッケージには psql実行可能ファイルが含まれます。たとえば、postgresql94-9.4.4-1PGDG.rhel7.x86_64.rpm はRed Hat 7 に必要なパッケージです。

API バージョン API Version 2016-01-01357

Page 365: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドステップ 5: DMS エージェントをインストールする

<OS version> がエージェントマシンの OS である場合には、Linux 向け ODBC ドライバーpostgresql94-odbc-09.03.0400-1PGDG.<OS version>.x86_64 以降をインストールします。たとえば、postgresql94-odbc-09.03.0400-1PGDG.rhel7.x86_64 は Red Hat 7 に必要なクライアントです。

次の例に示すように、/etc/odbcinst.ini ファイルに PostgreSQL 用のエントリが含まれていることを確認します。

[PostgreSQL]Description = PostgreSQL ODBC driverDriver = /usr/pgsql-9.4/lib/psqlodbc.so Setup = /usr/pgsql-9.4/lib/psqlodbcw.so Debug = 0 CommLog = 1 UsageCount = 2

ステップ 5: DMS エージェントをインストールするEdge クライアントおよび ODBC ドライバーがすでにインストールされているステップ 2 のマシン 2 (接続) を使用して、DMS エージェントをインストールして設定します。『AWS Schema Conversion Toolユーザーガイド』で説明するように、DMS エージェントは AWS SCT インストールパッケージの一部として提供されます。

このステップが完了したら、2 つのローカルマシンが準備できている必要があります。

• AWS SCT がインストールされたマシン 1 (SCT)• Edge クライアント、ODBC ドライバー、および DMS エージェントがインストールされたマシン 2 (接

続)

DMS エージェントをインストールするには

1. AWS SCT インストールディレクトリで、aws-schema-conversion-tool-dms-agent-2.4.1-R1.x86_64.rpm という名前の RPM ファイルを見つけます。

これを DMS エージェントマシンであるマシン 2 (接続) にコピーします。SCT と DMS エージェントは別々のマシンにインストールされている必要があります。DMS エージェントは、Edge クライアントおよび ODBC ドライバーと同じマシンに配置する必要があります。

2. マシン 2 (接続) で、次のコマンドを実行して DMS エージェントをインストールします。アクセス許可を簡単にするため、このコマンドを root ユーザーとして実行します。

sudo rpm -i aws-schema-conversion-tool-dms-agent-2.4.0-R2.x86_64.rpm

このコマンドは、/opt/amazon/aws-schema-conversion-tool-dms-agent のデフォルトのインストール場所を使用します。別の場所に DMS エージェントをインストールする場合は、次のオプションを使用します。

sudo rpm --prefix <installation_directory> -i aws-schema-conversion-tool-dms-agent-2.4.0-R2.x86_64.rpm

3. DMS エージェントが実行していることを確認するには、次のコマンドを使用します。

ps -ef | grep repctl

このコマンドの出力には、次の 2 つのプロセスが実行中であることが表示されます。API バージョン API Version 2016-01-01

358

Page 366: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドステップ 5: DMS エージェントをインストールする

DMS エージェントを設定するには、パスワードとポート番号を指定する必要があります。後で DMSエージェントを AWS SCT に登録するためにこのパスワードを使用するため、失くさないようにします。DMS エージェント用に未使用のポート番号を選び、AWS SCT 接続をリッスンします。接続を許可するようにファイアウォールを設定しなければならない場合があります。

これから、configure.sh スクリプトを使用して DMS エージェントを設定します。

sudo /opt/amazon/aws-schema-conversion-tool-dms-agent/bin/configure.sh

次のプロンプトが表示されます。パスワードを入力してください。プロンプトが表示されたら、確認のためにパスワードをもう一度入力します。

Configure the AWS Schema Conversion Tool DMS Agent serverNote: you will use these parameters when configuring agent in AWS Schema Conversion Tool

Please provide password for the serverUse minimum 8 and up to 20 alphanumeric characters with at least one digit and one capital case character

Password:

出力は次のとおりです。ポート番号を入力します。

chown: missing operand after 'amazon:amazon'Try 'chown --help' for more information./opt/amazon/aws-schema-conversion-tool-dms-agent/bin/repctl: /opt/amazon/aws-schema-conversion-tool-dms-agent/lib/libcom_err.so.3: no version information available (required by /opt/amazon/aws-schema-conversion-tool-dms-agent/lib/libgssapi_krb5.so.2)/opt/amazon/aws-schema-conversion-tool-dms-agent/bin/repctl: /opt/amazon/aws-schema-conversion-tool-dms-agent/lib/libcom_err.so.3: no version information available (required by /opt/amazon/aws-schema-conversion-tool-dms-agent/lib/libkrb5.so.3)[setserverpassword command] Succeeded

Please provide port number the server will listen on (default is 3554)Note: you will have to configure your firewall rules accordinglyPort:

出力は次のようになり、サービスが開始したことを確認します。

Starting service.../opt/amazon/aws-schema-conversion-tool-dms-agent/bin/repctl: /opt/amazon/aws-schema-conversion-tool-dms-agent/lib/libcom_err.so.3: no version information available (required by /opt/amazon/aws-schema-conversion-tool-dms-agent/lib/libgssapi_krb5.so.2)/opt/amazon/aws-schema-conversion-tool-dms-agent/bin/repctl: /opt/amazon/aws-schema-conversion-tool-dms-agent/lib/libcom_err.so.3: no version information available (required by /opt/amazon/aws-schema-conversion-tool-dms-agent/lib/libkrb5.so.3)AWS Schema Conversion Tool DMS Agent was sent a stop signalAWS Schema Conversion Tool DMS Agent is no longer running[service command] Succeeded/opt/amazon/aws-schema-conversion-tool-dms-agent/bin/repctl: /opt/amazon/aws-schema-conversion-tool-dms-agent/lib/libcom_err.so.3: no version information available (required by /opt/amazon/aws-schema-conversion-tool-dms-agent/lib/libgssapi_krb5.so.2)

API バージョン API Version 2016-01-01359

Page 367: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドステップ 6: 新しい AWS SCT プロジェクトを作成する

/opt/amazon/aws-schema-conversion-tool-dms-agent/bin/repctl: /opt/amazon/aws-schema-conversion-tool-dms-agent/lib/libcom_err.so.3: no version information available (required by /opt/amazon/aws-schema-conversion-tool-dms-agent/lib/libkrb5.so.3)AWS Schema Conversion Tool DMS Agent was started as PID 1608

AWS Command Line Interface (AWS CLI) のインストールが推奨されます。AWS CLI を使用して、Snowball Edge を調査してデバイスに書き込まれたデータファイルを確認できます。Edge デバイスにアクセスするには、Edge から取得した AWS 認証情報を使用します。たとえば、次のコマンドを実行します。

aws s3 ls --profile SnowballEdge --endpoint https://192.0.2.0 :8080 bucket-name --recursive

このコマンドによって以下の出力が生成されます。

2018-08-20 10:55:31 53074692 streams/load00000001000573E166ACF4C0/00000001.fcd.gz2018-08-20 11:14:37 53059667 streams/load00000001000573E166ACF4C0/00000002.fcd.gz2018-08-20 11:31:42 53079181 streams/load00000001000573E166ACF4C0/00000003.fcd.gz

DMS エージェントを停止するには、/opt/amazon/aws-schema-conversion-tool-dms-agent/bin ディレクトリで次のコマンドを実行します。

./aws-schema-conversion-tool-dms-agent stop

DMS エージェントを開始するには、/opt/amazon/aws-schema-conversion-tool-dms-agent/bin ディレクトリで次のコマンドを実行します。

./aws-schema-conversion-tool-dms-agent start

ステップ 6: 新しい AWS SCT プロジェクトを作成する次に、ソースとターゲットのデータベースを指定する新規の AWS SCT プロジェクトを作成します。詳細については、『AWS Schema Conversion Tool ユーザーガイド』の「AWS Schema Conversion Tool プロジェクトの作成」を参照してください。

AWS SCT で新しいプロジェクトを作成するには

1. AWS SCT を起動し、[ファイル]、[新しいプロジェクト] の順に選択します。[新しいプロジェクト] ダイアログボックスが表示されます。

2. 以下のプロジェクト情報を追加します。

パラメータ 操作

プロジェクト名 コンピューターにローカルに保存されているプロジェクトの名前を入力します。

場所 ローカルプロジェクトファイルの場所を入力します。

OLTP [Transactional Database (OLTP)] を選択します。

Source DB Engine ソースデータストアを選択します。

API バージョン API Version 2016-01-01360

Page 368: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドステップ 7: Snowball Edge を使用するために AWS SCT を設定する

パラメータ 操作

Target DB Engine ターゲットデータストアを選択します。

3. [OK] を選択して、AWS SCT プロジェクトを作成します。4. ソースおよびターゲットデータベースに接続します。

ステップ 7: Snowball Edge を使用するために AWSSCT を設定するオンプレミスで作動するローカル AWS DMS である DMS エージェントを使用するために、AWS SCTサービスプロファイルを更新する必要があります。

DMS エージェントと連携するように AWS SCT プロファイルを更新するには

1. AWS SCT を起動します。2. 設定、グローバル設定、AWS のサービスプロファイルを選択します。3. Add New AWS Service Profile (新しい AWS のサービスプロファイルの追加) を選択します。

4. 以下のプロファイル情報を追加します。

パラメータ 操作

Profile Name コンピューターにローカルに保存されているプロジェクトの名前を入力します。

AWS アクセスキー AWS アカウントの AWS アクセスキーと、移行に使用する予定の AWS リージョンを入力します。提供された認証

API バージョン API Version 2016-01-01361

Page 369: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドステップ 7: Snowball Edge を使用するために AWS SCT を設定する

パラメータ 操作情報には、AWS の Snowball Edge ジョブにアクセスする権限がある必要があります。

AWS シークレットキー AWS アカウントの AWS シークレットキーと、移行に使用する予定の AWS リージョンを入力します。

リージョン 使用しているアカウントの AWS リージョンを選択します。DMS レプリケーションインスタンス、S3 バケット、およびターゲットデータストアは、この AWS リージョンにある必要があります。

S3 バケットフォルダ Snowball Edge ジョブを作成したときに割り当てられたS3 バケットの名前を入力します。

5. 情報を入力したら、Test Connection (テスト接続) を選択して、AWS SCT が Amazon S3 バケットに接続できることを確認します。

ポップアップウィンドウの OLTP Local & DMS Data Migration セクションには、ステータスが Pass(成功) であるすべてのエントリが表示されます。テストに失敗する場合、この失敗は使用しているアカウントに Amazon S3 バケットへのアクセス権限がないことが原因である可能性があります。

6. テストに成功した場合は、[OK] を選択してから、もう一度 [OK] を選択してウィンドウとダイアログボックスを閉じます。

7. Import job (ジョブのインポート) を選択してリストから Snowball Edge ジョブを選び、OK を選択します。

これから、Snowball Edge を使用するように AWS SCT を設定します。Snowball Edge の IP アドレス、デバイスの着信ポート (デフォルトでは 8080)、前に取得した Snowball Edge アクセスキーおよびシークレットキーを入力します。OK を選択して変更を保存します。

API バージョン API Version 2016-01-01362

Page 370: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドステップ 8: AWS SCT に DMS エージェントを登録する

ステップ 8: AWS SCT に DMS エージェントを登録する次に、AWS SCT に DMS エージェントを登録します。次に、SCT はエージェントに接続を試み、ステータスが表示されます。エージェントが利用可能になると、ステータスがアクティブになります。

DMS エージェントを登録するには

1. AWS SCT を開始し、View (表示)、Database Migration View (Local & DMS) (データベース移行表示)の順に選択します。

2. [エージェント] タブを選択し、[登録] を選択します。[New Agent Registration (新しいエージェントの登録)] ダイアログボックスが表示されます。

API バージョン API Version 2016-01-01363

Page 371: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドステップ 9: ローカルおよび DMS タスクを作成する

3. [New Agent Registration (新しいエージェントの登録)] ダイアログボックスに情報を入力します。

パラメータ 操作

説明 エージェントの名前を入力します。

ホスト名 DMS エージェントをインストールしたマシンの IP アドレスを入力します。

ポート DMS エージェントに設定したときに使用したポート番号を入力します。

パスワード DMS エージェントに設定したときに使用したパスワードを入力します。

4. [Register (登録)] を選択して、AWS SCT プロジェクトにエージェントを登録します。

ステップ 9: ローカルおよび DMS タスクを作成する次に、エンドツーエンドの移行タスクであるタスクを作成します。このタスクには 2 つのサブタスクが含まれます。

• ローカルサブタスク – このタスクは、ソースデータベースから Snowball Edge アプライアンスへデータを移行します。

• DMS サブタスク – このタスクは、アプライアンスから Amazon S3 バケットにデータを移動し、ターゲットデータベースにこれを移行します。

Note

Snowball Edge デバイスを使用する前に、移行をテストすることをお勧めします。Snowball Edgeデバイスの代わりに Amazon S3 バケット に 1 つのテーブルなどのデータを送信するタスクを設定することでテストできます。

API バージョン API Version 2016-01-01364

Page 372: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドステップ 9: ローカルおよび DMS タスクを作成する

エンドツーエンドの移行タスクを作成するには

1. AWS SCT を開始し、View (表示)、Database Migration View (Local & DMS) (データベース移行表示)の順に選択します。

2. ソースデータベースのスキーマを表示する左のパネルで、移行するスキーマを選択します。スキーマのコンテキスト (右クリック) メニューを開き、Create Local & DMS Task (ローカルおよび DMS タスクの作成) を選択します。

AWS DMS および Snowball Edge をし応して個別のテーブルを移行することはできません。

次の画面が表示されます。

API バージョン API Version 2016-01-01365

Page 373: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドステップ 9: ローカルおよび DMS タスクを作成する

3. タスク情報を追加します。

パラメータ 操作

タスク名 タスクの名前を入力します。

エージェント DMS Agent (DMS エージェント) を選択します。

レプリケーションインスタンス 使用する AWS DMS レプリケーションインスタンスを選択します。

移行タイプ 目的の移行のタイプを選択します。

Migrate existing data (既存データの移行) を選択して、選択したスキーマの内容を移行します。このプロセスは、AWS DMS で全ロードと呼ばれます。

Migrate existing data and replicate ongoing changes (既存データを移行して継続的な変更をレプリケートする) を選択し、選択されたスキーマのコンテンツを移行して、データベースへの継続的な変更をすべてキャプチャします。このプロセスは、AWS DMS で全ロードおよび CDC と呼ばれます。

API バージョン API Version 2016-01-01366

Page 374: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドステップ 9: ローカルおよび DMS タスクを作成する

パラメータ 操作

ターゲットテーブル作成モード 使用する準備モードを選択します。

切り捨て – テーブルは、テーブルのメタデータに影響を与えないで切り捨てられます。

ターゲット上のテーブルを削除 – テーブルは削除され、代わりに新しいテーブルが作成されます。

何もしない – ターゲットテーブルのデータとメタデータは変更されません。

IAM ロール Amazon S3 バケットおよびターゲットデータベースにアクセスするためのアクセス許可がある、事前定義済みのIAM ロールを選択します。Amazon S3 バケットにアクセスするために必要なアクセス権限についての詳細は、「S3を AWS DMS のソースとして使用する場合の前提条件」を参照してください。

圧縮形式 アップロードしたファイルが圧縮されるかどうかを選択します。

GZIP - ファイルはロード前に圧縮されます。これがデフォルト値です。

圧縮なし – 抽出はより高速になりますが、より大きなスペースを占めます。

ログ記録 有効を選択して、Amazon CloudWatch でこの移行をログ記録します。このサービスについては料金が発生します。CloudWatch の詳細については、「AmazonCloudWatch の仕組み」を参照してください。

説明 タスクの説明を入力します。

S3 バケット Snowball Edge コンソールでこの Snowball Edge ジョブに設定された S3 バケットの名前を入力します。

Snowball Edge を使用 Snowball Edge を使用するには、このチェックボックスをオンにします。このボックスがチェックされていない場合、データは S3 バケットに直接アップロードされます。

ジョブ名 作成した Snowball Edge のジョブ名を選択します。

Snowball Edge IP Snowball Edge アプライアンスの IP アドレスを入力します。

ポート Snowball Edge アプライアンスのポートの値を入力します。

ローカル Amazon S3 アクセスキー デバイスから取得したローカルの Snowball Edge アクセスキーを入力します。

ローカル Amazon S3 シークレットキー

デバイスから取得したローカルの Snowball Edge シークレットキーを入力します。

4. 作成を選択して、タスクを作成します。

API バージョン API Version 2016-01-01367

Page 375: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドステップ 10: SCT でタスクを実行してモニタリングします。

ステップ 10: SCT でタスクを実行してモニタリングします。以下を含むエンドポイントへのすべての接続に成功したら、移行スクを開始できます。

• 以下に対する DMS エージェントの接続。• ソースデータベース• ステージング Amazon S3 バケット• Edge デバイス

• 以下に対する DMS タスクの接続。• ステージング Amazon S3 バケット• AWS のターゲットデータベース

すべての接続が正常に機能している場合、SCT コンソールは次のスクリーンショットのようになり、開始準備が整いました。

以下の手順を使用して、移行を開始します。

移行タスクを開始するには

1. 移行タスクを選び、[開始] を選択します。

API バージョン API Version 2016-01-01368

Page 376: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドステップ 10: SCT でタスクを実行してモニタリングします。

2. DMS エージェントをモニタリングするには、Show Log (ログの表示) を選択します。ログ詳細には、エージェントサーバー (Agent Log) ログおよびローカル実行タスク (Task Log) ログが含まれます。エンドポイントの接続はサーバーによって行われます。ローカルタスクが実行されていないため、タスクログがありません。接続の問題は、Agent Log (エージェントログ) タブで一覧表示されます。

3. 移行タスクのステータスが 50 パーセントであることを確認します。Snowball Edge コンソールまたは AWS SCT を使用して、デバイスのステータスを確認できます。

ソーステーブルが Snowball Edge アプライアンスにロードされたら、AWS SCT はタスクのステータスを更新して、50 パーセント完了と表示します。これは、タスクの残りの半分に AWS DMS がAmazon S3 からターゲットデータストアにデータを取り出すことが含まれているためです。

4. Snowball Edge ドキュメントで説明されている手順に従い、「Snowball クライアントを停止し、Snowball Edge の電源をオフにする」という名前のセクションから開始します。これらのステップには、以下が含まれます。

API バージョン API Version 2016-01-01369

Page 377: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイド制約事項

• Snowball Edge クライアントを停止する• Edge デバイスの電源をオフにする• Edge デバイスを AWS に返す

5. デバイスを AWS に返却したあとの移行の終了には、リモートタスクが完了するまでの待機が含まれます。

Snowball Edge アプライアンスが AWS に到着すると、リモート (DMS) タスクが実行を開始します。選択した移行タイプが Migrate existing data (既存データの移行) である場合、Amazon S3 からターゲットデータストアにデータが転送された後で、DMS タスクのステータスが 100 パーセント完了と表示されます。

継続的なレプリケーションを含めるようにタスクモードを設定した場合、AWS DMS が継続的な変更を適用している間、全ロードが完了してからもタスクは引き続き実行されます。

Snowball Edge および AWS DMS の使用における制限

AWS Snowball Edge を使用する場合に、注意が必要ないくつかの制限があります。

• すべての AWS SCT タスクでは、AWS DMS で 2 つのエンドポイント接続が作成されます。複数のタスクを作成する場合、作成できるエンドポイントの数のリソース制限に達する可能性があります。

• スキーマは、Snowball Edge を使用するときの最少のタスクスコープです。Snowball Edge を使用して、個々のテーブルやサブネットを移行することはできません。

• DMS エージェントは、HTTP/HTTPS または SOCKS プロキシの設定をサポートしていません。DMSエージェントホストがプロキシを使用する場合、ソースとターゲットへの接続が失敗することがあります。

• LOB モードは LOB ファイルサイズを 32 K に制限します。32 K を超える LOB は移行されません。• 場合によっては、ローカルデータベースから Edge デバイスへのロード中、あるいは Amazon S3 から

ターゲットデータベースにデータをロード中にエラーが発生することがあります。このようなケースの一部では、エラーが復旧可能で、タスクを再開できます。AWS DMS がエラーから復旧できない場合、移行は停止します。このような場合には、AWS サポートにお問い合わせください。

API バージョン API Version 2016-01-01370

Page 378: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイド移行タスクの実行の遅れ

AWS Database Migration Service での移行タスクのトラブルシューティング

以下のセクションでは、AWS Database Migration Service (AWS DMS) のトラブルシューティングに関する情報を提供します。

トピック• 移行タスクの実行の遅れ (p. 371)• タスクのステータスバーが動かない (p. 372)• 外部キーとセカンダリインデックスが見つからない (p. 372)• Amazon RDS 接続問題 (p. 372)• ネットワーキングの問題 (p. 373)• 全ロード後、CDC が停止する (p. 373)• タスクを再開時のプライマリキー制約違反エラー (p. 373)• スキーマの初回ロードが失敗する (p. 373)• 不明なエラーが発生してタスクが失敗する (p. 374)• タスクを再開するとテーブルが最初からロードされる (p. 374)• タスクあたりのテーブル数 (p. 374)• Oracle 固有の問題のトラブルシューティング (p. 374)• MySQL 固有の問題のトラブルシューティング (p. 376)• PostgreSQL 固有の問題のトラブルシューティング (p. 380)• Microsoft SQL Server 固有の問題のトラブルシューティング (p. 383)• Amazon Redshift 固有の問題のトラブルシューティング (p. 384)• Amazon Aurora MySQL 固有の問題のトラブルシューティング (p. 385)

移行タスクの実行の遅れ移行タスクの実行が遅くなる、または後続のタスクの実行が初期タスクより遅くなる原因として、いくつかの問題が考えられます。移行タスクの実行が遅くなる最も一般的な原因は、AWS DMS のレプリケーションのインスタンスに割り当てられているリソースが不十分であることです。レプリケーションのインスタンスの CPU、メモリ、スワップファイル、および IOPS の使用率をチェックし、インスタンスのリソースが実行中のタスクのために十分であることを確認します。たとえば、エンドポイントとしてのAmazon Redshift の複数のタスクは I/O 集約型です。レプリケーションのインスタンスに対して IOPS を増やすか、より効率的に移行するためにレプリケーションの複数のインスタンス間で作業を分割できます。

レプリケーションのインスタンスサイズの決定に関する詳細については、「レプリケーションインスタンス用に最適なサイズを選択する (p. 389)」を参照してください。

以下を実行すると、初期の移行のロードがスピードアップします。

• ターゲットが Amazon RDS DB インスタンスの場合、Multi-AZ がターゲット DB インスタンスに対して有効にされていないことを確認します。

API バージョン API Version 2016-01-01371

Page 379: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドタスクのステータスバーが動かない

• ロード中の自動バックアップまたはターゲットデータベースでのログ作成をオフにし、移行が完了したらこれらの機能をオンに戻します。

• プロビジョンド IOPS がターゲットで利用可能な場合は、この機能を使用します。• 移行データに LOB が含まれる場合は、タスクが LOB 移行のために最適化されていることを確認しま

す。LOB 用の最適化の詳細については、「ターゲットメタデータのタスク設定 (p. 263)」を参照してください。

タスクのステータスバーが動かないタスクのステータスバーで、タスクの進捗状況を予測できます。この予測の正確さはソースデータベースのテーブル統計の正確さによって異なります。テーブル統計が正確であればあるほど、正確に予測できます。予測された列の統計がないテーブルが 1 つだけのタスクでは、どのような種類であっても完了率の予測を提供できません。この場合、タスクのステータスと、ロードされた列の表示を使って、タスクが実際に実行されて進行していることを確認できます。

外部キーとセカンダリインデックスが見つからないAWS DMS によって、テーブル、プライマリキー、場合によっては一意のインデックスが作成されますが、効率的にソースからデータを移行するために必要ではない他のオブジェクトは作成されません。たとえば、セカンダリインデックス、非プライマリキーの制約、データデフォルトは作成されません。

データベースからセカンダリオブジェクトを移行するには、ソースデータベースと同じデータベースエンジンに移行中の場合、データベースのネイティブツールを使用します。ソースデータベースで使用したものと異なるデータベースエンジンへ移行中の場合、スキーマ変換ツールを使用してセカンダリオブジェクトを移行します。

Amazon RDS 接続問題エンドポイントとして設定した Amazon RDS DB インスタンスに接続できない理由は複数考えられます。具体的には以下のとおりです。

• ユーザー名とパスワードの組み合わせが間違っています。• インスタンス用に Amazon RDS コンソールに表示されるエンドポイント値が AWS DMS エンドポイン

トを作成するのに使用したエンドポイント識別子と同じであることを確認します。• インスタンス用に Amazon RDS コンソールで表示されるポート値が AWS DMS エンドポイントに割り

当てられたポートと同じであることを確認します。• Amazon RDS DB インスタンスに割り当てられたセキュリティグループが、AWS DMS のレプリケー

ションのインスタンスからの接続を許可することを確認します。• AWS DMS のレプリケーションのインスタンスと Amazon RDS DB インスタンスが同じ VPC にない場

合は、DB インスタンスがパブリックにアクセス可能であることを確認します。

エラーメッセージ: スレッドの接続文字列が正しくありません。正しくないスレッド値「0」エンドポイントへの接続をテストしているとき、このエラーが頻繁に発生します。このエラーは、ホストIP アドレスの後ろにスペースがある、接続文字列に正しくない文字がコピーされたなど、接続文字列にエラーがあることを示します。

API バージョン API Version 2016-01-01372

Page 380: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドネットワーキングの問題

ネットワーキングの問題最も一般的なネットワーキング問題には、AWS DMS のレプリケーションのインスタンスによって使用される VPC のセキュリティグループが関係しています。デフォルトでは、このセキュリティグループではすべてのポートの 0.0.0.0/0 からの送信を許可するルールがあります。このセキュリティグループを変更するか、独自のセキュリティグループを使用する場合、少なくとも、対応するデータベースポートでソースおよびターゲットエンドポイントへの送信が許可される必要があります。

設定に関連した他の問題を次に示します。

• レプリケーションのインスタンスと、ソースとターゲット両方のエンドポイントが同じ VPC 内にある— エンドポイントが使用するセキュリティグループはレプリケーションのインスタンスからのデータベースポートへの受信を許可する必要があります。レプリケーションインスタンスによって使用されるセキュリティグループでエンドポイントへの受信が許可されることを確認してください。または、エンドポイントにより使用されるセキュリティグループに、レプリケーションインスタンスのプライベートIP アドレスにアクセスを許可するセキュリティルールを作成できます。

• ソースエンドポイントがレプリケーションのインスタンス (インターネットゲートウェイを使用) が使用する VPC の外部にある — VPC セキュリティグループは VPC 宛てでないトラフィックをインターネットゲートウェイに送信するルーティングルールを含む必要があります。この設定では、エンドポイントへ接続が、レプリケーションインスタンス上のパブリック IP アドレスから行われているように見ます。

• ソースエンドポイントがレプリケーションのインスタンス (NAT のゲートウェイを使用) が使用するVPC の外部にある — NAT 識別子 (nat-#####) を受け取る 1 つの Elastic Network Interface にバインドされた 1 つの Elastic IP アドレスを使用する、ネットワークアドレス変換 (NAT) ゲートウェイを設定できます。インターネットゲートウェイではなくその NAT ゲートウェイへのデフォルトルートが VPC に含まれている場合、レプリケーションインスタンスはインターネットゲートウェイのパブリック IP アドレスを使用してデータベースエンドポイントに接続しているように見えます。この場合、VPC 外のデータベースエンドポイントへの進入は、レプリケーションインスタンスのパブリック IP アドレスではなくNAT アドレスからの進入を許可する必要があります。

全ロード後、CDC が停止する複数の AWS DMS 設定が互いに競合すると、全ロード移行後に、レプリケーション変更が遅くなるか停止することがあります。たとえば、[Target table preparation mode (ターゲットテーブル作成モード)] パラメータが [Do nothing (何もしない)] または [切り詰め] に設定されている場合、プライマリキーと一意なインデックスの作成を含め、ターゲットテーブル上でのセットアップを行わないように AWS DMS は指示されています。ターゲットテーブルでプライマリキーまたは固有なキーを作成していない場合、AWS DMSは更新プログラムごとに、テーブル全体のスキャンを行う必要があり、パフォーマンスに大きな影響を与えることがあります。

タスクを再開時のプライマリキー制約違反エラーこのエラーは、以前の移行タスクからのターゲットデータベースにデータが残っている場合に発生することがあります。[Target table preparation mode (ターゲットテーブル作成モード)] パラメータが [Do nothing(何もしない)] に設定されている場合、AWS DMS は以前のタスクから挿入されたデータの削除を含め、ターゲットテーブルの準備を行いません。タスクを再開し、これらのエラーを回避するために、タスクの以前の実行からターゲットテーブルに挿入される行を削除する必要があります。

スキーマの初回ロードが失敗するスキーマの初回ロードが Operation:getSchemaListDetails:errType=, status=0,errMessage=, errDetails= のエラーが発生して失敗する場合、ソースエンドポイントに接続するのに AWS DMS が使用するユーザーアカウントには必要なアクセス権限がありません。

API バージョン API Version 2016-01-01373

Page 381: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイド不明なエラーが発生してタスクが失敗する

不明なエラーが発生してタスクが失敗するこれらのタイプのエラーの原因はさまざまですが、AWS DMS のレプリケーションのインスタンスに割り当てられたリソースが不十分なことに関連した問題である場合がよくあります。レプリケーションのインスタンスの CPU、メモリ、スワップファイル、および IOPS の使用率をチェックし、インスタンスのリソースが移行を実行するために十分であることを確認します。モニタリングの詳細については、「データ移行サービスメトリクス (p. 329)」を参照してください。

タスクを再開するとテーブルが最初からロードされる

AWS DMS は、テーブルの初回ロードを完了しなかった場合、テーブルのロードを最初から再開します。タスクが再開されると、AWS DMS は、初回ロードを完了したテーブルはリロードしませんが、初回ロードが完了していない場合、最初からテーブルをリロードします。

タスクあたりのテーブル数レプリケーションのタスクあたりのテーブル数に制限は設定されていませんが、通常、1 つのタスクのテーブル数を 60,000 個未満に制限すると良いようです。1 つのタスクが 60,000 個超のテーブルを使用すると、多くの場合リソース使用がボトルネックになることがあります。

Oracle 固有の問題のトラブルシューティング以下に示しているのは、AWS DMS を Oracle データベースで使用する場合に固有の問題です。

トピック• ビューからデータを取得する (p. 374)• Oracle 12c から LOB を移行する (p. 375)• Oracle LogMiner と Binary Reader の切り替え (p. 375)• エラー: Oracle CDC は停止しました。122301 Oracle CDC の最大再試行カウンタを超えまし

た。 (p. 375)• Oracle ソースエンドポイントにサプリメンタルロギングを自動的に追加する (p. 375)• LOB の変更がキャプチャされない (p. 376)• エラー: ORA-12899: 列 <column-name> の値が大きすぎる (p. 376)• NUMBER のデータ型が誤って解釈される (p. 376)

ビューからデータを取得するビューからデータを 1 回プルできます。これを継続的なレプリケーションに使用することはできません。ビューからデータを抽出可能にするため、Oracle ソース エンドポイントの [Advanced (詳細)] セクションの [Extra connection attributes (追加の接続属性)] に以下のコードを追加する必要があります。ビューからデータを抽出すると、そのビューはターゲットスキーマのテーブルとして表示されることに注意してください。

exposeViews=true

API バージョン API Version 2016-01-01374

Page 382: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドOracle 12c から LOB を移行する

Oracle 12c から LOB を移行するOracle データベースへの変更をキャプチャするために AWS DMS が使用できる方法は、Binary Reader とOracle LogMiner の 2 つです。デフォルトでは AWS DMS は Oracle LogMiner を使用して変更をキャプチャします。ただし、Oracle 12c で、Oracle LogMiner は LOB 列をサポートしていません。Oracle 12c での LOB 列の変更をキャプチャするには、Binary Reader を使用します。

Oracle LogMiner と Binary Reader の切り替えソース Oracle データベースへの変更をキャプチャするために AWS DMS が使用できる方法は、BinaryReader と Oracle LogMiner の 2 つです。Oracle LogMiner がデフォルトです。Binary Reader を使用して変更をキャプチャするように切り替えるには、次を実行します。

Binary Reader を使用して変更をキャプチャするには

1. AWS マネジメントコンソールにサインインし、DMS を選択します。2. [Endpoints] を選択します。3. Binary Reader を使用したい Oracle ソースエンドポイントを選択します。4. [Modify] を選択します。5. [Advanced (詳細)] を選択し、[Extra connection attributes (追加の接続属性)] テキストボックスに以下

のコードを追加します。

useLogminerReader=N

6. SQL-Plus のような Oracle 開発者用ツールを使って、Oracle エンドポイントに接続するのに使用される AWS DMS ユーザーアカウントに追加の権限を与えます。

SELECT ON V_$TRANSPORTABLE_PLATFORM

エラー: Oracle CDC は停止しました。122301 OracleCDC の最大再試行カウンタを超えました。このエラーは、AWS DMS が変更をキャプチャするために使用できるようになる前に、必要な Oracle アーカイブログがサーバーから削除されると発生します。データベースサーバーのログリテンションポリシーを増やします。Amazon RDS データベースでは、ログの保持を延長するために、以下の手順を実行します。たとえば、以下のコードを使うと Amazon RDS DB インスタンスでのログの保持が 24 時間に延長されます。

exec rdsadmin.rdsadmin_util.set_configuration('archivelog retention hours',24);

Oracle ソースエンドポイントにサプリメンタルロギングを自動的に追加するデフォルトでは、AWS DMS のサプリメンタルロギングはオフになっています。Oracle ソースエンドポイントのサプリメンタルロギングを自動的にオンにするには、以下の手順を実行します。

API バージョン API Version 2016-01-01375

Page 383: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドLOB の変更がキャプチャされない

Oracle ソースエンドポイントにサプリメンタルロギングを追加するには

1. AWS マネジメントコンソールにサインインし、[DMS] を選択します。2. [Endpoints] を選択します。3. サプリメンタルロギングを追加する Oracle ソースエンドポイントを選択します。4. [Modify] を選択します。5. [Advanced (詳細)] を選択し、[Extra connection attributes (追加の接続属性)] テキストボックスに以下

のコードを追加します。

addSupplementalLogging=Y

6. [Modify] を選択します。

LOB の変更がキャプチャされない現在、LOB の変更をキャプチャするには、テーブルに AWS DMS のプライマリキーがあることが必要です。LOB を含むテーブルにプライマリキーがない場合、LOB の変更をキャプチャするにはいくつかのアクションを行うことができます。

• テーブルにプライマリキーを追加します。この手順は、ID 列を追加し、トリガーを使用してシーケンスを入力するだけです。

• プライマリキーとしてシステム生成 ID を含むテーブルのマテリアライズドビューを作成し、テーブルではなくマテリアライズドビューを移行します。

• ロジカルスタンバイを作成し、テーブルにプライマリキーを追加して、ロジカルスタンバイから移行します。

エラー: ORA-12899: 列 <column-name> の値が大きすぎるエラー「ORA-12899: 列 <column-name> の値が大きすぎます」は、ソースとターゲットのデータベースで使用される文字セットの不一致、または NLS の設定が 2 つのデータベース間で異なることが原因で生じることがよくあります。このエラーの一般的な原因は、ソースデータベースの NLS_LENGTH_SEMANTICSパラメータが CHAR に設定されており、ターゲットデータベースの NLS_LENGTH_SEMANTICS パラメータが BYTE に設定されていることです。

NUMBER のデータ型が誤って解釈されるOracle NUMBER データ型は、NUMBER の精度とスケールに応じて AWS DMS のさまざまなデータ型に変換されます。このような変換は「AWS DMS のソースとして Oracle データベースを使用する (p. 88)」に記載されています。NUMBER 型の変換方法によっては、Oracle のソースエンドポイントの追加の接続属性の使用に影響を及ぼす場合があります。これらの追加の接続属性については、「AWS DMS のソースとして Oracle を使用する場合の追加の接続属性 (p. 97)」に記載されています。

MySQL 固有の問題のトラブルシューティング以下に示しているのは、AWS DMS を MySQL データベースで使用する場合に固有の問題です。

API バージョン API Version 2016-01-01376

Page 384: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドバイナリログ作成が無効化されるため、Amazon RDS DBインスタンスのエンドポイントの CDC タスクが失敗する

トピック• バイナリログ作成が無効化されるため、Amazon RDS DB インスタンスのエンドポイントの CDC タス

クが失敗する (p. 377)• ターゲット MySQL のインスタンスへの接続は、タスクの実行中に接続が切断されます (p. 377)• MySQL 互換エンドポイントへの自動コミットを追加する (p. 378)• MySQL 互換ターゲットエンドポイントで外部キーを無効化する (p. 378)• 文字が疑問符に置き換えられる (p. 378)• [Bad event] ログのエントリ (p. 379)• MySQL 5.5 の変更データキャプチャ (p. 379)• Amazon RDS DB インスタンスのバイナリログ保持を延長する (p. 379)• ログメッセージ: ソースデータベースからの一部の変更は、ターゲットデータベースに適用されても効

果がありません。 (p. 379)• エラー: 識別子が長すぎます (p. 379)• エラー: サポートされていない文字セットによりフィールドデータ変換が失敗しました (p. 380)• Error: Codepage 1252 to UTF8 [120112] A field data conversion failed (p. 380)

バイナリログ作成が無効化されるため、Amazon RDSDB インスタンスのエンドポイントの CDC タスクが失敗する自動バックアップが無効化されているためにこの問題が Amazon RDS DB インスタンスに発生します。バックアップ保持期間を 0 以外の値に設定することで自動バックアップを有効にすることができます。

ターゲット MySQL のインスタンスへの接続は、タスクの実行中に接続が切断されますタスクログに以下のようなエラーが表示されて、MySQL ターゲットからの接続が切断されている LOB のタスクがあるとき、タスクの設定調整が必要となる場合があります。

[TARGET_LOAD ]E: RetCode: SQL_ERROR SqlState: 08S01 NativeError: 2013 Message: [MySQL][ODBC 5.3(w) Driver][mysqld-5.7.16-log]Lost connection to MySQL server during query [122502] ODBC general error.

[TARGET_LOAD ]E: RetCode: SQL_ERROR SqlState: HY000 NativeError: 2006 Message: [MySQL][ODBC 5.3(w) Driver]MySQL server has gone away [122502] ODBC general error.

タスクが MySQL ターゲットから切断される問題を解決するには、以下を実行します。

• 最大の LOB を保持するために、十分に大きい値に設定された データベース変数max_allowed_packetがあることを確認します。

• 以下の変数が大きいタイムアウト値に設定されていることを確認します。これらの変数ごとに、少なくとも 5 分の値を使用することをお勧めします。• net_read_timeout

• net_write_timeout

• wait_timeout

API バージョン API Version 2016-01-01377

Page 385: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドMySQL 互換エンドポイントへの自動コミットを追加する

• interactive_timeout

MySQL 互換エンドポイントへの自動コミットを追加するMySQL 互換ターゲットエンドポイントに自動コミットを追加するには

1. AWS マネジメントコンソールにサインインし、[DMS] を選択します。2. [Endpoints] を選択します。3. 自動コミットを追加したい MySQL 互換ターゲットエンドポイントを選択します。4. [Modify] を選択します。5. [Advanced (詳細)] を選択し、[Extra connection attributes (追加の接続属性)] テキストボックスに以下

のコードを追加します。

Initstmt= SET AUTOCOMMIT=1

6. [Modify] を選択します。

MySQL 互換ターゲットエンドポイントで外部キーを無効化するMySQL、MySQL と互換性がある Amazon Aurora、または MariaDB ターゲットエンドポイントの [Advanced (詳細)] セクションの [Extra Connection Attributes (追加の接続属性)] に以下を追加して、MySQL の外部キーのチェックを無効化できます。

MySQL 互換ターゲットエンドポイントで外部キーを無効化するには

1. AWS マネジメントコンソールにサインインし、[DMS] を選択します。2. [Endpoints] を選択します。3. 外部キーを無効にする MySQL、Aurora MySQL、または MariaDB ターゲットエンドポイントを選択

します。4. [Modify] を選択します。5. [Advanced (詳細)] を選択し、[Extra connection attributes (追加の接続属性)] テキストボックスに以下

のコードを追加します。

Initstmt=SET FOREIGN_KEY_CHECKS=0

6. [Modify] を選択します。

文字が疑問符に置き換えられるこの問題を引き起こす可能性がある最も一般的な状況は、AWS DMS がサポートしない文字セットでソースエンドポイントの文字がエンコードされている場合です。たとえば、バージョンが 3.1.1 より以前のAWS DMS エンジンでは UTF8MB4 文字セットがサポートされていません。

API バージョン API Version 2016-01-01378

Page 386: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイド[Bad event] ログのエントリ

[Bad event] ログのエントリ移行ログの [Bad event] のエントリは通常、ソースデータベースエンドポイントで、サポートされていないDDL オペレーションが試行されたことを指します。サポートされていない DDL オペレーションは、レプリケーションインスタンスが省略できないイベントを発生させ、bad event が記録されます。この問題を修正するには、タスクを最初から再開します。テーブルがリロードされ、サポートされていない DDL オペレーションの発行後の時点で変更のキャプチャが開始されます。

MySQL 5.5 の変更データキャプチャAmazon RDS MySQL 互換データベースの AWS DMS 変更データキャプチャ (CDC) では、MySQL バージョン 5.5 以前でサポートされていない、全イメージ行ベースのバイナリログ作成が必要です。AWSDMS CDC を使用するには、Amazon RDS DB インスタンスを MySQL バージョン 5.6 にアップグレードする必要があります。

Amazon RDS DB インスタンスのバイナリログ保持を延長するAWS DMS では、変更データキャプチャのバイナリログファイルを保持する必要があります。AmazonRDS DB インスタンスでログの保持を延長するには、以下の手順を使用します。以下の例では、バイナリログの保持を 24 時間に延長します。

call mysql.rds_set_configuration('binlog retention hours', 24);

ログメッセージ: ソースデータベースからの一部の変更は、ターゲットデータベースに適用されても効果がありません。AWS DMS が MySQL データベースの列の値を既存の値に更新すると、MySQL は zero rows affectedのメッセージを返します。この動作は、置き換える値が現在の値と同じであっても 1 行の更新を行うOracle や SQL のサーバーのような他のデータベースエンジンとは異なります。

エラー: 識別子が長すぎます以下のエラーは識別子が長すぎるときに発生します。

TARGET_LOAD E: RetCode: SQL_ERROR SqlState: HY000 NativeError: 1059 Message: MySQLhttp://ODBC 5.3(w) Driverhttp://mysqld-5.6.10Identifier name '<name>' is too long 122502 ODBC general error. (ar_odbc_stmt.c:4054)

AWS DMS がターゲットデータベースにテーブルとプライマリキーを作成するように設定されている場合、現在プライマリキーはソースデータベースで使用されたのと同じ名前を使用していません。代わりに、AWS DMS はテーブル名に基づいてプライマリキー名を作成します。テーブル名が長いと、作成された自動的に生成される識別子が、MySQL に許可されている制限よりも長くなる場合があります。現在、この問題を解決するには、ターゲットデータベースのテーブルとプライマリキーを事前作成し、タスク設

API バージョン API Version 2016-01-01379

Page 387: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドエラー: サポートされていない文字セットによりフィールドデータ変換が失敗しました

定 [Target table preparation mode] が [Do nothing] または [Truncate] に設定されているタスクを使用してターゲットテーブルを入力します。

エラー: サポートされていない文字セットによりフィールドデータ変換が失敗しました以下のエラーは、サポートされていない文字セットによりフィールドデータ変換が失敗した場合に発生します。

"[SOURCE_CAPTURE ]E: Column '<column name>' uses an unsupported character set [120112] A field data conversion failed. (mysql_endpoint_capture.c:2154)

テーブルまたはデータベースが UTF8MB4 エンコーディングを使用している場合、このエラーがよく発生します。バージョンが 3.1.1 より以前の AWS DMS では UTF8MB4 文字セットはサポートされていません。さらに、接続に関係したデータベースのパラメータを確認します。以下のコマンドを使用してこれらのパラメータを確認できます。

SHOW VARIABLES LIKE '%char%';

Error: Codepage 1252 to UTF8 [120112] A field dataconversion failed以下のエラーは、ソース MySQL データベースにコードページ 1252 以外の文字コードが含まれている場合に発生することがあります。

[SOURCE_CAPTURE ]E: Error converting column 'column_xyz' in table'table_xyz with codepage 1252 to UTF8 [120112] A field data conversion failed. (mysql_endpoint_capture.c:2248)

回避策として、ソースの MySQL エンドポイントで追加の接続属性 (CharsetMapping) を使用して、文字セットのマッピングを指定します。この接続属性をさらに追加する場合は、AWS DMS 移行タスクを最初からやり直す必要があります。

たとえば、ソースの文字セットが utf8 または latin1 に設定されている MySQL ソースエンドポイントでは、以下の追加の接続属性が使用される場合があります。65001 は UTF8 コードのページ識別子です。

CharsetMapping=utf8,65001CharsetMapping=latin1,65001

PostgreSQL 固有の問題のトラブルシューティング以下に示しているのは、AWS DMS を PostgreSQL データベースで使用する場合に固有の問題です。

API バージョン API Version 2016-01-01380

Page 388: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイド切り捨てられる JSON データ型

トピック• 切り捨てられる JSON データ型 (p. 381)• ユーザー定義のデータ型の列が正しく移行されない (p. 381)• エラー: 作成用のスキーマが選択されていません (p. 381)• CDC を使用時、テーブルへの削除や更新がレプリケートされない (p. 382)• TRUNCATE ステートメントが反映されない (p. 382)• PostgreSQL の DDL キャプチャを防止する (p. 382)• DDL キャプチャ用のデータベースオブジェクトを作成するスキーマの選択 (p. 382)• PostgreSQL に移行した後 Oracle テーブルが存在しない (p. 382)• ソースとしてビューを使用したタスクで行がコピーされない (p. 382)

切り捨てられる JSON データ型AWS DMS では、PostgreSQL の JSON データ型は LOB データ型の列として処理されます。つまり、制限付き LOB モードを使用するときの LOB のサイズ制限が、JSON データに適用されます。たとえば、制限付き LOB モードが 4096 KB に設定されている場合、4096 KB よりも大きい JSON データは 4096 KB の制限で切り捨てられ、PostgreSQL の検証テストに合格しません。

たとえば、以下のログ情報は、制限付き LOB モードにより切り捨てられた JSON と、失敗した検証を示しています。

03:00:492017-09-19T03:00:49 [TARGET_APPLY ]E: Failed to execute statement: 'UPDATE "public"."delivery_options_quotes" SET "id"=? , "enabled"=? , "new_cart_id"=? , "order_id"=? , "user_id"=? , "zone_id"=? , "quotes"=? , "start_at"=? , "end_at"=? , "last_quoted_at"=? , "created_at"=? , "updated_at"=? WHERE "id"=? ' [1022502] (ar_odbc_stmt2017-09-19T03:00:49 [TARGET_APPLY ]E: Failed to execute statement: 'UPDATE "public"."delivery_options_quotes" SET "id"=? , "enabled"=? , "new_cart_id"=? , "order_id"=? , "user_id"=? , "zone_id"=? , "quotes"=? , "start_at"=? , "end_at"=? , "last_quoted_at"=? , "created_at"=? , "updated_at"=? WHERE "id"=? ' [1022502] (ar_odbc_stmt.c:2415)#03:00:492017-09-19T03:00:49 [TARGET_APPLY ]E: RetCode: SQL_ERROR SqlState: 22P02 NativeError: 1 Message: ERROR: invalid input syntax for type json;, Error while executing the query [1022502] (ar_odbc_stmt.c:2421)2017-09-19T03:00:49 [TARGET_APPLY ]E: RetCode: SQL_ERROR SqlState: 22P02 NativeError: 1 Message: ERROR: invalid input syntax for type json;, Error while executing the query [1022502] (ar_odbc_stmt.c:2421)

ユーザー定義のデータ型の列が正しく移行されないPostgreSQL ソースからレプリケートする場合、AWS DMS はユーザー定義のデータ型を含む列とは別に、すべての列に対して同じデータ型のターゲットテーブルを作成します。このような場合、データ型はターゲットで「character varying」として作成されます。

エラー: 作成用のスキーマが選択されていませんエラー「SQL_ERROR SqlState: 3F000 NativeError: 7 Message: エラー: 作成用のスキーマが選択されていません」は、JSON テーブルのマッピングがスキーマに対してワイルドカード値を含み、ソースデータベースがその値をサポートしていない時に発生することがあります。

API バージョン API Version 2016-01-01381

Page 389: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドCDC を使用時、テーブルへの削除や更新がレプリケートされない

CDC を使用時、テーブルへの削除や更新がレプリケートされない変更データキャプチャ (CDC) 中の削除や更新オペレーションは、ソーステーブルにプライマリキーがない場合、無視されます。AWS DMS では、プライマリキーがある PostgreSQL テーブルの変更データキャプチャ (CDC) がサポートされています。テーブルにプライマリキーがない場合、WAL ログにはデータベース行の前イメージが含まれていないため、AWS DMS がテーブルを更新できません。削除オペレーションをレプリケートする場合は、ソーステーブルにプライマリキーを作成します。

TRUNCATE ステートメントが反映されない変更データキャプチャ (CDC) を使用する場合、AWS DMS は TRUNCATE オペレーションをサポートしません。

PostgreSQL の DDL キャプチャを防止する以下の [Extra Connection Attribute (追加の接続属性)] ステートメントを追加して、PostgreSQL ターゲットエンドポイントが DDL ステートメントをキャプチャするのを防止できます。[Extra Connection Attribute(追加の接続属性)] パラメータは、ソースエンドポイントの [Advanced (詳細)] タブで利用可能です。

captureDDLs=N

DDL キャプチャ用のデータベースオブジェクトを作成するスキーマの選択DDL キャプチャに関連したデータベースオブジェクトをどのスキーマで作成するかを制御できます。以下の [Extra Connection Attribute (追加の接続属性)] ステートメントを追加します。[Extra ConnectionAttribute (追加の接続属性)] パラメータは、ターゲットエンドポイントの [Advanced (詳細)] タブで利用可能です。

ddlArtifactsSchema=xyzddlschema

PostgreSQL に移行した後 Oracle テーブルが存在しないOracle のデフォルトは大文字のテーブル名ですが、PostgreSQL のデフォルトは小文字のテーブル名です。通常、Oracle から PostgreSQL への移行を実行する場合、タスクのテーブルマッピングセクションで変換ルールを追加してテーブル名を変換する必要があります。

テーブルとデータは引き続きアクセス可能です。テーブル名のケースを変換する変換ルールを使わずにテーブルを移行した場合、それらを参照するときにはテーブル名を引用符で囲む必要があります。

ソースとしてビューを使用したタスクで行がコピーされないAWS DMS では、PostgreSQL ソースエンドポイントとしてのビューはサポートされていません。

API バージョン API Version 2016-01-01382

Page 390: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドMicrosoft SQL Server 固有の問題のトラブルシューティング

Microsoft SQL Server 固有の問題のトラブルシューティング

以下に示しているのは、AWS DMS を Microsoft SQL Server データベースで使用する場合に固有の問題です。

トピック• AWS DMS ユーザーアカウントの CDC 使用を特別に許可する (p. 383)• SQL Server データベースの変更キャプチャエラー (p. 383)• IDENTITY 列が存在しない (p. 383)• エラー: SQL Server は公開をサポートしていません (p. 383)• ターゲットに変更が表示されない (p. 384)

AWS DMS ユーザーアカウントの CDC 使用を特別に許可するAWS DMS で使用するユーザーアカウントでは、変更データキャプチャ (CDC) を使用する場合に正しく動作するために、SQL Server の SysAdmin ロールが必要です。SQL Server の CDC はオンプレミスのデータベースまたは EC2 インスタンスのデータベースでのみ利用可能です。

SQL Server データベースの変更キャプチャエラー変更データキャプチャ (CDC) 中のエラーは、前提条件の 1 つが満たされていないことを示している可能性があります。たとえば、最も一般的に見過ごされる前提条件は、完全データベースバックアップです。タスクログは以下のエラーで、この欠落を示します。

SOURCE_CAPTURE E: No FULL database backup found (under the 'FULL' recovery model). To enable all changes to be captured, you must perform a full database backup. 120438 Changes may be missed. (sqlserver_log_queries.c:2623)

「Microsoft SQL Server データベースを AWS DMS のソースとして使用する (p. 105)」で、SQL Server をソースとして使用するための前提条件を確認します。

IDENTITY 列が存在しないAWS DMS では、ターゲットスキーマを作成する場合の IDENTITY 列がサポートされていません。初期ロードの完了後に追加する必要があります。

エラー: SQL Server は公開をサポートしていません以下のエラーは、SQL Server Express をソースエンドポイントとして使用する際に生成されます。

RetCode: SQL_ERROR SqlState: HY000 NativeError: 21106 Message: This edition of SQL Server does not support publications.

AWS DMS では現在、ソースまたはターゲットとして SQL Server Express はサポートされていません。

API バージョン API Version 2016-01-01383

Page 391: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドターゲットに変更が表示されない

ターゲットに変更が表示されないAWS DMS では、変更を一貫してキャプチャするために、ソース SQL Server データベースが「FULL」または「BULK LOGGED」データ復旧モデルのいずれかであることが必要です。「SIMPLE」モデルはサポートされていません。

SIMPLE 復旧モデルは、ユーザーがデータベースを復旧するのに必要な最低限の情報を記録します。すべての非アクティブのログエントリは、チェックポイントが発生すると自動的に切り捨てられます。すべてのオペレーションが記録されていますが、チェックポイントが発生するとすぐにログが自動的に切り捨てられます。つまり、再び利用可能となり、古いログエントリは上書きできるようになります。ログエントリが上書きされると、変更内容はキャプチャできません。そのため AWS DMS では、SIMPLE データ復旧モデルがサポートされていません。SQL Server をソースとして使用するためのその他の前提条件については、「Microsoft SQL Server データベースを AWS DMS のソースとして使用する (p. 105)」を参照してください。

Amazon Redshift 固有の問題のトラブルシューティング

以下に示しているのは、AWS DMS を Amazon Redshift データベースで使用する場合に固有の問題です。

トピック• AWS DMS レプリケーションのインスタンスとは異なるリージョンの Amazon Redshift クラスターに

ロードする (p. 384)• エラー: リレーション「awsdms_apply_exceptions」がすでに存在します (p. 384)• 名前が「awsdms_changes」で始まるテーブルのエラー (p. 384)• dms.awsdms_changes000000000XXXX のような名前のクラスターのテーブルを参照する (p. 385)• Amazon Redshift での作業に必要なアクセス許可 (p. 385)

AWS DMS レプリケーションのインスタンスとは異なるリージョンの Amazon Redshift クラスターにロードするこれは実行できません。AWS DMS では、AWS DMS レプリケーションのインスタンスと Redshift クラスターが同じリージョンにあることが必要です。

エラー: リレーション「awsdms_apply_exceptions」がすでに存在しますエラー "リレーション「awsdms_apply_exceptions」がすでに存在します" は、Redshift エンドポイントがPostgreSQL エンドポイントとして指定されている場合に頻繁に発生します。この問題を解決するには、エンドポイントを変更し、[Target engine] を「redshift」に変更します。

名前が「awsdms_changes」で始まるテーブルのエラー名前が「awsdms_changes」で始まるテーブルに関連するエラーメッセージは、同一の Amazon Redshiftクラスターにデータをロードしようとする 2 つのタスクが同時に実行される場合に頻繁に発生します。一

API バージョン API Version 2016-01-01384

Page 392: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドdms.awsdms_changes000000000XXXX のような名前のクラスターのテーブルを参照する

時テーブルに名前が付けられる方法のため、同じテーブルを更新する場合、同時に実行されるタスクは競合する場合があります。

dms.awsdms_changes000000000XXXX のような名前のクラスターのテーブルを参照するAWS DMS では、S3 に保存されるファイルからデータがロードされると、一時テーブルが作成されます。このような一時テーブルの名前には、プレフィックス「dms.awsdms_changes」が付けられます。 AWSDMS では、データの初回ロード時と最終ターゲットテーブルへの保存前にデータを保存できるように、このようなテーブルが必要です。

Amazon Redshift での作業に必要なアクセス許可Amazon Redshift で AWS DMS を使用するには、Amazon Redshift にアクセスするのに使うユーザーアカウントは、以下のアクセス権限を必要とします。

• CRUD (SELECT、INSERT、UPDATE、DELETE)• BULK Load• CREATE、ALTER、DROP (タスクの定義によって必要な場合)

Amazon Redshift をターゲットとして使用するための前提条件を確認するには、「AWS DatabaseMigration Service のターゲットとしての Amazon Redshift データベースの使用 (p. 174)」を参照してください。

Amazon Aurora MySQL 固有の問題のトラブルシューティング

以下に示しているのは、AWS DMS を Amazon Aurora MySQL データベースで使用する場合に固有の問題です。

トピック• エラー: CHARACTER SET UTF8 フィールドが「,」で切り取られています。行が「\n」で切り取られ

ています (p. 385)

エラー: CHARACTER SET UTF8 フィールドが「,」で切り取られています。行が「\n」で切り取られていますターゲットとして Amazon Aurora MySQL を使用しているときに、ログに以下のようなエラーが表示された場合、通常、このエラーは SQL_MODE パラメータの一部に ANSI_QUOTES があることを示しています。SQL_MODE パラメーターの一部として ANSI_QUOTES がある場合、二重引用符が引用符として処理され、タスクの実行時に問題が起きることがあります。このエラーを修正するには、SQL_MODE パラメーターから ANSI_QUOTES を削除します。

2016-11-02T14:23:48 [TARGET_LOAD ]E: Load data sql statement. load data local infile "/rdsdbdata/data/tasks/7XO4FJHCVON7TYTLQ6RX3CQHDU/data_files/4/LOAD000001DF.csv" into table

API バージョン API Version 2016-01-01385

Page 393: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドエラー: CHARACTER SET UTF8 フィールドが「,」で切り取られています。行が「\n」で切り取られています

`VOSPUSER`.`SANDBOX_SRC_FILE` CHARACTER SET UTF8 fields terminated by ',' enclosed by '"' lines terminated by '\n'( `SANDBOX_SRC_FILE_ID`,`SANDBOX_ID`,`FILENAME`,`LOCAL_PATH`,`LINES_OF_CODE`,`INSERT_TS`,`MODIFIED_TS`,`MODIFIED_BY`,`RECORD_VER`,`REF_GUID`,`PLATFORM_GENERATED`,`ANALYSIS_TYPE`,`SANITIZED`,`DYN_TYPE`,`CRAWL_STATUS`,`ORIG_EXEC_UNIT_VER_ID` ) ; (provider_syntax_manager.c:2561)

API バージョン API Version 2016-01-01386

Page 394: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドパフォーマンスの向上

AWS Database Migration Service のベストプラクティス

AWS Database Migration Service (AWS DMS) を最も効果的に使用するためには、データ移行の最も効率的な方法に関するこのセクションの推奨事項を参照してください。

トピック• AWS DMS 移行のパフォーマンスの向上 (p. 387)• レプリケーションインスタンス用に最適なサイズを選択する (p. 389)• ソースデータベースのロードを縮小する (p. 390)• タスクログを使用して、移行の問題のトラブルシューティングをする (p. 390)• スキーマの変換 (p. 390)• ラージバイナリオブジェクト (LOB) の移行 (p. 391)• 継続的なレプリケーション (p. 392)• Oracle ターゲットのユーザーおよびスキーマの変更 (p. 392)• Oracle ターゲットでテーブルとインデックスのテーブルスペースを変更する (p. 392)• 大規模なテーブルを移行する場合のパフォーマンスの向上 (p. 393)

AWS DMS 移行のパフォーマンスの向上いくつかの要因が AWS DMS 移行のパフォーマンスに影響を与えます。

• ソースのリソース可用性• 利用可能なネットワークスループット• レプリケーションサーバーのリソース容量• ターゲットの変更取り込み機能• ソースデータのタイプとディストリビューション• 移行するオブジェクトの数

テストでは、最適な条件のもとで単一の AWS DMS タスクを使用して、約 12 ~ 13 時間で 1 テラバイトのデータを移行しました。これらの最適な条件には、Amazon EC2 で実行される Amazon RDS のソースデータベース、および Amazon RDS のターゲットデータベースの使用が含まれます。それらはすべて同じアベイラビリティーゾーンにあります。ソースデータベースには、最大 250 GB のデータを含むいくつかの大きなテーブルに比較的均等に分散されたデータの典型的な量が含まれます。ソースデータには、BLOB などの複雑なデータ型は含まれていませんでした。

パフォーマンスを向上させるには、次のベストプラクティスの一部またはすべてを使用します。これらのプラクティスを使用できるかどうかは、特定のユースケースに大きく左右されます。必要に応じて制限事項について言及します。

複数のテーブルを並列的にロードする

デフォルトでは AWS DMS は、一度に 8 つのテーブルをロードします。dms.c4.xlarge またはより大きなインスタンスなどの大量レプリケーションサーバーを使用する際、これを少し増やすことにより

API バージョン API Version 2016-01-01387

Page 395: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドパフォーマンスの向上

パフォーマンスがある程度向上する場合があります。ただし、ある時点で並列処理を増やすことによりパフォーマンスが低下します。dms.t2.medium などのレプリケーションサーバーが比較的小さい場合は、並行してロードされるテーブルの数を減らすことをおすすめします。

AWS マネジメントコンソールでこの数を変更するには、コンソールを開き、[タスク] を選択後、タスクの作成または変更を選択してから、[Advanced Settings (詳細設定)] を選択します。[Tuning Settings(チューニング設定)] で、[並列にロードするテーブルの最大数] オプションを変更します。

AWS CLI を使用してこの数を変更するには、TaskSettings の MaxFullLoadSubTasks パラメータを変更します。

インデックス、トリガーおよび参照整合性制約の使用

インデックス、トリガーおよび参照整合性制約は、移行パフォーマンスに影響を及ぼすことがあるため、移行が失敗する原因になります。これらが移行に及ぼす影響は、レプリケーションタスクが全ロードタスクであるか、継続的なレプリケーション (CDC) タスクであるかによって異なります。

全ロードタスクの場合は、プライマリキーインデックス、参照整合性制約、データ操作言語 (DML) トリガーを削除することをお勧めします。または、全ロードタスクが完了するまで、その作成を遅延させることができます。全ロードタスク中、インデックスは不要であり、存在する場合、インデックスはメンテナンスのオーバーヘッドが発生します。全ロードタスクは一度にテーブルのグループをロードするため、参照整合性の制約に違反します。同様に、挿入、更新、および削除トリガーは、たとえば、以前に一括ロードされたテーブルに対して行の挿入がトリガーされた場合にエラーを引き起こす可能性があります。他のタイプのトリガーも、追加された処理のためにパフォーマンスに影響を及ぼします。

データボリュームが比較的少なく、追加の移行時間が重要でない場合は、全ロードタスクの前にプライマリキーとセカンダリインデックスを作成できます。参照整合性制約とトリガは常に無効にする必要があります。

全ロード + CDC タスクの場合は、CDC フェーズの前にセカンダリインデックスを追加することをお勧めします。AWS DMS は論理的なレプリケーションを使用するため、DML オペレーションをサポートするセカンダリインデックスをインプレースして、完全なテーブルスキャンを防止する必要があります。CDC フェーズの前にレプリケーションタスクを一時停止して、そのタスクを再開する前にインデックスを作成後、トリガーを作成し、参照整合性制約を作成することができます。

バックアップとトランザクションログ記録を無効にする

Amazon RDS データベースに移行する場合、カットオーバーの準備ができるまでは、ターゲットのバックアップとマルチ AZ を無効にすることをお勧めします。同様に、Amazon 以外の RDS システムに移行する場合、カットオーバーまではターゲットのロギングを無効にすることをお勧めします。

複数のタスクを使用する

時には、単一の移行のために複数のタスクを使用することでパフォーマンスが向上します。共通のトランザクションに関与しないテーブルのセットがある場合、複数のタスクに移行を分割できる場合があります。 トランザクションの整合性はタスク内に維持されます。したがって、個別のタスクのテーブルが、共通のトランザクションに関与しないことが重要です。また、各タスクはそれぞれ独立してトランザクションのストリームを読み込みため、ソースデータベースに過度のストレスをかけないよう注意が必要です。

複数のタスクを使用して、個別のレプリケーションストリームを作成して、ソース上の読み取り、レプリケーションインスタンス上のプロセス、およびターゲットデータベースへの書き込みを並列化することができます。

変更処理の最適化

デフォルトでは、AWS DMS は、トランザクションの完全性を維持するトランザクションモードで変更を処理します。トランザクションの完全性を一時的に失効できる場合は、代わりに [最適化バッチ]オプションを使用できます。このオプションでは、効率的にトランザクションがグループ化され、効率化のためにバッチに適用します。[最適化バッチ] オプションを使用することは、確実に参照整合性

API バージョン API Version 2016-01-01388

Page 396: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドレプリケーションインスタンスのサイズ設定

制約に違反するため、移行プロセス中はこれらを無効にし、カットオーバープロセスの一環として、再度有効にする必要があります。

レプリケーションインスタンス用に最適なサイズを選択する

適切なレプリケーションインスタンスの選択は、ユースケースのいくつかの要因によって異なります。レプリケーションインスタンスリソースの使用方法を理解しやすいように、次の説明を参照してください。全ロードと CDC タスクの一般的なシナリオを説明します。

全ロードタスク中、AWS DMS はテーブルを個別にロードします。デフォルトでは、一度に 8 つのテーブルがロードされます。AWS DMS では完全ロードタスク中に継続的な変更がキャプチャされるため、この変更を後でターゲットエンドポイントに適用することができます。変更はメモリにキャッシュされます。使用可能なメモリがなくなると、変更はディスクにキャッシュされます。テーブルの全ロードタスクが完了すると、AWS DMS はキャッシュされた変更をただちにターゲットテーブルに適用します。

テーブルのキャッシュされた変更がすべて適用されると、ターゲットエンドポイントはトランザクション上一貫性のある状態になります。この時点で、ターゲットは、最後にキャッシュされた変更に関して、ソースエンドポイントと同期しています。次に AWS DMS はソースとターゲット間の継続的なレプリケーションを開始します。そのために、AWS DMS ではソーストランザクションログからの変更オペレーションを行い、トランザクションに一貫性のある方法でターゲットに適用します (バッチ最適化適用が選択されていないと仮定)。可能な場合、AWS DMS は、レプリケーションインスタンスのメモリを介して、継続的な変更をストリーミングします。それ以外の場合、AWS DMS は、ターゲットに適用できるようになるまで変更をレプリケーションインスタンスのディスクに書き込みます。

レプリケーションインスタンスが変更処理をどのように処理するか、およびそのプロセスでメモリがどのように使用されるかについて、何らかの制御があります。変更処理のチューニング方法の詳細については、「変更処理のチューニング設定 (p. 269)」を参照してください。

上記の説明から、使用可能なメモリの合計が重要な考慮事項であることがわかります。レプリケーションインスタンスに十分なメモリがあるため、AWS DMS でキャッシュされた継続的な変更をディスクに書き込まずにストリーミングできる場合は、移行のパフォーマンスが大幅に向上します。同様に、変更キャッシングとログストレージに対応するのに十分なディスク容量を持つレプリケーションインスタンスを設定すると、パフォーマンスも向上します。有効な最大 IOPS は選択したディスクサイズによって異なります。

レプリケーションインスタンスクラスと使用可能なディスクストレージを選択する際、次の要素を考慮してください。

• テーブルサイズ - 大きいテーブルでは、ロードに時間がかかり、そのため、テーブルがロードされるまでこれらのテーブルのトランザクションはキャッシュされる必要があります。テーブルにロードされたら、これらのキャッシュされたトランザクションが適用されて、ディスクでは保持されなくなります。

• データ操作言語 (DML) のアクティビティ - 使用中のデータベースはさらにトランザクションを生成します。これらのトランザクションはテーブルがロードされるまでキャッシュされる必要があります。すべてのテーブルがロードされるまで、テーブルがロードされると直ちに個々のテーブルにトランザクションが適用されます。

• トランザクションサイズ – 長時間実行されるトランザクションでは、多くの変更が生成される可能性があります。最適なパフォーマンスを得るために、AWS DMS がトランザクションモードで変更を適用する場合は、トランザクションのすべての変更をストリーミングするのに十分なメモリが利用できる状態である必要があります。

• 移行の合計サイズ - 大規模な移行には時間がかかり、それ比例して多数のログファイルが生成されます。

• タスクの数 - さらに多くのタスクとキャッシュが必要となり、さらに多くのログファイルが生成されます。

API バージョン API Version 2016-01-01389

Page 397: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドソースデータベースのロードを削減する

• ラージオブジェクト -LOB でテーブルをロードするには時間がかかります。

事例証拠は、ログファイルが AWS DMS に必要な領域の大半を使用することを示しています。デフォルトのストレージ設定は、通常は十分です。

ただし、複数のタスクを実行するレプリケーションインスタンスには、さらに多くのディスク容量が必要な場合があります。さらに、データベースに大きいアクティブなテーブルが含まれる場合は、全ロードタスク中にディスクにキャッシュされるトランザクションのためのディスクスペースを増やさなければならない場合があります。たとえば、ロードに 24 時間かかり、1 時間あたり 2 GB のトランザクションが発生する場合は、キャッシュされるトランザクションに対応するために 48 GB の空き領域があることを確認します。また、レプリケーションインスタンスに割り当てるストレージ領域が増えるほど、取得する IOPSも高くなります。

上記のガイドラインは考えられるすべてのシナリオをカバーしていません。レプリケーションインスタンスのサイズを決定する際に、特定のユースケースの詳細を検討することが重要です。移行が実行されたら、レプリケーションインスタンスの CPU、空きメモリ、空き領域、および IOPS を監視します。収集したデータに基づいて、必要に応じてレプリケーションインスタンスのサイズを増減することができます。

ソースデータベースのロードを縮小するAWS DMS は、ソースデータベースでいくつかのリソースを使用します。全ロードタスク中、AWS DMSでは、並行処理される各テーブルに対してソーステーブルのテーブル全体のスキャンが実行されます。さらに、移行の一環として作成する各タスクは、CDC プロセスの一部としてソースに変更を問い合わせます。AWS DMS で、Oracle などの一部のソースの CDC を実行する場合は、データベースの変更ログに書き込むデータ量を増やす必要がある場合があります。

ソースデータベースに過度に負荷を負わせている場合は、移行のタスクの数または、タスクごとのテーブルの数を減らすことができます。各タスクは独立してソースの変更を取得するため、タスクを統合することで変更キャプチャの作業負荷を減らすことができます。

タスクログを使用して、移行の問題のトラブルシューティングをする

場合によっては、AWS DMS で、タスクログでのみ表示可能な問題が発生することがあります。特に、データ切り捨て問題または外部キー違反による行の拒否は、タスクログに書き込まれます。そのため、データベースを移行するときは、タスクログを確認することが重要です。タスクログを表示できるように、Amazon CloudWatch をタスク作成の一環として設定します。

スキーマの変換AWS DMS は、スキーマまたはコード変換を実行しません。異なるデータベースエンジンに既存のスキーマを変換する場合、AWS スキーマ変換ツール (AWS SCT) を使用できます。AWS SCT は、ソースオブジェクト、テーブル、インデックス、ビュー、トリガー、およびその他のシステムオブジェクトをターゲットデータ定義言語 (DDL) 形式に変換します。AWS SCT を使用して、PL/SQL または TSQL などのほとんどのアプリケーションコードを同等のターゲット言語に変換することもできます。

AWS SCT は、AWS から無料でダウンロードできます。AWS SCT の詳細については、「 AWS SchemaConversion Tool ユーザーガイド」を参照してください。

ソースおよびターゲットエンドポイントが同じデータベースエンジンの場合は、Oracle SQLDeveloper、MySQL Workbench、または PgAdmin4 などのツールを使用して、スキーマを起動できます。

API バージョン API Version 2016-01-01390

Page 398: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドラージバイナリオブジェクト (LOB) の移行

ラージバイナリオブジェクト (LOB) の移行一般に、AWS DMS は LOB データを 2 つのフェーズに移行します。

1. AWS DMS は、ターゲットテーブルに新しい行を作成し、その行に関連する LOB 値を除くすべてのデータを入力します。

2. AWS DMS は、ターゲットテーブルの行を LOB データで更新します。

この LOB の移行プロセスでは、移行中はターゲットテーブルのすべての LOB 列で null が許容されるようにする必要があります。これは、ソーステーブルの LOB 列で null が許容されていない場合にも該当します。AWS DMS がターゲットテーブルを作成すると、LOB 列はデフォルトで NULL に設定されます。インポートやエクスポートなどの他のメカニズムを使用してターゲットテーブルを作成する場合は、移行タスクを開始する前に LOB 列で null が許容されることを確認する必要があります。

この要件には 1 つの例外があります。Oracle ソースから Oracle ターゲットへの同種移行を実行し、[制限付き LOB モード] を選択しているとします。この場合、すべての LOB 値を含めて、行全体が一度に入力されます。このような場合、AWS DMS では、必要に応じて、ターゲットテーブルの LOB 列を null 許容制約なしで作成できます。

制限付き LOB モードの使用AWS DMS は、移行に LOB 値が含まれている場合に、パフォーマンスと利便性のバランスをとる 2 つのメソッドを使用します。

• [制限付き LOB モード] は、すべての LOB 値をユーザー指定のサイズ制限 (デフォルトは 32 KB) に移行します。サイズ制限を超える LOB 値は、手動で移行する必要があります。[制限付き LOB モード]、すべての移行タスクのデフォルトで、通常最高のパフォーマンスが得られます。ただし、[最大 LOB サイズ] パラメータの設定が正しいことを確認する必要があります。このパラメータは、すべてテーブルに対して最大の LOB サイズに設定する必要があります。

• [完全 LOB モード] は、サイズに関係なくテーブル内のすべての LOB データを移行します。[完全 LOBモード] は、テーブル内のすべての LOB データを移動する際の利便性を提供しますが、そのプロセスがパフォーマンスに重大な影響を与える可能性があります。

PostgreSQL など一部のデータベースエンジンに対して、AWS DMS は JSON データ型を LOB のように扱います。[制限付き LOB モード] を使用している場合、[最大 LOB サイズ] オプションが、JSON データが切り捨てられない値に設定されていることを確認します。

AWS DMS は、大きなオブジェクトのデータ型 (BLOB、CLOB、NCLOB) の使用を完全にサポートするようになりました。以下のソースエンドポイントは、完全に LOB サポートされています。

• Oracle• Microsoft SQL Server• ODBC

以下のターゲットエンドポイントは、完全に LOB サポートされています。

• Oracle• Microsoft SQL Server

以下のターゲットエンドポイントには、制限付きの LOB サポートがあります。このターゲットエンドポイントに無制限の LOB サイズは使用できません。

• Amazon Redshift

API バージョン API Version 2016-01-01391

Page 399: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイド継続的なレプリケーション

完全な LOB サポートがあるエンドポイントについては、LOB データ型にサイズ制限を設定できます。

継続的なレプリケーションAWS DMS は、ソースとターゲットのデータベースを同期させたまま、データの継続的なレプリケーションを行います。これは、限られた量のデータ定義言語 (DDL) のみをレプリケートします。AWS DMS は、インデックス、ユーザー、権限、ストアドプロシージャ、およびテーブルデータに直接関係しない他のデータベースの変更などの項目を反映しません。

継続的なレプリケーションを使用する予定がある場合は、レプリケーションインスタンスで [マルチ AZ]オプションを有効にする必要があります。[マルチ AZ] オプションは、レプリケーションインスタンスに対して高可用性とフフェイルオーバーサポートを提供します。ただし、このオプションによって、パフォーマンスに影響を及ぼす可能性があります。

Oracle ターゲットのユーザーおよびスキーマの変更

Oracle をターゲットとして使用するとき、AWS DMS はターゲットエンドポイントのユーザーが所有するスキーマにデータを移行します。

たとえば、PERFDATA という名前のスキーマを Oracle のターゲットエンドポイントに移行するとして、ターゲットエンドポイントのユーザー名が MASTER だとします。AWS DMS は Oracle ターゲットをMASTER として接続し、MASTER スキーマを PERFDATA からのデータベースオブジェクトで入力します。

この動作をオーバーライドするには、スキーマ変換を指定する必要があります。たとえば、PERFDATA スキーマオブジェクトをターゲットエンドポイントの PERFDATA スキーマに移行する場合、次の変換を使用できます。

{ "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "PERFDATA" }, "rule-target": "schema", "rule-action": "rename", "value": "PERFDATA"}

変換の詳細については、「 JSON を使用するテーブルマッピングによりテーブル選択および変換を指定する (p. 291)」を参照してください。

Oracle ターゲットでテーブルとインデックスのテーブルスペースを変更する

Oracle をターゲットとして使用するときにソースも Oracle の場合には、AWS DMS はテーブルスペースをソースで定義されているように移行します。ただし、ソースが Oracle 以外の場合には、AWS DMS はすべてのテーブルとインデックスをターゲットのデフォルトのデーブルとインデックスのテーブルスペースに移行します。

API バージョン API Version 2016-01-01392

Page 400: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイド大規模なテーブルを移行する場合のパフォーマンスの向上

たとえば、ソースが Oracle ではないデータベースエンジンだとします。すべてのターゲットテーブルとインデックスは、同じデフォルトのテーブルスペースに移行されます。

この動作をオーバーライドするには、該当するテーブルスペース変換を指定する必要があります。たとえば、テーブルとインデックスをソースのスキーマから名付けられた Oracle ターゲットのテーブルとインデックスのテーブルスペースに移行するとします。この場合、次のような変換を使用できます。ここでは、ソースのスキーマは INVENTORY と名付けられ、ターゲットの該当するテーブルとインデックスのテーブルスペースはそれぞれ INVENTORYTBL および INVENTORYIDX と名付けられます。

{ "rule-type": "transformation", "rule-id": "3", "rule-name": "3", "rule-action": "rename", "rule-target": "table-tablespace", "object-locator": { "schema-name": "INVENTORY", "table-name": "%", "table-tablespace-name": "%" }, "value": "INVENTORYTBL"},{ "rule-type": "transformation", "rule-id": "4", "rule-name": "4", "rule-action": "rename", "rule-target": "index-tablespace", "object-locator": { "schema-name": "INVENTORY", "table-name": "%", "index-tablespace-name": "%" }, "value": "INVENTORYIDX"}

変換の詳細については、「 JSON を使用するテーブルマッピングによりテーブル選択および変換を指定する (p. 291)」を参照してください。

大規模なテーブルを移行する場合のパフォーマンスの向上

大規模なテーブルを移行するときにパフォーマンスを向上させる場合は、複数のタスクに移行を分割することができます。行フィルタリングを使用して複数のタスクへの移行を分割するには、キーまたはパーティションキーを使用します。たとえば、1〜8,000,000 の整数プライマリキー ID がある場合、行フィルタリングを使用して 8 つのタスクを作成し、それぞれ 100 万レコードを移行できます。

AWS マネジメントコンソールで行フィルタリングを適用するには、コンソールを開き、[タスク] を選択してから、新しいタスクを作成します。[テーブルマッピング] セクションで、[Selection Rule (選択ルール)]の値を追加します。次に、(2 つの値の間で) より小さいか等しい、より大きいか等しい、等しいまたは範囲条件の列フィルタを追加できます。列フィルタについての詳細は、「 コンソールからのテーブルマッピングによりテーブル選択および変換を指定する (p. 286)」を参照してください。

また、日付で分割された大きなパーティションテーブルがある場合は、日付に基づいてデータを移行することもできます。たとえば、月別にパーティション化されたテーブルがあり、現在の月のデータのみが更新されたとします。この場合、静的な毎月のパーティションごとに全ロードタスクを作成し、現在更新されているパーティションに対して全ロード + CDC タスクを作成することができます。

API バージョン API Version 2016-01-01393

Page 401: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドAWS DMS データ型

AWS DMSリファレンスこのリファレンスセクションには、データ型変換の情報など、AWS Database Migration Service (AWSDMS) を使用する際に必要になる追加情報があります。

AWS DMS は、ソートとターゲットの両方が同じエンジンタイプを使用する同種データベース移行を実行するときにデータ型を保持します。データベースエンジン間を移行する異機種間の移行を実行すると、データ型が中間データ型に変換されます。データ型がターゲットデータベースにどのように表示されるかを確認するには、ソースおよびターゲットのデータベースエンジンのデータ型テーブルを参照します。

データベースを移行する際、データ型に関する以下の重要な点に注意してください。

• FLOAT データ型は本質的に近似値です。FLOAT データ型の特定の値を挿入すると、データベースでは異なった方法で表現されることがあります。これは、FLOAT は、NUMBER や NUMBER(p,s) などの 10進データ型のように正確なデータ型ではないためです。そのため、データベースに保存された FLOATの内部値は、挿入した値とは異なる場合があります。これにより、FLOAT の移行された値がソースデータベースの値と正確に一致しない可能性があります。

この問題の詳細については、次の記事を参照してください。• Wikipedia の「IEEE floating point」• MSDN の「IEEE Floating-Point Representation」• MSDN の「 Why Floating-Point Numbers May Lose Precision」

トピック• AWS Database Migration Service のデータ型 (p. 394)

AWS Database Migration Service のデータ型AWS Database Migration Service では、組み込みのデータ型を使用して、別のデータベースエンジンタイプにデータを移行します。次の表に、組み込みのデータ型とその説明を示します。

AWS DMS データ型 説明

STRING 文字列。

WSTRING ダブルバイト文字列。

BOOLEAN ブール値。

BYTES バイナリデータ値。

DATE 日付値: 年、月、日。

TIME 時刻値: 時、分、秒。

DATETIME タイムスタンプ値: 年、月、日、時間、分、秒、小数点以下の秒。小数点以下の秒のスケールは最大 9桁です。

INT1 1 バイト、符号付き整数。

INT2 2 バイト、符号付き整数。

API バージョン API Version 2016-01-01394

Page 402: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドAWS DMS データ型

AWS DMS データ型 説明

INT4 4 バイト、符号付き整数。

INT8 8 バイト、符号付き整数。

NUMERIC 固定精度およびスケールの正確な数値。

REAL4 単精度浮動小数点値。

REAL8 倍精度浮動小数点値。

UINT1 1 バイト、符号なし整数。

UINT2 2 バイト、符号なし整数。

UINT4 4 バイト、符号なし整数。

UINT8 8 バイト、符号なし整数。

BLOB バイナリラージオブジェクト。このデータ型は、Oracle エンドポイントでのみ使用できます。

CLOB 文字ラージオブジェクト。

NCLOB ネイティブ文字ラージオブジェクト。

API バージョン API Version 2016-01-01395

Page 403: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドAWS DMS 3.3.0 リリースノート

AWS DMS リリースノート続いて、AWS Database Migration Service (AWS DMS) のバージョンのリリースノートを見つけることができます。

Note

レプリケーションインスタンス を 2.4.x から最新バージョンに直接アップグレードできるようになりました。Note

AWS DMS バージョン 3.1.4 および 3.3.0 が利用可能になりました。また、バージョン 3.3.0 はベータ版としてのみリリースされています。

AWS Database Migration Service (AWS DMS) 3.3.0ベータ版リリースノート

次の表は、AWS Database Migration Service (AWS DMS) バージョン 3.3.0 ベータ版の機能とバグ修正の一覧です。

新機能または拡張機能 説明

新しい Oracle バージョン Oracle 18c は、ソースおよびターゲットエンドポイントとしてサポートされるようになりました。

新しい PostgreSQL バージョン

PostgreSQL 10.x および 11.x は、ソースおよびターゲットエンドポイントとしてサポートされるようになりました。

ソースエンドポイントとしてOracle の機能強化

以下のサポートを追加しました。

• ネストされたテーブル。• RESETLOGS コマンド。• 変更データキャプチャ (CDC) ロードの変更を収集する際の Oracle

Automatic Storage Management (ASM) の並列読み取りスレッドと先読みバッファの数の制御。Oracle ASM を使用するためのこれらの拡張機能の詳細については、「 Oracle ソースデータベースでの変更データキャプチャ (CDC) の設定 (p. 90)」を参照してください。

ソースエンドポイントとしての Microsoft SQL Server の機能強化

強化された AlwaysOn のサポートが追加されました。AlwaysOn レプリカから変更を移行できるようになりました。

大規模な Amazon DynamoDB更新のサポート

大規模な更新をそれぞれ 4 KB未満の複数のチャンクに分割し、それらを DynamoDB に適用して更新の制限を回避するサポートが追加されました。これが発生すると、警告メッセージが表示されます。

解決された問題は以下のとおりです。

• DMS が Azure SQL Server ソースに接続できない問題を修正しました。• PostgreSQL の JSON LOB 列が移行されていなかった問題を修正しました。

API バージョン API Version 2016-01-01396

Page 404: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドAWS DMS 3.1.4 リリースノート

• MySQL から MySQL への移行で、0000-00-00 の日付が 0101-01-01 として移行されていた問題を修正しました。

• PostgreSQL への進行中のレプリケーション中に、DMS が数値配列の列を持つテーブルを作成できなかった問題を修正しました。

• テーブルに PK がないときにターゲット Amazon Redshift インスタンスに更新が適用されない問題を修正しました。

• PostgreSQL ソースで名前が "pg%" で始まるスキーマから DMS がテーブルを選択できなかった問題を修正しました。

• ブール値を Aurora PostgreSQL から Amazon Redshift に移行するときにタスクが失敗する問題を修正しました。

• EUC_JP エンコーディングの特殊文字が PostgreSQL から PostgreSQL に移行されていなかった問題を修正しました。

• DMS タスクが aws_dms_apply_exceptions 制御テーブルを作成できないために失敗する問題を修正しました。

• ある時点から「有効な時間値が指定されていません」というエラーが表示され、進行中のレプリケーションが失敗する、ソースとしての SQL Server および Oracle の問題を修正しました。

• テーブルにプライマリキーと一意の制約事項があり、一意の制約事項の列に継続的な変更があると、進行中のレプリケーションが中断する問題を修正しました。

• MySQL TIMESTAMP(0) 列の移行により、タスクが変更のレプリケーションを停止する問題を修正しました。

AWS Database Migration Service (AWS DMS) 3.1.4リリースノート

次の表は、AWS Database Migration Service (AWS DMS) バージョン 3.1.4 の機能とバグ修正の一覧です。

新機能または拡張機能 説明

ソースコミットタイムスタンプ列を Amazon S3 ターゲットファイルに追加する

S3 への移行時に、ターゲットエンドポイント設定を使用して、ソースコミットタイムスタンプを .csv ファイルまたは .parquet ファイルの追加の列に挿入できるようになりました。追加の列の名前を指定することもできます。詳細については、「timestampColumnName」を参照してください。

Amazon S3 ターゲットファイルに全ロードのオペレーション列を含める

S3 ターゲットファイルの全ロードと継続的なレプリケーション操作の一貫性を保つために、全ロード時にオペレーション列を追加するターゲットエンドポイント設定を指定できるようになりました (.csv 形式のみ)。詳細については、「includeOpForFullLoad」を参照してください。

Amazon S3 ソースファイルと Amazon S3 ターゲットファイルの形式を一致させる

S3 ソースファイル形式と S3 ターゲットファイル形式を一致させるための改善が追加されました。オペレーションの列値が S3 ファイルでどのようにコード化されているかに関する詳細については、「AWS DMS のソースとしての Amazon S3 の使用 (p. 146)」の注意事項を参照してください。これらの値をコーディングするオプションの詳細については、「移行済み S3 データでのソース DB オペレーションの表示 (p. 207)」を参照してください。

Amazon S3 ターゲットファイルの TIMESTAMP 列の精度を .parquet ファイル形式で指定する

.parquet 形式の S3 ターゲットファイルの場合のみ、TIMESTAMP 列にマイクロ秒またはミリ秒の精度を指定できます。ミリ秒の精度を指定すると Amazon Athena と AWS Glue によるデータの処理が許可されます。詳細については、「parquetTimestampInMillisecond」を参照してください。

API バージョン API Version 2016-01-01397

Page 405: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドAWS DMS 3.1.3 リリースノート

新機能または拡張機能 説明

Amazon Kinesis DataStreamsへのマルチスレッドロード

このバージョンの DMS は、複数のスレッドを使用することにより、Kinesis Data Streams へのより高速なロードが可能になります。

大規模な Amazon DynamoDB更新のサポート

大規模な更新をそれぞれ 4 KB未満の複数のチャンクに分割し、それらを DynamoDB に適用して更新の制限を回避するサポートが追加されました。これが発生すると、警告メッセージが表示されます。

データ検証のさまざまなパフォーマンスの改善

null 入力可能な一意のキーを処理する機能など、データ検証にさまざまなパフォーマンスの改善が追加されました。

ログ記録の改善 さまざまなログ記録の改善を追加しました。

解決された問題は以下のとおりです。

• DMS が Oracle ソースから変更をキャプチャできず、ASM が設定され、DMS が並行変更読み取りを実行している問題を修正しました。

• トランザクションログバックアップから変更を読み取るときに、DMS が Microsoft SQL Server ソースから nvarchar 列の変更をキャプチャできなかった問題を修正しました。

• Oracle のテーブルメタデータからサプリメンタルロギングが有効になっているテーブルの列に関する詳細をレプリケーションプロセスが見つけることができなかったため、DMS タスクがクラッシュする問題を修正しました。

• DMS が中断した場所から変更の収集を再開しようとしたときに無効なパラメータを渡し、消去された古い変更を探す問題を修正しました。

• DMS タスクログの変更されたストリームバッファメッセージが、複数回ではなく 1 回ログ記録されるように変更されました。これらのメッセージを複数回ログに記録すると、基礎となるストレージがいっぱいになり、タスクの他のパフォーマンスの問題が発生しました。

• ユーザーによって停止タスクが試行された後、DMS がタスク状態を停止ではなく失敗と返していたエラーを修正しました。

• ソースとして Db2 で追加の接続属性が使用される場合、ソースとしての Linux、UNIX、およびWindows 用の IBM Db2 (Db2 LUW) のセグメンテーション障害の問題を修正しました。

• PostgreSQL をソースとする切り捨ての失敗および LOB 切り捨ての失敗に関するいくつかの問題を修正しました。

• S3 ソースバケットが存在しない場合にタスクが失敗しなかった問題を修正しました。これでタスクが失敗した場合に関連するエラーメッセージが表示されます。

• DMS が S3 データを Parquet ファイル形式で移行するときのメモリリークを修正しました。• データ検証のさまざまな修正が含まれています。• ドロップされるコレクションがタスクのスコープ内にない場合、MongoDB のドロップコレクションコ

マンドがタスクの失敗を引き起こす問題を修正しました。• データの NULL 値が原因で S3 ターゲットエンドポイントを持つタスクがクラッシュする問題を修正し

ました。• 新しいメモリプールの作成が原因で S3 へのバルクロードが遅くなる問題を修正しました。S3 への全

ロードは、DMS 3.1.4 で 20 パーセント速くなりました。

AWS Database Migration Service (AWS DMS) 3.1.3リリースノート

次の表は、AWS Database Migration Service (AWS DMS) バージョン 3.1.3 の機能とバグ修正の一覧です。

API バージョン API Version 2016-01-01398

Page 406: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドAWS DMS 3.1.3 リリースノート

新機能または拡張機能 説明

ターゲットとしての AmazonDocumentDB (MongoDB 互換) のサポート

Amazon DocumentDB をターゲットとして使用して、MongoDB 互換データベースのセットアップ、操作、およびスケーリングを簡単に行える、高速で信頼性の高い完全マネージド型データベースサービスをデプロイできるようになりました。

Apache Parquet ストレージ形式で Amazon S3 ターゲットをサポート

S3 ターゲットオブジェクトのストレージ形式として、.parquet ファイルを選択して設定できるようになりました。

Amazon Redshift と AmazonS3 ターゲットデータの AWSKey Management Service(AWS KMS) キー暗号化

Amazon Redshift および S3 ターゲットにおいてデータのサーバー側暗号化に KMS キーを使用できるようになりました。

テーブルマッピングの選択とデータ変換の拡張

テーブルとそのスキーマを明示的に選択できるようになりました。また、Oracle ターゲットではテーブルとインデックステーブルスペースを変換し、任意のターゲットでテーブルのプライマリキーを更新できます。

Amazon S3 ターゲットオブジェクトのタグ付けサポート

S3 ターゲットバケットに書き込まれた各オブジェクトにタグを関連付けることができるようになりました。

選択したターゲットでMicrosoft SQL Server から移行した TIMESTAMP データ型

Microsoft SQL Server から Amazon Elasticsearch Service あるいはAmazon Kinesis ターゲットに移行した TIMESTAMP データタイプがバイナリから 16 進数文字列に変更されるようになりました (0x654738 など)。以前は、これらの TIMESTAMP 値はバイナリデータとしてマッピングされると失われていました。

ログ付けレベルの DEFAULTあるいは INFO への推移

AWS DMS は、ログレベルが DEFAULT あるいは INFO レベルに戻る場合にログ記録するようになりました。以前は、これらのログレベルの遷移は記録されませんでした。

データ検証とフィルタ設定 データ検証では、ソースとターゲット間のデータ検証時に行フィルタ設定を優先するようになりました。

Amazon S3 ソースオブジェクトの文字列処理オプション

新しい追加の接続属性 rfc4180 が使用できるようになりました。二重引用符 (") 付きのソース文字列の処理方法を制御できます。

Oracle ソースエンドポイントでサポートされているCREATE TABLE AS ステートメント

Oracle ソースエンドポイントに対して CREATE TABLE AS ステートメントを実行した結果、AWS DMS がデータを変更できるようになりました。

ソースまたはターゲットとして、およびターゲットとして複数のリレーショナルデータベースでサポート AmazonRedshift される文字置換

選択したソースデータベース文字の Unicode コードポイントとターゲットでの置換に基づいて、ターゲットデータベースの文字を置き換えるタスク設定を指定できるようになりました。また、指定した文字セットで無効なすべての文字について、ターゲットで 1 つの文字置換が行われるように指定できるようになりました。これにより、ターゲットデータベースは、選択した 1 つの文字セットに有効な文字のみを保存します。

解決された問題は以下のとおりです。

API バージョン API Version 2016-01-01399

Page 407: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドAWS DMS 3.1.2 リリースノート

報告日 説明

2018 年 12 月 17 日 Secure Sockets Layer (SSL) の有効化時に Amazon S3 ソースとPostgreSQL ターゲットにタスク障害の原因となる問題を修正しました。

2018 年 12 月 11 日 MySQL の完了率が誤って報告される問題を修正しました。

2018 年 11 月 11 日 Amazon S3 ソースで文字列の二重引用符 (") がタスク障害の原因となる問題を修正しました。

2018 年 11 月 6 日 Amazon S3 ターゲットでヘッダー列のカスタム .csv 区切り記号値が正しく適用されない問題を修正しました。

2018 年 8 月 16 日 チェックポイントリカバリ有効時に制約エラーが重複される問題を修正しました。

AWS Database Migration Service (AWS DMS) 3.1.2リリースノート

次の表は、AWS Database Migration Service (AWS DMS) バージョン 3.1.2 の機能とバグ修正の一覧です。

新機能または拡張機能 説明

ターゲットとしての AmazonKinesis Data Streams のサポート

Kinesis Data Streams をターゲットとして使用して、大量のデータをリアルタイムで処理できるようになりました。

ターゲットとしての AmazonElasticsearch Service のサポート

Amazon ES をターゲットとして使用して、オープンソースのElasticsearch をですべてのデータの複雑なクエリおよび分析エンジンをデプロイおよび操作できるようになりました。他の機能の中でも、これには、マルチスレッドの全ロードと変更データキャプチャ (CDC) の両方のサポートが含まれ、クエリエンジンを最新の状態に保ちます。

Windows 向け IBM Db2 (Db2LUW) の更新バージョンをソースとしてサポート

これで、すべての Fix Pack がサポートされた Db2 LUW バージョン11.1 をソースとして使用できます。

夏時間が変更されたときのレイテンシー再計算のサポート

ソースとして Oracle や PostgreSQL を使用する場合、夏時間の変更中にタイムオフセットを再計算できるようになりました。

解決された問題は以下のとおりです。

報告日 説明

2018 年 7 月 19 日 Full LOB モードでの変更データキャプチャ中に、ソースとしてPostgreSQL が Null 値を Empty として Oracle に送信していた問題を修正しました。

2018 年 9 月 19 日 SQL Server の varchar 列で Null 値がすべてのターゲットに異なる方法で移行された問題を修正しました。

API バージョン API Version 2016-01-01400

Page 408: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドAWS DMS 3.1.1 リリースノート

報告日 説明

2018 年 10 月 7 日 変換ルールが存在したときに LOB 設定が機能しなかった問題を修正しました。

2018 年 10 月 12 日 特定の場合に、ソースとしての Oracle の実行中のレプリケーションタスクが停止した後、再開できなかった問題を修正しました。

2018 年 10 月 12 日 特定の場合に、ソースとしての SQL Server の実行中のレプリケーションタスクが停止した後、再開できなかった問題を修正しました。

複数の日付 バージョン 3.1.1 に含まれるソースとしての PostgreSQL の複数の問題を修正しました。

AWS Database Migration Service (AWS DMS) 3.1.1リリースノート

次の表は、AWS Database Migration Service (AWS DMS) バージョン 3.1.1 の機能とバグ修正の一覧です。

新機能または拡張機能 説明

4 バイト UTF-8 文字への移行 AWS DMS は、UTF8MB4 など、すべての 4 バイト文字セットをサポートするようになりました。この機能は構成を変更しなくても動作します。

ソースとして Microsoft SQLServer 2017 のサポート

ソースとして SQL Server 2017 のサポートを追加しました。詳細については、「Microsoft SQL Server データベースを AWS DMS のソースとして使用する (p. 105)」を参照してください。

テーブルの並列処理による全ロードをサポート

パーティションおよびサブパーティションに基づいた、大きなテーブルの並列処理による全ロードのサポートを追加しました。この機能は、各テーブルのパーティションまたはサブパーティションが、バルクロード処理を高速化するため、別のアンロードスレッドを使用します。テーブルデータのサブセットを移行するため、特定範囲やパーティションを指定できます。サポートされているソースは Oracle、SQL Server、Sybase、MySQL、および IBM Db2 forLinux、UNIX、PostgreSQL、および Windows (Db2 LUW) です。詳細については、「テーブル設定のルールとオペレーション (p. 304)」を参照してください。

テーブルごとのラージオブジェクト (LOB) 設定の管理

テーブルごとの LOB 設定を、テーブルマッピング設定を追加することにより、制御できるようになりました。詳細については、「ターゲットメタデータのタスク設定 (p. 263)」を参照してください。サポートされるソースは、Oracle、SQL Server、MySQL、および PostgreSQL です。

1 回の移行タスク内でのテーブルのロード順序を制御

移行タスクのテーブルマッピングを使用して、テーブルのロード順序を制御できるようになりました。テーブルマッピングの符号なし整数のロード順序を使ってテーブルをタグ付けすることにより順序を指定できます。ロード順序の値が大きいテーブルが最初に移行されます。詳細については、「テーブルマッピングを使用して、タスクの設定を指定する (p. 286)」を参照してください。

PostgreSQL をソースとして使用するとき、プライマリ

継続的なレプリケーションのソースとして PostgreSQL を使用するとき、プライマリキー値を更新します。

API バージョン API Version 2016-01-01401

Page 409: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドAWS DMS 3.1.1 リリースノート

新機能または拡張機能 説明キー値に対する更新をサポート

解決された問題は以下のとおりです。

報告日 説明

2018 年 24 月 4 日 Azure SQL を SQL Server 2016 のソースエンドポイントとして作成できなかった問題を修正しました。

2018 年 5 月 5 日 Oracle ソースの CHR(0) が Aurora と MySQL の互換性 ターゲットでCHR(32) として移行されていた問題を修正しました。

2018 年 5 月 10 日 Oracle の物理的なスタンバイから変更を移行するために OracleLogMiner を使用したとき、ソースとして Oracle から継続的なレプリケーションが期待どおりに動作しない問題を修正しました。

2018 年 5 月 27 日 PostgreSQL への移行中に PostgreSQL でさまざまなデータ型が 3 倍になる問題を修正しました。

2018 年 12 月 6 日 TEXT から NCLOB (PostgreSQL から Oracle) へ移行中に、エンジンが文字列内の Null の処理が異なるためにデータが変更される問題を修正しました。

2018 年 6 月 17 日 ソースの MySQL バージョン 5.5 から移行するとき、ターゲットのMySQL バージョン 5.5 インスタンスのプライマリキー作成にレプリケーションタスクが失敗する問題を修正しました。

2018 年 23 月 6 日 PostgreSQL インスタンスから PostgreSQL との互換性がある Aurora に移行するとき、フル LOB モードで JSON カラムが切り詰められていた問題を修正しました。

2018 年 27 月 6 日 ターゲットとしての PostgreSQL に対する変更のバッチ適用が、ターゲットの中間差分変更テーブル作成の問題により失敗したときの問題を修正しました。

2018 年 6 月 30 日 フルロードの実行中に MySQL タイムスタンプ '0000-00-0000:00:00' が期待どおりに移行できない問題を修正しました。

2018 年 7 月 2 日 DMS レプリケーションタスクが、ソース Aurora MySQL フェイルオーバーが発生したため、期待どおりに継続しなかった問題を修正しました。

2018 年 7 月 9 日 MySQL から Amazon Redshift への移行で、不明なカラムとデータタイプエラーにより失敗していたときの問題を修正しました。

2018 年 7 月 21 日 SQL Server から PostgreSQL への文字列内の Null 文字が、制限付きのLOB とフル LOB モードでは異なる方法で移行されてた問題を修正しました。

2018 年 7 月 23 日 ソースの SQL Server で保護トランザクションが SQL Server のトランザクションログをいっぱいにしていた問題を修正しました。

2018 年 7 月 26 日 PostgreSQL から Oracle へのロールフォワード移行で Null 値が空の値として移行されていた問題を修正しました。

API バージョン API Version 2016-01-01402

Page 410: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドAWS DMS 2.4.5 リリースノート

報告日 説明

複数の日付 Amazon CloudWatch ログにより、移行に関する十分な情報をユーザーに通知するよう、さまざまなログの問題を修正しました。

複数の日付 さまざまなデータ検証の問題を修正しました。

AWS Database Migration Service (AWS DMS) 2.4.5リリースノート

次の表は、AWS Database Migration Service (AWS DMS) バージョン 2.4.5 の機能とバグ修正の一覧です。

新機能または拡張機能 説明

Amazon Redshift およびAmazon S3 ターゲットデータで KMS キーの暗号化

Amazon Redshift および S3 ターゲットにおいてデータのサーバー側暗号化に KMS キーを使用できるようになりました。

ログ付けレベルの DEFAULTあるいは INFO への推移

AWS DMS は、ログレベルが DEFAULT あるいは INFO レベルに戻る場合にログ記録するようになりました。以前は、これらのログレベルの遷移は記録されませんでした。

データ検証とフィルタ設定 データ検証では、ソースとターゲット間のデータ検証時に行フィルタ設定を優先するようになりました。

Amazon S3 ソースオブジェクトの文字列処理オプション

新しい追加の接続属性 rfc4180 が使用できるようになりました。二重引用符 (") 付きのソース文字列の処理方法を制御できます。

解決された問題は以下のとおりです。

報告日 説明

2019 年 1 月 19 日 Oracle エンドポイントで、asm_password なしで passwordおよび securityDbEncryptionName を指定する場合に、securityDbEncryptionName が正しく設定されない問題を修正しました。

2018 年 12 月 11 日 MySQL の Percentage Complete が誤って報告される問題を修正しました。

2018 年 11 月 11 日 Amazon S3 ソースで文字列の二重引用符 (") がタスク障害の原因となる問題を修正しました。

2018 年 11 月 6 日 Amazon S3 ターゲットでヘッダー列のカスタム .csv 区切り記号値が正しく適用されない問題を修正しました。

2018 年 8 月 16 日 チェックポイントリカバリ有効時に制約エラーが重複される問題を修正しました。

API バージョン API Version 2016-01-01403

Page 411: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドAWS DMS 2.4.4 リリースノート

AWS Database Migration Service (AWS DMS) 2.4.4リリースノート

次の表は、AWS Database Migration Service (AWS DMS) バージョン 2.4.4 の機能とバグ修正の一覧です。

新機能または拡張機能 説明

フィルタ句を含む移行の検証 テーブルフィルタを使ってテーブルのサブセットを移行時にデータを検証できるようになりました。

Open Database Connectivity(ODBC) ドライバーのアップグレード

基盤となる MySQL は、5.3.11-1 に、Amazon Redshift 用の ODBC ドライバーは、1.4.2-1010 にアップグレードされました。

夏時間が変更したときのレイテンシー再計算

ソースとしての Oracle と PostgreSQL に対する夏時間の変更中にタイムオフセットを再計算できるようになりました。夏時間の変更後、ソースとターゲットのレイテンシーの計算は正確です。

UUID データ型変換 (SQLServer から MySQL)

SQL Server をソースとし、MySQL をターゲットとして移行するとき、UNIQUEIDENTIFER データ型 (汎用一意識別子、つまり UUID) をバイト値に変換できるようになりました。

Amazon S3 をソースとして、Amazon Redshift をターゲットとする暗号化モードに変更する機能

ソースとしての S3、ターゲットとしての Amazon Redshift の間で移行するときに暗号化モードを変更できるようになりました。接続属性を使用して暗号化モードを指定します。サーバー側の暗号化と AWS KMS の両方がサポートされています。

解決された問題は以下のとおりです。

報告日 説明

2018 年 7 月 17 日 フルラージバイナリオブジェクト (LOB) モードで変更データキャプチャ(CDC) 中に、PostgreSQL をソースとして ターゲットの Oracle データベースに Null 値を空の値として送信したときの問題を修正しました。

2018 年 7 月 29 日 DMS をバージョン 1.9.0 からアップグレード後に、Amazon S3 との間の移行タスクが再開に失敗する問題を修正しました。

2018 年 8 月 5 日 ResumeFetchForXRows 追加の接続属性が、MySQL ソースのVARCHAR プライマリキーと正しく機能しない問題を修正しました。

2018 年 9 月 12 日 SQL Server 保護トランザクションと動作する DMS がトランザクションログの再利用を妨げる問題を修正しました。

2018 年 9 月 21 日 ソースとして PostgreSQL からターゲットとして Amazon Redshift へのバッチロードの失敗に関する問題を修正しました。全ロードが中断された時に、失敗したタスクが失敗を報告しませんでした。

2018 年 10 月 3 日 継続的なレプリケーションの前提条件をソースとしての SQL Server に正しく設定しなかったときに、DMS 移行タスクが失敗しない問題を修正しました。

複数の日付 データ検証に関する複数の問題の修正と、マルチバイト UTF-8 文字を検証するための拡張サポートを追加しました。

API バージョン API Version 2016-01-01404

Page 412: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドAWS DMS 2.4.3 リリースノート

AWS Database Migration Service (AWS DMS) 2.4.3リリースノート

次の表は、AWS Database Migration Service (AWS DMS) バージョン 2.4.3 の機能とバグ修正の一覧です。

新機能または拡張機能 説明

テーブルメタデータ再作成の不一致

MySQL エンドポイントの追加接続属性CleanSrcMetadataOnMismatch を新規に追加しました。

この属性は、不一致が発生すると、レプリケーションインスタンスのテーブルメタデータ情報をクリーンアップして再作成するブール属性です。たとえば、テーブルの データ定義言語 (DDL) を変更すると、レプリケーションインスタンスにキャッシュされているテーブルに関する情報が変更されるときがあります。この属性は、デフォルトでは false に設定されています。

データ検証のパフォーマンス改善

以下が改善されました。

• データ検証は、パーティションのように比較して検証できるよう、開始前にデータをパーティショニングするようになりました。このバージョンには、パーティションの大部分をフェッチするための変更点の改善が含まれており、パーティション化にかかる時間は短縮され、データ検証が高速になります。

• タスクの設定に基づき、照合の違いを自動的に処理するよう改善されました。

• 検証中に誤検出を特定するよう改善されました。これにより、キャッシュされた変更フェーズ中の誤検出も削減されます。

• データ検証に対する一般的なログ記録が改善されました。• テーブルに複合プライマリキーが含まれるときにデータ検証で使用さ

れるクエリが改善されました。

解決された問題は以下のとおりです。

報告日 説明

2018 年 2 月 12 日 テーブルの一意の制約事項が更新されたために、AWS DMS で挿入が欠落していたとき、バッチ適用を使用した継続的なレプリケーションの問題を修正しました。

2018 年 3 月 16 日 Oracle インスタンスに対する ソース Amazon RDS 上のマルチ AZ フェイルオーバーにより、継続的なレプリケーションフェーズで Oracle から PostgreSQL への移行タスクがクラッシュしていた問題を修正しました。

AWS Database Migration Service (AWS DMS) 2.4.2リリースノート

次の表は、AWS Database Migration Service (AWS DMS) バージョン 2.4.2 の機能とバグ修正の一覧です。

API バージョン API Version 2016-01-01405

Page 413: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドAWS DMS 2.4.2 リリースノート

新機能または拡張機能 説明

変更データキャプチャ中のAmazon RDS for Oracle 用バイナリリーダーのサポート

継続的なレプリケーション中に Amazon RDS for Oracle ソースからの変更データキャプチャ (CDC) シナリオ内でのバイナリリーダー使用のサポートを追加しました。

ターゲットとしての AmazonRedshift 用の COPY コマンドパラメータを追加

追加接続属性を使って、以下の追加の Amazon Redshift コピーパラメータのサポートを導入しました。詳細については、「AWS DMS のターゲットとして Amazon Redshift を使用する場合の追加の接続属性 (p. 181)」を参照してください。

• TRUNCATECOLUMNS

• REMOVEQUOTES

• TRIMBLANKS

PostgreSQL ソースでテーブルが切り詰められたときに移行タスクを失敗させるオプション

PostgreSQL ソースで新しいタスク設定を使って切り詰めが発生したときにタスクを失敗させるサポートを導入しました。詳細については、「エラー処理タスクの設定 (p. 276)」の「ApplyErrorFailOnTruncationDdl」設定を参照してください。

PostgreSQL エンドポイントでの JSON/JSONB/HSTORE検証のサポート

PostgreSQL をソースおよびターゲットとした JSON/JSONB/HSTORE列のデータ検証のサポートを導入しました。

MySQL ソースのログ記録が改善されました

変更データキャプチャ (CDC) 中に MySQL のバイナリログ (binlogs)を読む際の問題に対するログの可視性が改善されました。CDC 中にMySQL ソースバイナリログにアクセスする際に問題があるとき、ログにはエラー/警告が明示されるようになりました。

データ検証統計の追加 レプリケーションテーブル統計がさらに追加されました。詳細については、「レプリケーションタスクの統計 (p. 338)」を参照してください。

解決された問題は以下のとおりです。

報告日 説明

2018 年 1 月 14 日 全ロードと CDC の間に、MySQL ターゲットでゼロ日付 (0000-00-00)の処理に関するすべての問題を修正しました。MySQL は 0000-00-00(MySQL では無効) を受け入れませんが、受け入れるエンジンもあります。MySQL ターゲットでは、これらの日付はすべて 0101-01-01 になります。

2018 年 1 月 21 日 $ 記号を含むテーブル名を持つテーブルを移行すると、移行が失敗する問題を修正しました。

2018 年 2 月 3 日 サポートされているターゲットに移行したときに、PostgreSQL ソースからの JSON 列が切り捨てられる問題を修正しました。

2018 年 2 月 12 日 移行タスクが Aurora MySQL ターゲットでフェイルオーバー後、失敗する問題を修正しました。

2018 年 2 月 21 日 移行タスクがネットワーク接続の問題の後に、継続的なレプリケーションフェーズを開始できない問題を修正しました。

2018 年 2 月 23 日 テーブルマッピングの特定の変換ルールが、Amazon Redshift ターゲットへの継続的なレプリケーション中に移行タスククラッシュを引き起こしていた問題を修正しました。

API バージョン API Version 2016-01-01406

Page 414: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドAWS DMS 2.4.1 リリースノート

報告日 説明

複数の日付で報告 さまざまなデータ検証の問題を修正しました。

• Oracle ソース/ターゲットの検証で固定幅文字列処理の問題を修正しました。

• テーブルのマッピングでテーブルの列が削除されたときに、検証を処理します。

• 変化率の高いソースの検証パフォーマンスが向上しました。

AWS Database Migration Service (AWS DMS) 2.4.1リリースノート

次の表は、AWS Database Migration Service (AWS DMS) バージョン 2.4.1 の機能とバグ修正の一覧です。

新機能または拡張機能 説明

PostgreSQL ソースの JSONBサポート

ソースとして PostgreSQL からの JSONB の移行のサポートが導入されました。JSONB は、LOB データ型として処理され、適切な LOB 設定を使用する必要が生じます。

PostgreSQL ソースのHSTORE サポート

ソースとして PostgreSQL からの HSTORE データ型の移行のサポートが導入されました。HSTORE は、LOB データ型として処理され、適切な LOB 設定を使用する必要があります。

ターゲットとしての AmazonRedshift 用の COPY コマンドパラメータを追加

追加接続属性を使用した次の追加のコピーパラメータのサポートが導入されました。

• ACCEPTANYDATE

• DATEFORMAT

• TIMEFORMAT

• EMPTYASNULL

解決された問題は以下のとおりです。

報告日 説明

2017 年 7 月 12 日 TDE 列暗号化を有効にした Oracle テーブルから読み取るときに、全ロードフェーズが開始する前に移行タスクが停止する問題を修正しました。

2017 年 10 月 3 日 PostgreSQL ソースからの JSON 列が期待どおりに移行されない問題を修正しました。

2017 年 10 月 5 日 アーカイブ redo ログファイルがソース Oracle インスタンスで見つからないときに、DMS 移行タスクが 0 ソースレイテンシーを示す問題を修正しました。この修正により、このような条件でのソースレイテンシーが直線的に増加します。

2017 年 11 月 20 日 PostgreSQL の TEXT 列が、LOB エントリの各文字の後に余分なスペースがある Oracle の CLOB 列に移行されるときに発生した、LOB 移行の問題を修正しました。

API バージョン API Version 2016-01-01407

Page 415: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドAWS DMS 2.4.0 リリースノート

報告日 説明

2017 年 11 月 20 日 バージョン 1.9.0 から 2.4.0 への基盤となるレプリケーションインスタンスアップグレードの後、移行タスクが正常に停止しない問題を修正しました。

2017 年 11 月 30 日 ソース PostgreSQL インスタンスで実行されたコピーコマンドにより加えられた変更を DMS 移行タスクが適切にキャプチャしない問題を修正しました。

2017 年 12 月 11 日 MySQL ソースの存在しないバイナリログから変更データを読み取るときに移行タスクが失敗する問題を修正しました。

2017 年 12 月 11 日 DMS が MySQL ソースの存在しないテーブルから変更データを読み取るときの問題を修正しました。

2017 年 20 月 12 日 データ検証機能のいくつかの修正と拡張機能が含まれています。

2017 年 22 月 12 日 Amazon Redshift ターゲットの maxFileSize パラメータの問題を修正しました。このパラメータは、誤ってキロバイトではなくバイトと解釈されていました。

2018 年 1 月 4 日 ターゲット移行タスクとしての Amazon DynamoDB のメモリ割り当てのバグを修正しました。一定の条件では、使用されるオブジェクトマッピングにソートキーが含まれているときに、AWS DMS が十分なメモリを割り当てませんでした。

2018 年 1 月 10 日 ROWDEPENDENCIES を使用するとき データ操作言語 (DML) のステートメントが期待どおりにキャプチャされないときのソースとしての Oracle12.2 の問題を修正しました。

AWS Database Migration Service (AWS DMS) 2.4.0リリースノート

次の表は、AWS Database Migration Service (AWS DMS) バージョン 2.4.0 の機能とバグ修正の一覧です。

新機能または拡張機能 説明

Oracle インデックステーブルスペースのレプリケーション

Oracle インデックステーブルスペースのレプリケーションをサポートする機能を追加します。インデックステーブルスペースの詳細は、こちらで参照できます。

クロスアカウント AmazonS3 アクセスのサポート

S3 エンドポイントを使用したクロスアカウントアクセスをサポートするために既定 ACL (事前定義済みの権限) をサポートする機能を追加します。規定 ACL に関する詳細については、Amazon Simple StorageService 開発者ガイドの「既定 ACL」を参照してください。

使用法: S3 エンドポイントで追加接続属性(CannedAclForObjects=value) を設定します指定できる値は次のとおりです。

• NONE

• PRIVATE

• PUBLIC_READ

• PUBLIC_READ_WRITE

API バージョン API Version 2016-01-01408

Page 416: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドAWS DMS 2.3.0 リリースノート

新機能または拡張機能 説明• AUTHENTICATED_READ

• AWS_EXEC_READ

• BUCKET_OWNER_READ

• BUCKET_OWNER_FULL_CONTROL

解決された問題は以下のとおりです。

報告日 説明

2017 年 7 月 19 日 ソース PostgreSQL インスタンスでレプリケーションスロット不足になったときに、レプリケーションタスクが再試行ループで停止しない問題を修正しました。この修正により、DMS が論理レプリケーションスロットを作成できなかったと報告するエラーでタスクは失敗します。

2017 年 27 月 7 日 列挙 MySQL データ型により、メモリ割り当てエラーでタスクが失敗するレプリケーションエンジンの問題を修正しました。

2017 年 8 月 7 日 ソースが 5 分以上ダウンしているときに、ソースとしての Oracle の移行タスクで予期しない動作を発生させた問題を修正しました。この問題は、ソースが使用可能になった後でも継続的なレプリケーションフェーズがハングする原因になっていました。

2017 年 8 月 24 日 TIME データ型の小数部が不適切に処理されていた、PostgreSQL ターゲットの問題を解決しました。

2017 年 9 月 14 日 CDC フェーズの更新中に PostgreSQL ベースのターゲットの TOASTフィールドに正しくない値が書き込まれていた問題を修正しました。

2017 年 10 月 8 日 MySQL 5.5 のソースを使用した継続的なレプリケーションが期待どおりに動作しない、バージョン 2.3.0 からの問題を修正しました。

2017 年 10 月 12 日 継続的なレプリケーションフェーズ中に SQL Server 2016のソースからの読み取りの変更の問題を修正しました。この修正は、ソース SQL Server エンドポイントの追加属性IgnoreTxnCtxValidityCheck=true と組み合わせて使用する必要があります。

AWS Database Migration Service (AWS DMS) 2.3.0リリースノート

次の表は、AWS Database Migration Service (AWS DMS) バージョン 2.3.0 の機能とバグ修正の一覧です。

新機能または拡張機能 説明

ソースとしての S3 AWS DMS のソースとしての Amazon S3 の使用 (p. 146)

ソースとしての SQL Azure Microsoft Azure SQL データベースの AWS DMS のソースとしての使用 (p. 115)

プラットフォーム – AWSSDK の更新

レプリケーションインスタンスの AWS SDK の 1.0.113 への更新。AWSSDK は、Amazon Redshift や S3 など特定のエンドポイントに使用さ

API バージョン API Version 2016-01-01409

Page 417: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドAWS DMS 2.3.0 リリースノート

新機能または拡張機能 説明れ、お客様に代わってデータをこれらのエンドポイントにアップロードします。使用は無制限です。

Oracle ソース: Oracle でのテーブルスペースのレプリケーションをサポート

Oracle ソースからテーブルスペースを移行し、移行前にターゲットでテーブルスペースを事前に作成する必要をなくす機能

使用法: Oracle ソースエンドポイントの追加接続属性でReadTableSpaceName 設定を使用し、テーブルスペースのレプリケーションをサポートするために true に設定します。このオプションはデフォルトでは false に設定されています。

Oracle ソース: CDC はソースとして Oracle アクティブデータガードスタンバイをサポート

サポートされているターゲットに継続的な変更をレプリケートするため、ソースとして Oracle アクティブデータガードのスタンバイインスタンスを使用する機能。この変更により、運用中のアクティブなデータベースに接続する必要がなくなります。

使用法: Oracle ソースエンドポイントの追加接続属性でStandbyDelayTime 設定を使用し、スタンバイ同期における遅延を分単位で指定します。

PostgreSQL ソース: WALハートビートを追加

PostgreSQL ソースからレプリケーション用にハートビート (つまり、ダミークエリの実行) 先書きログ (WAL) が追加されました。アイドル状態の論理レプリケーションスロットが古い WAL ログを保持し続けて、ソース上のストレージを一杯にすることがないように、この機能が追加されました。このハートビートは restart_lsn を移動し続けるため、ストレージがいっぱいになるシナリオを回避できます。

可能なときは、使用方法は次のようになります。

• HeartbeatEnable が true に設定されます (デフォルトは false)。• HeartbeatSchema はハートビートアーティファクトのスキーマ (デ

フォルトはパブリック) です。• HeartbeatFrequencyは、分単位のハートビートの頻度です (デフォ

ルトは 5、最小値は 1)。

すべてのエンドポイント: 変換で同じ種類のレプリケーションを維持します

同じ種類の移行タスクの移行などを実行する機能は (テーブル構造/データ型の視点から) 2.2.0 で導入されました。ただし、DMS はテーブル変換によりタスクが起動されたとき、引き続きデータ型を内部的に変換します。この機能では、変換が使用されたときでも、同じ種類の「リフトとシフト」の移行ではターゲットのソースのデータ型が保持されます。

使用はすべての同じ種類の移行に対しては無制限です。

すべてのエンドポイント:テーブルが見つからないときはタスクを失敗させます

変換ルールを含めても一致が見つからないときにレプリケーションタスクの失敗を強制する機能。

使用法: FailOnNoTablesCaptured タスク設定を true に変更します。

Oracle ソース: アーカイブredo ログが欠落しているときにタスクを停止します

ソースのアーカイブ redo ログが欠落しているときに再試行ループから抜け出し、タスクを停止する機能。

使用法: 追加接続属性 RetryTimeoutInMinutes を使用して、分単位で停止タイムアウトを指定します。

解決された問題は以下のとおりです。

API バージョン API Version 2016-01-01410

Page 418: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイドAWS DMS 2.3.0 リリースノート

報告日 説明

2017 年 1 月 5 日 複数の DMS タスクを同じ MySQL インスタンス (バージョン 5.6 以降)に起動するときのサーバー ID の衝突の問題を修正しました。

2017 年 2 月 21 日 MongoDB の _id がドキュメントで文字列であるとき、nestingLevel=ONE に対してテーブルの作成が失敗する問題を修正しました。この修正の前は、_id (文字列であるとき) は LONGTEXT(MySQL) または CLOB (Oracle) として作成され、それによりプライマリキーの作成を試みたときにエラーが発生していました。

2017 年 5 月 5 日 Oracle ソースでフル LOB モードを使用するときに、NULL の LOB が空の状態で移行される問題を修正しました。

2017 年 5 月 5 日 カスタム CDC 開始時間が 24 時間より前のときに、ソースとしてのMySQL のタスクが多数の接続エラーで失敗する問題を修正しました。

2017 年 5 月 24 日 レプリケーションインスタンスで複数のタスクが同時に起動されたときに、タスクの開始状態が長すぎる問題を修正しました。

2017 年 7 月 7 日 利用可能な接続スロットすべてを使用することに関する、PostgreSQLエラーメッセージを発生させていた問題を修正しました。PostgreSQLへの利用可能なすべての接続スロットが使用され、DMS がレプリケーションを続行するためにそれ以上スロットを取得できないときに、デフォルトのログインレベルでエラーが記録されるようになりました。

2017 年 7 月 19 日 Oracle から DynamoDB への更新/削除がうまく移行されない問題を修正しました

2017 年 8 月 8 日 移行中に Oracle ソースデータベースインスタンスが 5 分以上ダウンしているときの、CDC 中の予期しない動作を発生させた問題を修正しました。

2017 年 8 月 12 日 Amazon Redshift で varchar 以外のデータ型に挿入されるときに、任意のソースからの Null が amazon_null として移行される問題を修正しました。

2017 年 8 月 27 日 MongoDB で、nestingLevel=NONE で _id が ObjectId ではないときに全ロードタスクがクラッシュする問題を修正しました。

API バージョン API Version 2016-01-01411

Page 419: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイド以前の更新

ドキュメント履歴2018 年 1 月より後に AWS Database Migration Service ユーザーガイドに対して行われた重要な変更を次の表に示します。

RSS フィードにサブスクライブして、このドキュメントの更新に関する通知を受信できます。

update-history-change update-history-description update-history-date

AWS Snowball Edge を使用した移行

AWS Snowball Edge を使用した大規模なデータベースの移行に関するドキュメントが更新されました。

January 24, 2019

ターゲットとして AmazonElasticsearch Service およびAmazon Kinesis Data Streams をサポート

データ移行のターゲットとしてAmazon ES および Kinesis DataStreams へのサポートの追加

November 15, 2018

CDC ネイティブの開始サポート 変更データキャプチャ (CDC) の使用時におけるネイティブの開始ポイントのサポートを追加しました。

June 28, 2018

R4 サポート R4 レプリケーションインスタンスクラスのサポートが追加されました。

May 10, 2018

Db2 LUW のサポート データ移行のソースとしてのIBM Db2 LUW のサポートを追加しました。

April 26, 2018

タスクログのサポート タスクログの使用状況の確認とタスクログの消去をサポートしました。

February 8, 2018

ターゲットとしての SQL Serverのサポート

ソースとして Amazon RDS forMicrosoft SQL Server のサポートを追加しました。

February 6, 2018

以前の更新2018 年 1 月より前に AWS Database Migration Service ユーザーガイドに対して行われた重要な変更を次の表に示します。

変更 説明 変更日

新機能 大規模なデータベースを移行するため、AWS Snowballでの AWS DMS の使用のサポートを追加しました。詳細については、「AWS Database Migration Service とAWS Snowball Edge を使用した大規模データストアの移行 (p. 350)」を参照してください。

2017 年 11 月 17 日

API バージョン API Version 2016-01-01412

Page 420: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイド以前の更新

変更 説明 変更日

新機能 タスク評価レポートとデータ検証のサポートを追加しました。タスク評価レポートの詳細については、「タスク評価レポートの作成 (p. 251)」を参照してください。データ検証の詳細については、「 データ検証タスクの設定 (p. 270)」を参照してください。

2017 年 11 月 17 日

新機能 AWS CloudFormation テンプレートのサポートを追加しました。詳細については、「AWS DMS による AWSCloudFormation のサポート (p. 13)」を参照してください。

2017 年 7 月 11 日

新機能 ターゲットとして Amazon Dynamo を使用できるようにしました。詳細については、「AWS Database MigrationService のターゲットとしての Amazon DynamoDB データベースの使用 (p. 208)」を参照してください。

2017 年 4 月 10 日

新機能 ソースとして MongoDB を使用できるようにしました。詳細については、「AWS DMS のソースとしての MongoDBの使用 (p. 141)」を参照してください。

2017 年 4 月 10 日

新機能 ターゲットとして Amazon S3 を使用できるようにしました。詳細については、「AWS Database Migration Serviceのターゲットとしての Amazon S3 の使用 (p. 187)」を参照してください。

2017 年 3 月 27 日

新機能 移行タスク実行中のデータベーステーブルの再ロードにサポートを追加します。詳細については、「タスク実行中のテーブルの再ロード (p. 284)」を参照してください。

2017 年 3 月 7 日

新機能 イベントとイベントサブスクリプションのサポートを追加しました。詳細については、「AWS Database MigrationService のイベントと通知の使用 (p. 345)」を参照してください。

2017 年 1 月 26 日

新機能 Oracle SSL エンドポイントのサポートを追加しました。詳細については、「Oracle エンドポイントでの SSL のサポート (p. 53)」を参照してください。

2016 年 5 月 12 日

新機能 Amazon RDS PostgreSQL DB インスタンスでの変更データキャプチャ (CDC) の使用のサポートを追加しました。詳細については、「ソースとしての Amazon RDSPostgreSQL DB インスタンスの設定 (p. 122)」を参照してください。

2016 年 9 月 14 日

新しいリージョンのサポート

アジアパシフィック (ムンバイ)、アジアパシフィック (ソウル)、および南米 (サンパウロ) リージョンのサポートを追加しました。サポートされているリージョンのリストについては、「AWS Database Migration Service とは (p. 1)」を参照してください。

2016 年 8 月 3 日

新機能 継続的なレプリケーションのサポートを追加しました。詳細については、「継続的なレプリケーション (p. 392)」を参照してください。

2016 年 7 月 13 日

新機能 SSL を使用するセキュアな接続のサポートを追加しました。詳細については、「AWS Database Migration Serviceで SSL を使用する (p. 49)」を参照してください。

2016 年 7 月 13 日

API バージョン API Version 2016-01-01413

Page 421: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイド以前の更新

変更 説明 変更日

新機能 ソースまたはターゲットエンドポイントとして SAPAdaptive Server Enterprise (ASE) のサポートを追加しました。詳細については、「SAP ASE データベースを AWSDMS のソースとして使用する (p. 138)」および「AWSDatabase Migration Service のターゲットとしての SAPASE データベースの使用 (p. 185)」を参照してください。

2016 年 7 月 13 日

新機能 ソースデータベースからターゲットデータベースに行のサブセットを移動するためのフィルタのサポートを追加しました。詳細については、「ソースフィルタの使用 (p. 321)」を参照してください。

2016 年 5 月 2 日

新機能 ターゲットエンドポイントとして Amazon Redshift のサポートを追加しました。詳細については、「AWSDatabase Migration Service のターゲットとしてのAmazon Redshift データベースの使用 (p. 174)」を参照してください。

2016 年 5 月 2 日

一般提供 AWS Database Migration Service の初回リリース。 2016 年 3 月 14 日

公開プレビューリリース

AWS Database Migration Service のプレビュードキュメントをリリースしました。

2016 年 1 月 21 日

API バージョン API Version 2016-01-01414

Page 422: AWS Database Migration Service - ユーザーガイド · AWS Database Migration Service ユーザーガイド API バージョン API Version 2016-01-01

AWS Database Migration Service ユーザーガイド

AWS の用語集最新の AWS の用語については、『AWS General Reference』の「AWS の用語集」を参照してください。

API バージョン API Version 2016-01-01415