スキップしてコンテンツを表示

AWS DMS エンドポイントへの接続に関する障害をトラブルシューティングする方法を教えてください。

所要時間3分
0

AWS Database Migration Service (AWS DMS) エンドポイントに接続できず、テスト接続が失敗するため、接続の問題をトラブルシューティングしたいです。

解決策

レプリケーションインスタンスからソースまたはターゲットのエンドポイントへの接続をテストする際、接続またはネイティブデータベースに関連する問題が発生する場合があります。

レプリケーションインスタンスとソースまたはターゲットの間に接続の問題がある場合、次のようなエラーが発生します。

  • 「Application-Status: 1020912, Application-Message: Failed to connect Network error has occurred, Application-Detailed-Message: RetCode: SQL_ERROR SqlState: HYT00 NativeError: 0 Message: [unixODBC][Microsoft][ODBC Driver 13 for SQL Server]Login timeout expired ODBC general error."
  • "Application-Status: 1020912, Application-Message: Cannot connect to ODBC provider Network error has occurred, Application-Detailed-Message: RetCode: SQL_ERROR SqlState: 08001 NativeError: 101 Message: [unixODBC]timeout expired ODBC general error."
  • "Application-Status: 1020912, Application-Message: Cannot connect to ODBC provider ODBC general error., Application-Detailed-Message: RetCode: SQL_ERROR SqlState: HY000 NativeError: 2005 Message: [unixODBC][MySQL][ODBC 5.3(w) Driver]Unknown MySQL server host 'mysql1.xxxxx.us-east-1.rds.amazonaws.com' (22) ODBC general error」

データベースへのアクセス許可や認証エラーなど、ネイティブデータベースの問題が原因で障害が発生した場合は、次のようなエラーが発生します。

「Application-Status: 1020912, Application-Message: Cannot connect to ODBC provider Network error has occurred, Application-Detailed-Message: RetCode: SQL_ERROR SqlState: 08001 NativeError: 101 Message: [unixODBC]FATAL: password authentication failed for user "dmsuser" ODBC general error."

注: ソースエンドポイントとターゲットエンドポイントを作成した後には、AWS DMS レプリケーションインスタンスからエンドポイントへの接続をテストすることをおすすめします。AWS DMS 移行タスクを開始する前にテストを完了してください。

AWS でホストしているリソースへの接続に関する問題を解決する

ソースまたはターゲットのデータベースと、レプリケーションインスタンスとの間に接続を確立できるかどうかを確認してください。ユースケースとネットワークインフラストラクチャに応じて、ソースデータベースまたはターゲットデータベースをパブリックサブネットまたはプライベートサブネットのレプリケーションインスタンスに接続します。詳細については、「レプリケーションインスタンスでネットワークを設定する」を参照してください。

注: AWS DMS バージョン 3.4.7 以降では、AWS DMS がAmazon Virtual Private Cloud (Amazon VPC) エンドポイントを使用するように設定する必要があります。または、特定の AWS サービスと通信するすべてのソースエンドポイントとターゲットエンドポイントに対し、パブリックルートを使用する必要があります。

レプリケーションインスタンスの構成を確認する

レプリケーションインスタンスにおいて、構成に以下のルールが含まれていることを確認してください。

  • セキュリティグループ内のソースデータベースまたはターゲットデータベースのポートを使用する IP アドレスのアウトバウンドルールセキュリティグループアウトバウンドルールでは、すべてのトラフィックがデフォルトでは許可されています。セキュリティグループはステートフルなので、デフォルトのインバウンドルールを維持できます。
  • ネットワークアクセスコントロールリスト (ACL) 内のソースデータベースまたはターゲットデータベースのポートを使用する IP アドレスのアウトバウンドルール。ネットワーク ACL のアウトバウンドルールでは、すべてのトラフィックがデフォルトでは許可されています。
  • ネットワーク ACL 内のソースデータベースまたはターゲットデータベースのエフェメラルポートを使用する IP アドレスのインバウンドルール。ネットワーク ACL のインバウンドルールでは、すべてのトラフィックがデフォルトでは許可されています。

ソースまたはターゲットのデータベース構成を確認する

