このトピックでは、DBGateway のディレクトリ構造と DBGateway で実行できる基本操作について説明し、DBGateway の使用時に発生する可能性のある一般的な問題のトラブルシューティング方法を示します。
ディレクトリ構造
dbgateway
|-- bin
| |-- dbgateway
| \-- dbgateway-manager
|-- conf
| |-- dbgateway.conf
| \-- server.crt
\-- log
|-- dbgateway.err
|-- dbgateway.log
\-- dbgateway_manager.log
bin フォルダには、dbgateway ファイルと dbgateway-manager ファイルが含まれています。 dbgateway ファイルはメインプログラムです。 dbgateway-manager ファイルには、DBGateway の保守に使用される管理スクリプトが格納されています。
conf フォルダには、dbgateway.conf ファイルと server.crt ファイルが含まれています。 dbgateway.conf ファイルには、DBGateway に関する構成情報が格納されています。 server.crt ファイルには、公開鍵証明書が格納されています。
log フォルダには、dbgateway.err、dbgateway.log、および dbgateway_manager.log ファイルが含まれています。 dbgateway.err ファイルには、DBGateway のエラーメッセージが格納されています。 dbgateway.log ファイルには、DBGateway のログが格納されています。 dbgateway_manager.log ファイルには、DBGateway 管理スクリプトのログが格納されています。
基本操作
DBGateway のログを表示する
DBGateway のログファイルは、/opt/dbgateway/log/dbgateway.log パスに格納されています。
ログファイルはテキストファイルです。 vim、tail、cat、less などの標準 UNIX ユーティリティを使用してログファイルを表示できます。
Database Autonomy Service (DAS) のカスタマーサービスまたはテクニカルサポート担当者は、トラブルシューティングのために DBGateway のログを要求する場合があります。 この場合、DBGateway がデプロイされているサーバーにログインし、次のコマンドを実行して最後の 200 個のログエントリを表示できます。 次に、ログエントリをコピーしてカスタマーサービスまたはテクニカルサポート担当者に送信し、トラブルシューティングを行う必要があります。
tail -n 200 /opt/dbgateway/log/dbgateway.log
DBGateway プロセスが実行されているかどうかを確認する
DAS コンソール にログインします。
左側のナビゲーションウィンドウで、[リソース] > [dbgateways] を選択します。
[dbgateways] ページで、管理する DBGateway プロセスを見つけ、[現在のステータス] 列に表示されている情報を表示します。
[現在のステータス] 列に [正常] と表示されている場合、DBGateway プロセスは実行されています。 異常と表示されている場合は、DBGateway がデプロイされているサーバーで次のコマンドを実行します。
/opt/dbgateway/bin/dbgateway-manager -d status
DBGateway プロセスが実行されている場合、次の出力が返されます。
DBGateway is running.
DBGateway プロセスが動作していない場合、次の出力が返されます。
DBGateway is dead.
説明上記の操作を実行して、DBGateway プロセスが実行されているかどうかを確認できますが、DBGateway プロセスが期待どおりに実行されているかどうかを確認するために使用することはできません。
DBGateway プロセスを再起動する
DBGateway プロセスを再起動する前に、このトピックの「DBGateway プロセスが実行されているかどうかを確認する」セクションに記載されている操作を実行して、DBGateway プロセスの状態を確認する必要があります。
DBGateway プロセスを再起動します。
DBGateway プロセスが実行されている場合は、次の操作を実行します。
[dbgateways] ページで、再起動する DBGateway プロセスを見つけ、
[アクション] 列の を選択します。DBGateway がデプロイされているサーバーで次のコマンドを実行します。
/opt/dbgateway/bin/dbgateway-manager -d restart
DBGateway プロセスが動作していない場合は、次の操作を実行します。
DBGateway プロセスが動作していない場合、DAS コンソールで DBGateway プロセスを再起動することはできません。 DBGateway がデプロイされているサーバーで次のコマンドを実行することによってのみ、DBGateway プロセスを再起動できます。 DBGateway がデプロイされているサーバーで次のコマンドを実行します。
/opt/dbgateway/bin/dbgateway-manager -d restart
DBGateway プロセスをアップグレードする
[dbgateways] ページで、アップグレードする DBGateway プロセスを見つけ、
[アクション] 列の を選択します。DBGateway プロセスを停止する
[dbgateways] ページで、停止する DBGateway プロセスを見つけ、
[アクション] 列の を選択します。DBGateway がデプロイされているサーバーで次のコマンドを実行します。
/opt/dbgateway/bin/dbgateway-manager -d stop
DBGateway プロセスを削除する
説明DBGateway プロセスが削除されると、その DBGateway プロセスに関連付けられているデータベースインスタンスのすべての DAS 機能が使用できなくなります。
DBGateway プロセスが [正常] 状態の場合、プロセスを削除する前に DBGateway プロセスを停止する必要があります。
[dbgateways] ページで、削除する DBGateway プロセスを見つけ、
[アクション] 列の を選択します。オプション。 DBGateway がデプロイされているサーバーで次のコマンドを実行して、DBGateway のインストールディレクトリを削除します。
rm -rf /opt/dbgateway
DBGateway を再デプロイする
DBGateway が削除された後、DBGateway がデータベースインスタンスに接続されたときに DAS コンソールによって取得されたデプロイコマンドを実行して、デスティネーションサーバーに DBGateway を再デプロイできます。
デプロイメントに関する問題のトラブルシューティング
[集中モードの Database Gateway] または [ホストモードの Database Gateway] がデータベースインスタンスに接続されている場合、DBGateway のデプロイに使用されるコマンドを取得できます。 このセクションでは、次の図に示されているコマンドを例として実行します。 コマンド内の vpcID と token の値を、実際に使用されている値に置き換えてください。
DBGateway デプロイスクリプトをダウンロードできません。
wget command not found
エラーメッセージが返された場合、wget
コマンドは使用できません。 次のコマンドのいずれかを実行して、wget
ユーティリティをインストールします。sudo apt-get install wget
または
yum -y install wget
サーバーが Alibaba Cloud Object Storage Service (OSS) に接続されているかどうかを確認します。
OSS ドメイン名を取得し、次の
ping
コマンドを実行して、サーバーが OSS に接続されているかどうかを確認します。 次のコマンドでは、OSS ドメイン名はhdm-dbgateway-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com
です。 ドメイン名を、実際に使用されているドメイン名に置き換えてください。ping hdm-dbgateway-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com
次の出力が返された場合、ドメイン名を解決できません。 DNS サーバーの設定が正しいかどうか、およびドメイン名解決サービスが期待どおりに動作しているかどうかを確認してください。
ping: unknown host hdm-dbgateway-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com
ping
コマンドを実行した後、長時間出力が返されない場合、ネットワーク接続に失敗しています。 この場合は、次の操作を実行します。サーバーのネットワーク構成が正しいかどうかを確認します。
サーバーがインターネットまたは VPC 経由で接続されているかどうかを確認します。
サーバーが VPC 経由で接続されている場合は、指定されたリージョンが正しいかどうかを確認します。
サーバーが DAS サーバーに接続されているかどうかを確認します。
DBGateway をデプロイする必要があるサーバーで次のコマンドを実行します。 次のコマンドでは、DAS サーバーのドメイン名は
master-hdm-cn-hangzhou.aliyuncs.com
です。 ドメイン名を、実際に使用されているドメイン名に置き換えてください。telnet master-hdm-cn-hangzhou.aliyuncs.com 80
Name or service not known
エラーメッセージが返された場合、ドメイン名を解決できません。 この場合は、DNS サーバーの設定が正しいかどうか、およびドメイン名解決サービスが期待どおりに動作しているかどうかを確認してください。Trying 10.0.XX.XX
メッセージが返された場合、ネットワーク接続に失敗しています。 この場合は、次の操作を実行します。サーバーのネットワーク構成が正しいかどうかを確認します。
サーバーがインターネットまたは VPC 経由で接続されているかどうかを確認します。
サーバーが VPC 経由で接続されている場合は、指定されたリージョンが正しいかどうかを確認します。
次の出力が返された場合、サーバーは DAS サーバーに接続されています。
Connected to master-hdm-cn-hangzhou.aliyuncs.com. Escape character is '^]'.
DBGateway がまだ起動に失敗する場合は、このトピックの「DBGateway のログを表示する」セクションの手順に従ってトラブルシューティングを行ってください。
操作に関する問題のトラブルシューティング
認証の失敗または権限不足
指定されたパスワードを持つ承認済みアカウントに次の権限があるかどうかを確認します。 次の例では、das_test アカウントを使用しています。
MySQL
CREATE USER 'das_test'@'%' IDENTIFIED BY 'password'; GRANT SHOW DATABASES, PROCESS, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'das_test'@'%'; GRANT SELECT ON *.* TO 'das_test'@'%';
PostgreSQL
CREATE USER das_test PASSWORD 'password'; GRANT SELECT ON ALL TABLES IN SCHEMA PUBLIC TO das_test; /* Optional. Collect slow query logs and SQL statements. */ ALTER USER das_test WITH SUPERUSER;
MongoDB
use admin; db.createUser({user:'das_test',pwd:'password',roles:[{role:'readAnyDatabase', db:'admin'}, {role:'clusterMonitor', db:'admin'}, {role: 'hostManager', db: 'admin'}]})
(Unauthorized) not authorized on admin to execute command
エラーメッセージが返された場合は、次のコマンドを実行して、必要な権限を das_test アカウントに付与します。db.grantRolesToUser("das_test", [{db: "local", role: "dbAdmin"},{db: "config", role: "dbAdmin"},{db: "admin", role: "dbAdminAnyDatabase"}])
Redis
Redis サービスを使用するために Redis アカウントを作成する必要はありません。 Redis サービスにアクセスするためのパスワードが有効であることを確認するだけで済みます。 Redis サービスにアクセスするために使用されるパスワードを変更するには、構成ファイルの requirepass 設定を変更し、Redis サービスを再起動します。 詳細については、「Redis 構成」をご参照ください。
承認済みアカウントとパスワードが有効かどうかを確認します。 DBGateway がデプロイされているサーバーからリモート接続リクエストを開始し、承認済みアカウントとパスワードを使用してデータベースインスタンスに接続することをお勧めします。
DBGateway プロセスを再起動し、データベースインスタンスが期待どおりに接続されているかどうかを確認します。
DBGateway を最新バージョンにアップグレードすることをお勧めします。
接続エラー
接続エラーは、DBGateway がデータベースインスタンスに接続できないために発生します。 考えられる次の原因に基づいて問題をトラブルシューティングします。
データベースインスタンスが期待どおりに実行されているかどうかを確認します。
データベースインスタンスが期待どおりに実行されていない場合は、データベースインスタンスのプロセスが存在するかどうかを確認します。 データベースインスタンスは、MySQL、PostgreSQL、MongoDB、または Redis インスタンスにすることができます。
DBGateway がデプロイされているサーバーがデータベースインスタンスに接続されているかどうかを確認します。 データベースインスタンスは、MySQL、PostgreSQL、MongoDB、または Redis インスタンスにすることができます。 確認を実行するには、次のコマンドを実行します。
telnet <データベースインスタンスの IP アドレスまたはドメイン名> <データベースインスタンスのサービスポート番号>
例:
telnet 192.168.XX.XX 3306
次の出力が返された場合、ネットワーク接続は正常です。 このトピックの「DBGateway のログを表示する」セクションの手順に従ってトラブルシューティングを行う必要があります。
Connected to 192.168.XX.XX Escape character is '^]'.
上記の出力が返されない場合、接続の問題が発生しています。 この問題は通常、サーバー間でネットワークが分離されている、ルート設定が無効である、ファイアウォールまたはデータベースインスタンスがリモートアクセスリクエストを拒否しているなどの理由で発生します。
異常な監視ステータス
DBGateway プロセスの実行状態を確認します。
DBGateway プロセスを再起動し、監視機能が例外から回復するかどうかを確認します。
DBGateway を最新バージョンにアップグレードすることをお勧めします。
長時間残っている
Authorized. Verifying
メッセージほとんどの場合、インスタンスの状態は、承認が成功してから 1 ~ 2 分以内に [アクセス済み] に変わります。 ただし、
Authorized. Verifying
メッセージが 2 分以上残っている場合は、次の操作を実行します。DBGateway プロセスの実行状態を確認します。
DBGateway プロセスを再起動し、データベースインスタンスが期待どおりに接続されているかどうかを確認します。
DBGateway を最新バージョンにアップグレードすることをお勧めします。