9.7. トランザクションログのチューニング
すべての Directory Server インスタンスには、管理するデータベースの更新を記録するトランザクションログが含まれています。変更操作などのディレクトリーデータベース操作が実行されるたびに、サーバーは LDAP 操作の結果として呼び出されるすべてのデータベース操作に対して単一のデータベーストランザクションを作成します。これには、エントリーを含むデータベースファイル内のエントリーレコードの更新と、すべての属性インデックスの更新の両方が含まれます。すべての操作に成功すると、サーバーはトランザクションをコミットし、トランザクションログに操作を書き込み、トランザクション全体がディスクに書き込まれたことを確認します。操作のいずれかが失敗すると、サーバーはトランザクションをロールバックし、すべての操作は破棄されます。この all-or-nothing アプローチにより、更新操作が atomic であることが保証されます。操作全体が永続的かつ変更不可能で成功するか、失敗します。
Directory Server は定期的に、トランザクションログの内容を実際のデータベースインデックスファイルにフラッシュし、トランザクションログのトリミングが必要かどうかを確認します。
サーバーで停電などの障害が発生し、異常にシャットダウンした場合でも、最近のディレクトリー変更に関する情報はトランザクションログに保存されます。サーバーを再起動すると、サーバーはエラー状態を自動的に検出し、データベーストランザクションログを使用してデータベースを復元します。
データベーストランザクションロギング、データベースのフラッシュ、トリミング、およびデータベースリカバリーは介入を必要としない自動プロセスですが、データベーストランザクションロギング属性の一部を調整してパフォーマンスを最適化することを推奨します。
9.7.1. コマンドラインを使用したデータベースチェックポイント間隔の変更 リンクのコピーリンクがクリップボードにコピーされました!
Directory Server は定期的に、トランザクションログに記録されたトランザクションをデータベースファイルに書き込み、データベーストランザクションログにチェックポイントエントリーを記録します。チェックポイントエントリーは、データベースにすでに書き込まれた変更を示すことにより、トランザクションログからの復元を開始する場所を示し、復元プロセスを高速化します。
デフォルトでは、Directory Server は 60 秒ごとにデータベーストランザクションログにチェックポイントエントリーを送信します。チェックポイントの間隔を長くすると、ディレクトリーの書き込み操作のパフォーマンスが向上する可能性があります。ただし、異常シャットダウン後にディレクトリーデータベースを回復するのに必要な時間が長くなり、データベーストランザクションログファイルが大きいため、より多くのディスク領域が必要になる可能性もあります。
手順
たとえば、チェックポイント間隔を 120 秒に変更します。
dsconf <instance_name> backend config set --checkpoint-interval=120
# dsconf <instance_name> backend config set --checkpoint-interval=120
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.7.2. Web コンソールを使用したデータベースチェックポイント間隔の変更 リンクのコピーリンクがクリップボードにコピーされました!
Directory Server は定期的に、トランザクションログに記録されたトランザクションをデータベースファイルに書き込み、データベーストランザクションログにチェックポイントエントリーを記録します。チェックポイントエントリーは、データベースにすでに書き込まれた変更を示すことにより、トランザクションログからの復元を開始する場所を示し、復元プロセスを高速化します。
デフォルトでは、Directory Server は 60 秒ごとにデータベーストランザクションログにチェックポイントエントリーを送信します。チェックポイントの間隔を長くすると、ディレクトリーの書き込み操作のパフォーマンスが向上する可能性があります。ただし、異常シャットダウン後にディレクトリーデータベースを回復するのに必要な時間が長くなり、データベーストランザクションログファイルが大きいため、より多くのディスク領域が必要になる可能性もあります。
前提条件
- Web コンソールでインスタンスにログインしている。
手順
-
に移動します。 - Show Advanced Settings をクリックします。
- Database Checkpoint Interval フィールドの値を更新します。
- をクリックします。
9.7.3. 永続的なトランザクションの無効化 リンクのコピーリンクがクリップボードにコピーされました!
永続的なトランザクションログとは、トランザクション内の一連のデータベース操作で構成される各 LDAP 更新操作が物理的にディスクに書き込まれることを意味します。各 LDAP 操作は複数のデータベース更新で構成できますが、各 LDAP 操作は単一のデータベーストランザクションとして処理されます。各 LDAP 操作はアトミックおよび永続的です。
永続トランザクションをオフにすると、Directory Server の書き込みパフォーマンスが向上する可能性がありますが、データ損失のリスクがあります。
永続トランザクションログを無効にすると、Directory Server はすべてのディレクトリーデータベース操作をデータベーストランザクションログファイルに書き込みますが、物理的にすぐにディスクに書き込まれない場合があります。ディレクトリーの変更が論理データベースのトランザクションログファイルに書き込まれ、システムのクラッシュ時にディスクには物理的に書き込まれなかった場合、変更を復元することはできません。永続トランザクションが無効の場合、復元されたデータベースは一貫性がありますが、システムクラッシュの直前に完了した LDAP 書き込み操作の結果は反映されません。
Directory Server が実行中の場合は、nsslapd-db-durable-transaction
パラメーターを変更できないことに注意してください。
手順
インスタンスを停止します。
dsctl <instance_name> stop
# dsctl <instance_name> stop
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /etc/dirsrv/slapd-<instance_name>/dse.ldif
ファイルを編集し、cn=config,cn=ldbm database,cn=plugins,cn=config
エントリーのnsslapd-db-durable-transaction
パラメーターをoff
に設定します。dn: cn=config,cn=ldbm database,cn=plugins,cn=config ... nsslapd-db-durable-transaction: off ...
dn: cn=config,cn=ldbm database,cn=plugins,cn=config ... nsslapd-db-durable-transaction: off ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow インスタンスを起動します。
dsctl <instance_name> start
# dsctl <instance_name> start
Copy to Clipboard Copied! Toggle word wrap Toggle overflow