AWS DMS を使用して Amazon RDS または Aurora MySQL DB インスタンスに移行する方法を教えてください。

最終更新日: 2021 年 2 月 16 日

最小限のダウンタイムでシンプルなアプローチのデータベース移行戦略が必要です。AWS Database Migration Service (AWS DMS) を使用して Amazon Relational Database Service (Amazon RDS) または Amazon Aurora MySQL DB インスタンスに移行する方法を教えてください。

簡単な説明

注: 同種の以降を実行する場合は、できるだけご使用のエンジンのネイティブなツール (MySQL ダンプや MySQL レプリケーションなど) を使用してください。

AWS DMS を使用して Amazon RDS またはプロビジョンド Aurora MySQL DB インスタンスに移行するには:

  • レプリケーションインスタンスを作成する
  • ターゲットエンドポイントとソースエンドポイントを作成する
  • ソースエンドポイントのスキーマを更新する
  • 移行タスクを作成する
  • 移行タスクを監視する

解決方法

注: AWS DMS は、テーブルデータの移行前に必要な場合にプライマリキーを持つテーブルのみをターゲットに作成します。完全なターゲットスキーマを生成するには、AWS Schema Conversion Tool を使用します。詳細については、「スキーマの変換」をご参照ください。

(オプション) Amazon CloudWatch を使用してログ記録を有効化する

Amazon CloudWatch Logs を使用すると、移行中に問題が発生する可能性がある場合に警告を出すことができます。詳細については、「Amazon CloudWatch を使用したレプリケーションタスクのモニタリング」をご参照ください。

レプリケーションインスタンスを作成する

  1. AWS DMS コンソールを開き、ナビゲーションペインから [Replication instances] (レプリケーションインスタンス) を選択します。
  2. [Create replication instance] (レプリケーションインスタンスの作成) を選択します。
  3. レプリケーションインスタンス名、説明、インスタンスクラス、Amazon Virtual Private Cloud (Amazon VPC)、およびマルチ Multi-AZ 優先設定を入力します。
    注: 移行ワークロードに対して十分なインスタンスクラスを選択してください。インスタンスがワークロードに対して十分でない場合は、後でレプリケーションインスタンスを変更できます 。
  4. [Advanced] (詳細) セクションで、VPC セキュリティグループを選択するか、デフォルトのオプションを選択します。
  5. [Create replication instance] (レプリケーションインスタンスの作成) を選択します。

ターゲットおよびソースエンドポイントを作成する

  1. AWS DMS コンソールを開き、ナビゲーションペインから [Endpoints] (エンドポイント) を選択します。
  2. [Create endpoint] (エンドポイントを作成) を選択して、ソースデータベースとターゲットデータベースを作成します。
  3. エンドポイントタイプでは、[ソース] を選択します。
  4. ソースとして Amazon S3 を使用する場合は、サーバー名、ポート、SSL モード、Amazon Simple Storage Service (Amazon S3) バケット名など、エンドポイントのエンジン固有の情報を入力します。
  5. [Run Test] (テストを実行) を選択します。
  6. テストが完了後は、[Save (保存)] を選択します。
  7. ステップ 3 ~ 6 を繰り返します。ただし [Endpoint type] (エンドポイントタイプ) で [Target] (ターゲット) を選択します。
    注: ターゲットソースの両方でこのステップを完了してください。

ソースエンドポイントのスキーマを更新する

  1. AWS DMS コンソールを開き、ナビゲーションペインから [Endpoints] (エンドポイント) を選択します。
  2. ソースエンドポイントを選択し、[スキーマを更新] を選択します。
  3. [スキーマを更新] を選択します。
    注: AWS DMS タスクを作成するときにソーススキーマがテーブルマッピングに表示されるように、ソースを更新する必要があります。

移行タスクを作成する

  1. AWS DMS コンソールを開き、ナビゲーションペインから [Database migration tasks] (データベース移行タスク) を選択します。
  2. [Create task] (タスクの作成) を選択します。
  3. [Task identifier] (タスク識別子)、[Replication instance] (レプリケーションインスタンス)、[Source database endpoint] (ソースデータベースエンドポイント)、[Target database endpoint] (ターゲットデータベースエンドポイント)、および [Migration type] (移行タイプ) を指定します。以下のいずれかの移行タイプを選択します。
    Migrate existing data only (既存のデータのみを移行)—1 回限りの移行には、この移行タイプを使用します。
    [既存のデータを移行し継続的な変更をレプリケーションする] - この移行タイプを使用すると、ダウンタイムを最小限に抑えながら、大規模なデータベースを AWS クラウドに移行できます。
    Migrate ongoing replication changes (継続的な変更レプリケーションの移行)—既存のデータをすでに移行していて、ソースデータベースを AWS クラウドでホストされているターゲット MySQL データベースと同期させる場合は、この移行タイプを使用します。
  4. [Task Settings] (タスク設定) セクションで、必要に応じてタスクを変更します。 
  5. [Table mappings] (テーブルマッピング) セクションで、 [Guided UI] (ガイド付き UI) を選択します。
  6. [Add new selection rule] (新しい選択ルールを追加) を選択し、[Schema] (スキーマ) と [Table name] (テーブル名) を指定します。
    注: 選択したオブジェクトの一部またはすべてのソーススキーマ、テーブル、または列名を変更または変換するには、[Transformation rules] (変換ルール) セクションを展開します。[Add new transformation rule] (新しい変換ルールを追加) を選択します。次に、[ターゲット]、[スキーマ名]、および [アクション] を選択します。
  7. [Create task] (タスクの作成) を選択します。

注: 大きなオブジェクト (LOB) 列がある場合は、[Limited LOB Mode] (制限付き LOB モード) をお勧めします。詳細については、「AWS DMS タスクのソースデータベースの LOB サポートの設定」をご参照ください。

移行タスクをモニタリングする

  1. [Task Monitoring] (タスクモニタリング) ビューを使用して、移行タスクをモニタリングします。どのテーブルが正常に移行されたか、どのテーブルが移行中かを確認できます。以下のメッセージタイプに注目します。
    I - 通知メッセージを示します
    W - 警告を示します
    E - データベースの移行時に発生したエラーを示します
  2. ターミナルを使用してソースインスタンスとターゲットインスタンスに接続し、データベースが正常に移行されたことを検証します。

Oracle の移行

ソースデータベースとして Oracle を使用している場合、テーブルは指定されたターゲットエンドポイントユーザーに移行されます。変換ルールを使用して、Oracle ターゲットのスキーマを変更できます。詳細については、「Oracle ターゲットのユーザーおよびスキーマの変更」をご参照ください。

MySQL の移行

MySQL を Amazon Aurora に移行する場合は、できるだけエンジンにネイティブのツールを使用します。移行中、スキーマとテーブルはターゲットの同じ名前に移行されます。テーブルをターゲットの別のスキーマに移行する場合は、マッピングルールを指定してターゲットデータベースの新しいスキーマを指定します。 

{
  "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": "schema",
      "object-locator": {
        "schema-name": "test"
      },
      "value": "newtest"
    }
  ]
}
ログを調べて、エラーがないことを確認します。

レイテンシーをモニタリングし、ソースとターゲットのデータベースでデータ数を比較してから、新しいターゲットデータベースに切り替えます。詳細については、「移行タスクのトラブルシューティング」をご参照ください。