AWS Database Migration Service のターゲットとしての Redis の使用 - AWS Database Migration Service

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS Database Migration Service のターゲットとしての Redis の使用

Redis は、データベース、キャッシュ、メッセージブローカーとして使用されるオープンソースのメモリ内データ構造ストアです。メモリ内でデータを管理することにより、読み取りや書き込みオペレーションにかかる時間が 1 ミリ秒未満となり、毎秒数億回もの操作の実行を実現します。Redis はインメモリデータストアとして、ミリ秒未満の応答時間を必要とする最も要求の厳しいアプリケーションをサポートしています。

AWS DMS を使用すると、サポートされているソースデータベースからターゲットの Redis データストアに最小限のダウンタイムでデータを移行できます。Redis の詳細については、「Redis ドキュメント」を参照してください。

オンプレミスの Redis に加えて、AWS Database Migration Service は次をサポートします。

  • ターゲットデータストアとしての Amazon ElastiCache for Redis。ElastiCache for Redis は Redis クライアントと連携して、オープンな Redis データ形式を使用してデータを保存します。

  • ターゲットデータストアとしての Amazon MemoryDB for Redis。MemoryDB は Redis と互換性があり、現在使用されているすべての Redis データ構造、API、コマンドを使用してアプリケーションを構築できます。

AWS DMS のターゲットとして Redis を使用する方法の詳細については、次のセクションを参照してください。

Redis クラスターを AWS DMS のターゲットとして使用するための前提条件

DMS は、スタンドアロン構成のオンプレミスの Redis ターゲットをサポートします。また、データが複数のノード間で自動的にシャード化される Redis クラスターとしてもサポートします。シャード化とは、データを複数のサーバーまたはノードにまたがるシャードと呼ばれる小さなチャンクに分割するプロセスです。実際、シャードはデータセット全体のサブセットを含むデータパーティションであり、ワークロード全体のスライスとして機能します。

Redis はキーバリュー型の NoSQL データストアです。ソースがリレーショナルデータベースの場合に使用する Redis キーの命名規則は、schema-name.table-name.primary-key となります。Redis では、キーと値に特殊文字の % は使用できません。使用すると、DMS は該当するレコードをスキップします。

注記

ElastiCache for Redis をターゲットとして使用している場合、DMS がサポートするのは、クラスターモードが有効になっている設定のみです。ElastiCache for Redis バージョン 6.x 以降を使用してクラスターモードが有効になっているターゲットデータストアを作成する方法の詳細については、「Amazon ElastiCache for Redis ユーザーガイド」の「使用開始」を参照してください。

データベースの移行を開始する前に、次の基準を使用して Redis クラスターを起動します。

  • クラスターには単一または複数のシャードがあります。

  • ElastiCache for Redis ターゲットを使用している場合は、クラスターが IAM ロールベースのアクセスコントロールを使用していないことを確認してください。この代わりに、Redis Auth を使用してユーザーを認証します。

  • マルチ AZ (アベイラビリティーゾーン) を有効にします。

  • データベースから移行するデータを処理するのに十分なメモリがクラスターにあることを確認します。

  • 初めて移行タスクをスタートする前に、ターゲットの Redis クラスターになにもデータがないことを確認します。

クラスターの設定を行う前に、データ移行のセキュリティ要件を決定する必要があります。DMS は、暗号化の設定を問わず、ターゲットのレプリケーショングループへの移行をサポートします。ただし、暗号化を有効または無効にできるのは、クラスターの設定時のみです。

Redis を AWS Database Migration Service のターゲットとして使用する場合の制限

Redis をターゲットとして使用する場合、次の制限が適用されます。

  • Redis はキーバリューの no-sql データストアです。ソースがリレーショナルデータベースの場合に使用する Redis キーの命名規則は、schema-name.table-name.primary-key となります。

  • Redis では、キーバリューに特殊文字の % は使用できません。使用すると、DMS は該当するレコードをスキップします。

  • DMS は特殊文字を含む行を移行しません。

  • DMS は、フィールド名に特殊文字が含まれるフィールドを移行しません。

  • 完全 LOB モードはサポートされていません。

  • ElastiCache for Redis をターゲットとして使用する場合、Private Certificate Authority (CA) はサポートされません。

