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 エントリーのパラメーター。
サプライヤーで次の手順を実行します。
  1. 変更ログのトリミングを設定します。
    • 変更ログエントリーの最長期間を設定するには、以下を入力します。
      # 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 に設定します。
  2. デフォルトでは、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 のサイズを手動で縮小

レプリケーション変更ログのトリミングが有効になっていない場合など、特定の状況では、変更ログが過度に大きなサイズに増大する可能性があります。これを修正するには、変更ログのサイズを手動で減らすことができます。
サプライヤーでこの手順を実行します。

前提条件

レプリケーションを有効にしている。

手順

  1. (オプション) 変更ログのサイズを表示します。
    # 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 つだけ含まれていることを示しています。
  2. 変更ログサイズを縮小した後にパラメーターをリセットできるようにするには、対応するパラメーターの現在の値を表示して書き留めます。
    # 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 はデフォルト値を使用します。
  3. 一時的に、トリミングに関連するパラメーターを減らします。
    # dsconf -D "cn=Directory Manager" ldap://server.example.com replication set-changelog --max-age "300s" --max-entries 500 --trim-interval 60
    重要
    パフォーマンス上の理由から、短い間隔設定を永続的に使用しないでください。
  4. --trim-interval パラメーターに設定した時間が経過するのを待ちます。
  5. 変更ログを圧縮して、ディスク領域を再度確保します。
    # dsconf -D "cn=Directory Manager" ldap://server.example.com backend compact-db --only-changelog
  6. 変更ログパラメーターを、一時的に減らす前の値にリセットします。
    # 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