9.7. 调优事务日志记录
每个目录服务器实例都包含一个事务日志,记录它管理的数据库更新。每当执行目录数据库操作时,如修改操作,服务器会为为该 LDAP 操作调用的所有数据库操作创建一个数据库事务。这包括更新包含条目的数据库文件中的条目记录,并更新所有属性索引。如果所有操作都成功,服务器会提交事务,将操作写入事务日志,并验证整个事务是否写入磁盘。如果其中任何操作失败,服务器会回滚事务,并且丢弃所有操作。这种完全没有的方法保证更新操作是原子的。整个操作会永久成功且不可撤销,或者失败。
目录服务器定期将事务日志的内容刷新到实际的数据库索引文件中,并检查事务日志是否需要修剪。
如果服务器遇到失败(如电源中断)并正常关闭,则事务日志仍会保存最近目录更改的信息。当服务器重启时,服务器会自动检测到错误条件,并使用数据库事务日志来恢复数据库。
虽然数据库事务日志记录,刷新数据库、修剪和数据库恢复是不需要干预的自动进程,但建议调优一些数据库事务日志属性以优化性能。
9.7.1. 使用命令行更改数据库检查点间隔 复制链接链接已复制到粘贴板!
定期,Directory 服务器会将登录事务的事务写入数据库文件,并在数据库事务日志中记录检查点条目。通过指示哪些更改已写入数据库,检查点条目指示从事务日志开始恢复的位置,从而加快恢复过程。
默认情况下,Directory 服务器每 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 服务器会将登录事务的事务写入数据库文件,并在数据库事务日志中记录检查点条目。通过指示哪些更改已写入数据库,检查点条目指示从事务日志开始恢复的位置,从而加快恢复过程。
默认情况下,Directory 服务器每 60 秒向数据库事务日志发送检查点条目。增加检查点间隔可提高目录写入操作的性能。但是,它还可以增加在分散关闭后恢复目录数据库所需的时间,并因为大型数据库事务日志文件需要更多磁盘空间。
先决条件
- 在 web 控制台中登录到实例。
流程
-
导航到
。 - 单击 Show Advanced Settings。
- 更新 Database Checkpoint Interval 字段中的值。
- 单击 。
9.7.3. 禁用持久化事务 复制链接链接已复制到粘贴板!
持久化事务日志记录意味着每个 LDAP 更新操作(由事务中的一系列数据库操作组成)都物理写入磁盘。尽管每个 LDAP 操作可由多个数据库更新组成,但每个 LDAP 操作都被视为单个数据库事务。每个 LDAP 操作都是原子和持久化的。
关闭持久事务可提高目录服务器的写入性能,以防出现数据丢失的风险。
当您禁用持久事务日志时,目录服务器会将每个目录数据库操作写入数据库事务日志文件,但可能无法立即写入磁盘。如果目录更改被写入逻辑数据库事务日志文件,但没有在系统崩溃时物理写入磁盘,则无法恢复更改。当禁用持久化事务时,恢复的数据库一致,但不反映在系统崩溃前完成的任何 LDAP 写入操作的结果。
请注意,如果目录服务器正在运行,您无法更改 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