ソースデータベースまたはターゲットデータベースにおいて、構成に次のルールが含まれていることを確認してください。

  • レプリケーションインスタンスの IP アドレスまたはレプリケーションインスタンスのサブネットグループの CIDR ブロックに対するインバウンドルールインバウンドルールには、セキュリティグループ内のソースデータベースまたはターゲットデータベースのポートが必要です。セキュリティグループはステートフルなので、デフォルトのアウトバウンドルールを維持できます。
  • レプリケーションインスタンスの IP アドレスまたはレプリケーションインスタンスのサブネットグループの CIDR に対するインバウンドルールインバウンドルールには、ネットワーク ACL 内のソースデータベースまたはターゲットデータベースのポートが必要です。IP アドレスとポートに対する、明示的な deny ルールがないことを確認してください。
  • ネットワーク ACL のエフェメラルポートを使用するレプリケーションインスタンスのサブネットグループの IP アドレスまたは CIDR ブロックに対するアウトバウンドルール。ネットワーク ACL のアウトバウンドルールでは、すべてのトラフィックがデフォルトでは許可されています。

ネットワークでは、レプリケーションインスタンスのサブネットグループの CIDR ブロックを許可する設定を行うことをおすすめします。レプリケーションインスタンスの IP アドレスは、フェイルオーバーまたはホスト交換イベント中に変更されます。

サブネットグループの IP アドレスと CIDR を判別する

インバウンドルールとアウトバウンドルールを設定するために、サブネットグループの IP アドレスと CIDR ブロックを判別します。AWS DMS コンソールまたは AWS コマンドラインインターフェイス (AWS CLI) を使用できます。

注: AWS CLI のコマンドの実行時にエラーが発生する場合は、「AWS CLI でのエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。

AWS DMS コンソール

次の手順を実行します。

  1. AWS DMS コンソールを開きます。
  2. ナビゲーションペインで [レプリケーションインスタンス] を選択します。
  3. 該当するレプリケーションインスタンスを選択します。
  4. [詳細] から、レプリケーションインスタンスの [パブリック IP アドレス][プライベート IP アドレス]、**[レプリケーションサブネットグループ]**をコピーします。
  5. [レプリケーションサブネットグループ] でリンクを選択し、サブネットグループページにアクセスします。サブネットグループ内の各サブネット名をコピーします。
  6. 各サブネットの CIDR ブロックを確認するには、Amazon VPC コンソールを開きます。
  7. [サブネット] タブでサブネットを検索します。各サブネットの CIDR ブロックを書き留めてください。

AWS CLI

各サブネットの CIDR ブロックを判別するには、AWS CLI コマンド describe-subnets を実行します。

aws ec2 describe-subnets --filters Name=subnet-id,Values="$(aws dms describe-replication-instances --filters "Name=replication-instance-id,Values=replication-instance-name" --query "ReplicationInstances[*].ReplicationSubnetGroup.Subnets[*].SubnetIdentifier" --output text | sed -e 's/\t/,/g')" --query "Subnets[*].{SubnetId:SubnetId,CidrBlock:CidrBlock}" --output table

注: replication-instance-name を実際のレプリケーションインスタンス名に置き換えてください。

レプリケーションインスタンスの IP アドレスを判別するには、describe-replication-instances コマンドを実行します。

aws dms describe-replication-instances --filters "Name=replication-instance-id,Values=replication-instance-name" --query "ReplicationInstances[*].{ReplicationInstancePublicIpAddresses:ReplicationInstancePublicIpAddresses,ReplicationInstancePrivateIpAddresses:ReplicationInstancePrivateIpAddresses}" --output table

注: replication-instance-name を実際のレプリケーションインスタンス名に置き換えてください。

オンプレミスリソースでの接続の問題を解決する

ソースデータベースまたはターゲットデータベースをオンプレミスでホストする場合は、データベースが AWS DMS レプリケーションインスタンスからの受信接続を許可していることを確認してください。確認は、ネットワーク管理者と連携して行ってください。さらに、ファイアウォールがソースデータベースまたはターゲットデータベースへの通信をブロックしていないことを確認してください。

DNS 構成が正しく設定されていることを確認してください。DNS 解決が必要な場合は、Amazon Route 53 Resolver を使用してください。オンプレミスのネームサーバーを使用して Route 53 Resolver でエンドポイントを解決する方法については、「独自のオンプレミスネームサーバーを使用する」を参照してください。または、AWS CLI で新しい AWS DMS インスタンスを作成し、カスタマー DNS ネームサーバー (--dns-name-servers) を使用して DNS の問題を解決してください。デフォルトでは、AWS DMS インスタンスは、解決には Amazon 提供の DNS 名を使用します。詳細については、「create-replication-instance」を参照してください。

注: ソースまたはターゲットでカスタム DNS を使用する設定を行うと、AWS DMS エンドポイントで障害が発生する場合があります。

