フルトレースとは?
OceanBaseデータベースは分散システムであり、複雑な呼び出しチェーンを持っています。タイムアウトが発生した場合、OceanBase内部のコンポーネントやネットワークの問題かどうかを迅速に特定することは難しく、運用担当者は経験やobserverログに基づいて分析するしかありません。診断効率を向上させるため、今回の更新では新しいフルトレースメカニズムを導入しました。このメカニズムは、ユーザーのSQLリクエストがデータベース全体のプロセスにおいて、異なるコンポーネントや段階で実行される関連情報を追跡し、可視化してユーザーに表示することで、ユーザーが問題の位置を迅速に特定できるよう支援します。これにより、ユーザーはコンポーネント内部の問題を迅速かつ正確に発見できるようになります。
フルトレースのパス
フルトレースは、主に2つのデータストリームパスをカバーしています。
- 1つ目は、リクエストがアプリケーションから始まり、クライアント(JDBCやOCIなど)を通じてODP(プロキシサーバー)に送信され、その後ODPからOBServerに転送され、最終的に結果がアプリケーションに返されるパスです。
- 2つ目は、リクエストが直接アプリケーションからクライアントを通じてOBServerに送信され、その後結果が直接返されるパスです。
フルトレースの目的は、これら2つのパス上のすべてのコンポーネントにおける問題の特定です。 ユーザーはクライアントを使用してOceanBaseデータベースに接続し、クライアントからリクエストを送信する際、リクエストはOBProxyを経由してOBServerに転送されるか、あるいは直接OBServerに到達します。フルトレース機能を利用することで、運用担当者はPL/SQLのDBMS_MONITORパッケージ内のメソッドを使用して、必要に応じてアプリケーションのフルトレース(trace)の有効化や、トレース情報の出力詳細を制御・監視できます。
フルトレースのログ
フルトレースのログ、すなわちトレースログ(trace logs)は、データアクセスパスに基づいて記録内容が決定されます。ODPを介してデータベースにアクセスする場合、トレース情報はOBProxyとOBServerの両方のログファイルに同時に記録されます。一方、OBServerに直接アクセスする場合は、OBServerのログファイルにのみ記録されます。具体的には、OBProxyのトレースログファイル名はobproxy_trace.log、OBServerのトレースログファイル名はtrace.logとなります。各ログファイルのサイズ制限は256MBであり、ログがこのサイズ制限に達すると、システムは新しいログファイルを作成し、古いファイルをアーカイブします。アーカイブファイルの数は構成パラメータmax_syslog_file_countによって制御され、上限を超えるファイルは自動的に削除されます。 運用担当者は、すべてのトレースログを収集・分析することで、各トランザクションまたはSQLクエリがプロキシチェーン全体で実行される時間やその他の関連情報を追跡できます。これは、問題の正確な特定に重要な手がかりを提供するだけでなく、運用効率も大幅に向上させます。