第 5 章 调整事务日志记录
每个目录服务器包含一个事务日志,负责编写它所管理的所有数据库的操作。每当执行修改等目录数据库操作时,服务器都会为该 LDAP 操作调用的所有数据库操作创建一个数据库事务。这包括更新条目索引文件中的条目数据,并更新所有属性索引。如果所有操作都成功,服务器会提交事务,将操作写入事务日志,并验证整个事务是否已写入到磁盘。如果其中任何 这些操作失败,服务器会回滚事务,并且丢弃所有操作。在服务器上,这种方法以原子方式保证更新操作是 原子 的。整个操作会永久成功,且不可避免,或者失败。
目录服务器(通过内部托管线程)将事务日志的内容刷新到实际数据库索引文件中,并检查事务日志是否需要修剪。
如果服务器遇到失败(如关机),并正常关闭,则有关最近目录更改的信息仍由事务日志保存。服务器重启时,目录会自动检测到错误条件,并使用数据库事务日志来恢复数据库。
虽然数据库事务日志和数据库恢复是无需干预的自动过程,但建议您调优一些数据库事务日志属性来优化性能。
警告
事务日志记录属性仅适用于系统修改和诊断。这些设置应该只在红帽技术支持的指导下修改。设置这些属性和其他配置属性不一致,可能会导致目录不稳定。
5.1. 将数据库目录移到 9 月磁盘或分区中
要实现更高的性能,在快速驱动器中存储目录服务器数据库和事务日志,如非易失性内存 express(NVMe)驱动器或 SSD。
例如,如果您已在运行了目录服务器实例,并希望将
/dev/nvme0n1p1
分区挂载到 /var/lib/dirsrv/slapd-instance_name/db/
目录中:
- 停止实例:
# systemctl stop dirsrv@instance_name
- 将
/dev/nvme0n1p1
分区挂载到临时目录。例如:# mount /dev/nvme0n1p1 /mnt/
- 将
/var/lib/dirsrv/slapd-instance_name/db/
目录的内容复制到临时挂载点:# mv /var/lib/dirsrv/slapd-instance_name/db/* /mnt/
- 卸载临时目录:
# umount /mnt/
- 如果
/var/lib/dirsrv/slapd-instance_name/db/
也是一个单独的挂载点,卸载该目录:# umount /var/lib/dirsrv/slapd-instance_name/db/
- 更新
/etc/fstab
文件,以便在系统引导时自动将/dev/nvme0n1p1
分区挂载到/var/lib/dirsrv/slapd-instance_name/db/
。详情请查看 Red Hat System Administrator 指南中的对应 部分。 - 挂载文件系统。如果您将条目添加到
/etc/fstab
中:# mount /var/lib/dirsrv/slapd-instance_name/db/
- 如果 SELinux 在 enforcing 模式下运行,请恢复 SELinux 上下文:
# restorecon -Rv /var/lib/dirsrv/slapd-instance_name/db/
- 启动实例:
# systemctl start dirsrv@instance_name