Amazon Elastic Compute Cloud (Amazon EC2) インスタンスのネットワーク構成は、接続障害が起こった AWS DMS レプリケーションインスタンスと同じ構成であることを確認してください。ネットワーク接続のトラブルシューティングには、まず新しい Amazon EC2 インスタンスで次のコマンドを実行します。

telnet database_IP_address_or_DNS port_number

注: database_IP_address_or_DNS を AWS DMS ソースまたはターゲットのエンドポイントに指定したデータベースの IP アドレスまたはドメイン名に置き換えてください。port_number を AWS DMS ソースまたはターゲットのエンドポイントに指定したデータベースのポート番号に置き換えてください。

次に、以下のコマンドを実行します。

nslookup domain_name

注: domain_name を AWS DMS ソースまたはターゲットのエンドポイントに指定したデータベースのドメイン名に置き換えてください。

ネイティブデータベースに関するエラーを解決する

ネイティブデータベースに関連するエラーを解決するには、次のエンドポイント構成が正しく設定されていることを確認してください。

  • ユーザー名
  • パスワード
  • ServerName
    注: ServerName をオンプレミスデータベースの DNS または IP アドレス、あるいは Amazon Relational Database Service (Amazon RDS) エンドポイントに設定する必要があります。
  • ポート
  • データベース名
    注: MySQL のソースまたはターゲットには、データベース名を指定しないでください。

AWS Secrets Manager を使用して上記のフィールドのいずれかを指定する場合は、「シークレットを使用して AWS DMS エンドポイントにアクセスする」を参照してください。

注: Secrets Manager では、パスワードにセミコロン (;)、ピリオド (.)、コロン (:)、プラス記号 (+)、および中括弧 ({}) を使用できません。

ソースデータベースまたはターゲットデータベースに関連するネイティブデータベースでのエラーについては、かかる特定のデータベースに関するドキュメントの解決策を参照してください。AWS DMS コンソールに表示されたエラーコードとエラーメッセージを参照してください。

エンドポイント設定用の認証情報を手動で入力する際、パスワードを中括弧で囲まないよう注意してください。中括弧を入力した場合、次のようなエラーメッセージが表示されます。

Amazon Redshift がターゲットエンドポイントである場合のエラー例

「[SERVER ]E: RetCode: SQL_ERROR SqlState: 28000 NativeError: 10 Message: [Amazon][Amazon Redshift] (10) Error occurred while trying to connect: [SQLState 28000] connection to server at Your workgroup endpoint (IP), port 5439 failed: FATAL: password authentication failed for user Your Username [1022502] (ar_odbc_conn.c:614) (接続の試行時に、パスワード認証を行えませんでした)」

MySQL がターゲットエンドポイントである場合のエラーの例

「00012920: 2025-05-08T20:27:50:341649 [SERVER ]D: RetCode: SQL_ERROR SqlState: HY000 NativeError: 1045 Message: [MySQL][ODBC 8.0(w) Driver]Access denied for user UserName@IP (using password: YES) [1022502] (ar_odbc_conn.c:614) (アクセスは拒否されました)"

SQL Server がターゲットエンドポイントである場合のエラー例

「00012920: 2025-05-08T21:15:20:185761 [SERVER ]E: RetCode: SQL_ERROR SqlState: 28000 NativeError: 18456 Message: [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Login failed for user UserName. [1022502] (ar_odbc_conn.c:614) (ログインできませんでした)」

注: PostgreSQL をターゲットエンドポイントとして使用する場合は、中括弧を使用できます。

詳細については、ソースデータベースまたはターゲットデータベースのエラー、トレース、アラートなどのログを確認してください。

データベースアクセスエラーの場合は、特定のソースまたはターゲットに対する、AWS DMS に必要なアクセス許可を確認してください。

SSL を使用してソースエンドポイントとターゲットエンドポイントの接続を暗号化する方法の詳細については、「AWS DMS で SSL を使用する」を参照してください。

関連情報

AWS DMS を使用しているときの、Amazon S3 エンドポイント接続テストの失敗をトラブルシューティングする方法を教えてください

Amazon Redshift をターゲットエンドポイントとして使用する AWS DMS タスクの接続に関する障害やエラーをトラブルシューティングする方法を教えてください

AWS DMS と MongoDB ソースエンドポイント間の接続障害をトラブルシューティングする方法を教えてください

Microsoft SQL Server データベースを AWS クラウドに移行する

コメントはありません

関連するコンテンツ