リレーショナルデータベースまたは非リレーショナルデータベースからターゲットの Redis へのデータ移行

任意のソース SQL または NoSQL データストアからターゲットの Redis には直接データを移行できます。Redis ターゲットへの移行の設定とスタートは、DMS コンソールまたは API を使用したフルロードと変更データキャプチャの移行と同様です。Redis ターゲットへのデータベースの移行を実行するには、次を実行します。

  • 移行のすべてのプロセスを実行するレプリケーションインスタンスを作成します。詳細については、「レプリケーション インスタンスの作成」を参照してください。

  • ソースエンドポイントを指定します。詳細については、「ソースおよびターゲットエンドポイントの作成」を参照してください。

  • クラスターの DNS 名とポート番号を取得します。

  • SSL 接続の確認のために使用できる証明書バンドルをダウンロードします。

  • 次の説明のとおり、ターゲットエンドポイントを指定します。

  • 使用するテーブルとレプリケーションプロセスを定義するタスクまたはタスクセットを作成して、レプリケーションを開始します。詳細については、「[Creating a task] (タスクの作成)」を参照してください。

  • ソースデータベースからターゲットクラスターにデータを移行します。

データベースの移行は、次の 2 つの方法のいずれかで開始します。

  1. AWS DMS コンソールをクリックして、コンソールで各ステップを実行します。

  2. AWS Command Line Interface (AWS CLI) を使用することができます。CLI を AWS DMS と組み合わせて使用する方法については、「AWS CLI for AWS DMS」を参照してください。

クラスターの DNS 名とポート番号を取得するには
  • 次の AWS CLI コマンドを使用して、replication-group-id にレプリケーショングループ名を提供します。

    aws elasticache describe-replication-groups --replication-group-id myreplgroup

    こここでの出力は、クラスター内のプライマリノードの Address 属性に DNS 名、Port 属性にポート番号が表示されます。

    ... "ReadEndpoint": { "Port": 6379, "Address": "myreplgroup- 111.1abc1d.1111.uuu1.cache.example.com" } ...

    MemoryDB for Redis をターゲットとして使用する場合は、次の AWS CLI コマンドを使用して Redis クラスターにエンドポイントアドレスを提供します。

    aws memorydb describe-clusters --clusterid clusterid
SSL 接続の検証に使用する証明書バンドルのダウンロード
  • コマンドラインで、次の wget コマンドを入力します。Wget は、インターネットからファイルをダウンロードする際に使用できる無料の GNU コマンドラインユーティリティツールです。

    wget https://s3.aws-api-domain/rds-downloads/rds-combined-ca-bundle.pem

    ここで、aws-api-domain は、指定された S3 バケットと rds-combined-ca-bundle.pem ファイルにアクセスするために必要な AWS リージョンの Amazon S3 ドメインとなります。

AWS DMS コンソールを使用してターゲットエンドポイントを作成するには

このエンドポイントは、既に実行中の Redis ターゲットのためのものです。

  • コンソールで、ナビゲーションペインから [エンドポイント] を選択して、[エンドポイントの作成] をクリックします。次の表は、設定について説明しています。

    使用するオプション 実行項目

    エンドポイントタイプ

    [ターゲット] エンドポイントタイプを選択する。

    エンドポイント識別子

    エンドポイントの名前を入力する。名前にはエンドポイントタイプを含める。例えば、 my-redis-target と入力する。

    ターゲットエンジン

    このエンドポイントに接続するデータベースエンジンタイプとして [Redis] を選択する。

    クラスター名

    Redis クラスターの DNS 名を入力する。

    ポート

    Redis クラスターのポート番号を入力する。

    SSL セキュリティプロトコル

    [プレーンテキスト] または [SSL 暗号化] のどちらかを選択する。

    プレーンテキスト—このオプションの場合、エンドポイントとデータベース間のトラフィックに Transport Layer Security (TLS) 暗号化は提供されない。

    SSL 暗号化—このオプションを選択した場合、SSL 認証機関 (CA) 証明書 ARN を入力してサーバーの証明書を確認し、暗号化された接続を確立する。

    オンプレミスの Redis で DMS パブリック認証機関と Private Certificate Authority (CA) の両方をサポートする。ElastiCache for Redis の場合、DMS はパブリック CA のみをサポートする。

    認証タイプ

    Redis への接続中に実行する認証タイプを選択する。オプションには、[なし][認証ロール][認証トークン] がある。

    認証ロールを選択した場合、[認証ユーザー名][認証パスワード] を入力する。

    認証トークンを選択した場合に指定するのは、[認証パスワード] のみ。

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

    [オプション]接続をテストする場合のみ、[レプリケーションの作成] ページで以前に入力したレプリケーションインスタンス名前を選択する。

