Data Transmission Service (DTS) は、DTSサーバーがソースデータベースに接続できるかどうかを事前にチェックします。 このトピックでは、接続障害の原因と障害のトラブルシューティング方法について説明します。
次の原因により、接続事前チェック中にソースデータベースの接続に失敗することがあります。
データベースアカウントまたはパスワードが無効です。
サンプルエラー
ユーザー 'XXX' @ 'XXX' のアクセスが拒否されました (パスワード: はい)
トラブルシューティング
コマンドラインツールまたはクライアントを使用してソースデータベースに接続し、データベースアカウントとパスワードが有効かどうかを確認します。
一般的なエラー:
データベースアカウントの代わりにAlibaba Cloudアカウントが入力されます。
入力したデータベースアカウントが存在しません。
無効なパスワードが入力されました。
解決策
最初に DTSコンソールで、データ移行タスクを変更します。 有効なデータベースアカウントとパスワードを入力し、再度事前チェックを実行します。
ソースデータベースがApsaraDB for RedisインスタンスまたはTairインスタンスの場合、アカウントのタイプに基づいて正しい形式でパスワードを入力します。
ユーザー名がインスタンスIDと同じデフォルトアカウントを使用する場合は、パスワードのみを入力します。
カスタムアカウントを使用する場合は、
<カスタムアカウント >:< パスワード>
の形式でパスワードを入力します。 たとえば、ApsaraDB For Redisインスタンスに入力したアカウントがadminで、パスワードがRp829dlwaの場合、パスワードとしてadmin:Rp829dlwaを入力する必要があります。
ソースデータベースへのアクセスに使用するIPアドレスからのアクセスを許可しない
トラブルシューティング
コマンドラインツールまたはクライアントを使用して、ソースデータベースに接続します。 接続が成功した場合、ソースデータベースは、ソースデータベースへのアクセスに使用するIPアドレスからのアクセスを許可しない場合があります。
ソースデータベースが自己管理型MySQLデータベースの場合、MySQLクライアントを使用してデータベースに接続し、次のコマンドを実行できます。
SELECT HOST FROM mysql.user WHERE user='username',password='password';
説明上記のコマンドのusernameとpasswordを、データ移行タスクに指定されたデータベースアカウントとパスワードに置き換えます。
DTSサーバのIPアドレスがコマンド出力のIPアドレスホワイトリストに含まれているかどうかを確認します。 詳細については、「DTSサーバーのCIDRブロックの追加」をご参照ください。
ソースデータベースがSQL Serverデータベースの場合は、データベースが展開されているサーバーにファイアウォールが設定されているかどうかを確認します。 さらに、ソースデータベースのエンドポイントまたはトリガーが、使用するIPアドレスからのアクセスを許可しないかどうかを確認します。
ソースデータベースがOracleデータベースの場合は、Oracleデータベースの構成ファイルsqlnet.oraを確認してください。 sqlnet.ora構成ファイルの
TCP.VALIDNODE_CHECKING
パラメーターがyes
に設定されている場合、ソースデータベースは使用するIPアドレスからのアクセスを許可しません。
解決策
ソースデータベースが自己管理型MySQLデータベースの場合、次のコマンドを実行して、データベースアカウントに権限を付与します。
GRANT ALL ON *.* TO 'username'@'%';
説明上記のコマンドのusernameを、データ移行タスクに指定されたデータベースアカウントに置き換えます。
ソースデータベースがSQL Serverデータベースの場合は、ファイアウォールまたはトリガーを無効にします。
ソースデータベースがOracleデータベースの場合、
TCP.VALIDNODE_CHECKING
パラメーターをno
に設定し、プロセスを再起動します。
最初に DTSコンソールを使用して、再度事前チェックを実行します。
ソースデータベースがデプロイされているサーバーに対してファイアウォールが構成されている
トラブルシューティング
ソースデータベースが展開されているサーバーがWindowsを実行している場合は、コントロールパネルからWindows Defenderファイアウォールを見つけて、サーバー用にファイアウォールが構成されているかどうかを確認します。
ソースデータベースがデプロイされているサーバーがLinuxを実行している場合は、
iptables -L
コマンドを実行して、サーバーにファイアウォールが設定されているかどうかを確認します。
解決策
ファイアウォールを無効にしてから、 DTSコンソールを使用して、再度事前チェックを実行します。
ネットワーク接続が失敗する
前述のトラブルシューティングの後でも接続テストが失敗した場合、DTSサーバーとソースデータベースの間でネットワーク接続の問題が発生する可能性があります。