15.18. レプリケーション changelog のトリム
ディレクトリーサーバーの changelog は、受け取ったおよび処理された変更の一覧を維持します。これには、クライアントの変更やレプリケーションパートナーから受け取った変更が含まれます。
デフォルトでは、ディレクトリーサーバーは 7 日間経過した変更ログエントリーを削除します。ただし、これを変更して以下を設定できます。
- 変更ログにおけるエントリーの最大経過時間 (
nsslapd-changelogmaxage
パラメーター)。 - 変更ログ内のレコード総数 (
nsslapd-changelogmaxentries
パラメーター)。
これらの設定のうち少なくとも 1 つが有効にされると、ディレクトリーサーバーはデフォルトで変更ログを 5 分ごとにトリミングします (
nsslapd-changelogtrim-interval
)。
すべてのレコードとその後に作成されたレコードは、トポロジー内のすべてのサーバーで正常にレプリケートされるまで、変更ログに残ります。「レプリケーショントポロジーからのサプライヤーの削除」 で説明されているように、トポロジーからサプライヤーを削除する必要がある場合、Directory Server は、このサプライヤーのすべての更新を他のサーバーの変更ログから削除します。
15.18.1. レプリケーション変更ログのトリミング設定
デフォルトでは、ディレクトリーサーバーは 7 日間経過した変更ログエントリーを削除します。ただし、ディレクトリーサーバーがエントリーを削除できるようになるまでの時間を設定できます。エントリー数が設定値を超えた場合にエントリーを自動的に削除するようにディレクトリーサーバーを設定することもできます。
注記
Red Hat は、エントリーの最大数ではなく、最大経過時間を設定することを推奨します。最大経過時間は、
nsDS5ReplicaPurgeDelay
parameter in the cn=replica,cn=suffixDN,cn=mapping tree,cn=config エントリーのパラメーター。
サプライヤーで次の手順を実行します。
- 変更ログのトリミングを設定します。
- 変更ログエントリーの最長期間を設定するには、以下を入力します。
# dsconf -D "cn=Directory Manager" ldap://server.example.com replication set-changelog --max-age "4w"
このコマンドは、最大経過時間を 4 週間に設定します。パラメーターは、以下の単位をサポートします。- s (S) (秒)
- m (M) (分)
- h (H) (時間)
- d (D) (日)
- w (W) (週間)
- エントリーの最大数を設定するには、以下を入力します。
# dsconf -D "cn=Directory Manager" ldap://server.example.com replication set-changelog --max-entries "100000"
このコマンドは、変更ログのエントリーの最大数を 100,000 に設定します。
- デフォルトでは、Directory Server は変更ログを 5 分 (300 秒) ごとにトリミングします。別の間隔を設定するには、以下を入力します。
# dsconf -D "cn=Directory Manager" ldap://server.example.com replication set-changelog --trim-interval 600
このコマンドは、間隔を 10 分 (600 秒) に設定します。
15.18.2. 大きな changelog のサイズを手動で縮小
レプリケーション変更ログのトリミングが有効になっていない場合など、特定の状況では、変更ログが過度に大きなサイズに増大する可能性があります。これを修正するには、変更ログのサイズを手動で減らすことができます。
サプライヤーでこの手順を実行します。
前提条件
レプリケーションを有効にしている。
手順
- (オプション) 変更ログのサイズを表示します。
# ls -lh /var/lib/dirsrv/slapd-instance_name/changelogdb/ total 159M rw------. 1 dirsrv dirsrv 159M Nov 21 04:01 a1cf5703-697a11ed-896ed7a0-04f329b5_637b3daf000000010000.db rw------. 1 dirsrv dirsrv 30 Nov 21 03:58 DBVERSION
この例は /var/lib/dirsrv/slapd-instance_name/changelogdb/ ディレクトリーに、サイズが 159M の changelog ファイルが 1 つだけ含まれていることを示しています。 - 変更ログサイズを縮小した後にパラメーターをリセットできるようにするには、対応するパラメーターの現在の値を表示して書き留めます。
# dsconf instance_name replication get-changelog dn: cn=changelog5,cn=config cn: changelog5 nsslapd-changelogdir: /var/lib/dirsrv/slapd-instance_name/changelogdb/ nsslapd-changelogmaxage: 7d nsslapd-changelogtrim-interval: 300 objectClass: top objectClass: nsChangelogConfig
出力に特定の属性が表示されない場合、Directory Server はデフォルト値を使用します。 - 一時的に、トリミングに関連するパラメーターを減らします。
# dsconf -D "cn=Directory Manager" ldap://server.example.com replication set-changelog --max-age "300s" --max-entries 500 --trim-interval 60
重要パフォーマンス上の理由から、短い間隔設定を永続的に使用しないでください。 --trim-interval
パラメーターに設定した時間が経過するのを待ちます。- 変更ログを圧縮して、ディスク領域を再度確保します。
# dsconf -D "cn=Directory Manager" ldap://server.example.com backend compact-db --only-changelog
- 変更ログパラメーターを、一時的に減らす前の値にリセットします。
# dsconf -D "cn=Directory Manager" ldap://server.example.com replication set-changelog --max-age "7d" --max-entries 0 --trim-interval 300
検証
- 変更ログのサイズを表示します。
# ls -lh /var/lib/dirsrv/slapd-instance_name/changelogdb/ total 14M rw------. 1 dirsrv dirsrv 14M Nov 21 05:08 a1cf5703-697a11ed-896ed7a0-04f329b5_637b3daf000000010000.db rw------. 1 dirsrv dirsrv 30 Nov 21 05:01 DBVERSION