エンドポイントのすべての情報を入力した後、AWS DMS は、データベース移行中に使用する Redis ターゲットエンドポイントを作成します。

移行タスクの作成とデータベース移行の開始については、「[Creating a task] (タスクの作成)」を参照してください。

ターゲットとしての Redis エンドポイント設定の指定

ターゲットエンドポイントを作成または変更するには、コンソール、CreateEndpoint、または ModifyEndpoint API オペレーションを使用します。

AWS DMS コンソールの Redis ターゲットでは、[エンドポイントの作成] または [エンドポイントの変更] コンソールページの [エンドポイント固有の設定] を指定します。

CreateEndpointModifyEndpoint の API オペレーションでは、RedisSettings オプションのリクエストパラメータを指定します。次の例では、AWS CLI を使用して設定する方法を説明しています。

aws dms create-endpoint --endpoint-identifier my-redis-target --endpoint-type target --engine-name redis --redis-settings '{"ServerName":"sample-test-sample.zz012zz.cluster.eee1.cache.bbbxxx.com","Port":6379,"AuthType":"auth-token", "SslSecurityProtocol":"ssl-encryption", "AuthPassword":"notanactualpassword"}' { "Endpoint": { "EndpointIdentifier": "my-redis-target", "EndpointType": "TARGET", "EngineName": "redis", "EngineDisplayName": "Redis", "TransferFiles": false, "ReceiveTransferredFiles": false, "Status": "active", "KmsKeyId": "arn:aws:kms:us-east-1:999999999999:key/x-b188188x", "EndpointArn": "arn:aws:dms:us-east-1:555555555555:endpoint:ABCDEFGHIJKLMONOPQRSTUVWXYZ", "SslMode": "none", "RedisSettings": { "ServerName": "sample-test-sample.zz012zz.cluster.eee1.cache.bbbxxx.com", "Port": 6379, "SslSecurityProtocol": "ssl-encryption", "AuthType": "auth-token" } } }

--redis-settings パラメータ以降は次のとおりです。

  • ServerName— (必須) string 型。同じ VPC に配置されたデータの移行先の Redis クラスターを指定する。

  • Port— (必須) number 型。エンドポイントへのアクセスに使用されるポート値。

  • SslSecurityProtocol— (オプション) 有効な値は plaintextssl-encryption。デフォルトは ssl-encryption

    plaintext オプションは、エンドポイントとデータベース間のトラフィックに Transport Layer Security (TLS) 暗号化を提供しない。

    ssl-encryption を使用して、暗号化された接続を作成する。ssl-encryption ではサーバーの証明書を検証するための SSL 認証機関 (CA) ARN は必要ないが、必要に応じて SslCaCertificateArn 設定を使用して識別できる。認証機関 ARN が指定されていない場合、DMS は Amazon ルート CA を使用する。

    オンプレミスの Redis ターゲットを使用する場合、SslCaCertificateArn を使用してパブリック認証機関と Private Certificate Authority (CA) を DMS にインポートし、サーバー認証にその ARN を指定する。ElastiCache for Redis をターゲットとして使用する場合、プライベート CA はサポートされない。

  • AuthType–(必須) Redis に接続する際に実行する認証のタイプ。有効な値は、noneauth-tokenauth-role

    auth-token オプションには、「AuthPassword」を指定する必要がある。auth-role オプションには「AuthUserName」と「AuthPassword」を指定する必要がある。