7.2. 手动将数据库类型从 BDB 迁移到 LMDB
在以下情况下,使用实例的 Berkeley Database (BDB)后端手动迁移到 Lightning Memory-Mapped 数据库(LMDB):
-
无法执行
dsctl工具的迁移。 - 您需要手动设置 LMDB 配置属性。
前提条件
-
您有
root权限。 - 您有目录管理器密码。
流程
- 将所有数据库导出到 LDIF 文件,如 在服务器离线时使用命令行导出数据 中所述。
通过阐明现有数据库大小并添加安全边缘 20% 来确定 LMDB 数据库最大大小。如果您从 LMDB 迁移到 BDB,请跳过这一步。
阐明现有数据库大小:
# du -hs /var/lib/dirsrv/slapd-instance_name/db/*/ 1.8GB添加 20% 的安全利润:
1.8 GB + 20% = 2.16 GB在以后的步骤中,您需要最大数据库大小。
将实例上的数据库类型更改为 LMDB,然后重新启动实例:
# dsconf instance_name backend config set --db-lib mdb Successfully updated database configuration # dsctl instance_name restart Instance "instance_name" has been restarted当您从 LMDB 迁移到 BDB 时,将
--db-lib 选项设置为bdb。将 LMDB 最大大小设置为您在前面的步骤(2.16 GB)中计算的值,然后重启实例:
# dsconf instance_name backend config set --mdb-max-size 2319282339 Successfully updated database configuration # dsctl instance_name restart Instance "instance_name" has been restarted命令设置
nsslapd-mdb-max-size配置参数值。注意如果您从 LMDB 迁移到 BDB,请跳过这一步。
- 从 LDIF 文件 导入所有数据库,如在服务器离线时使用命令行导入数据 中所述。
验证
-
检查
nsslapd-backend-implement配置参数值是否已设置为mdb:
# dsconf -D "cn=Directory Manager" ldap://server.example.com backend config get | grep nsslapd-backend-implement
Enter password for cn=Directory Manager on ldap://server.example.com: password
nsslapd-backend-implement: mdb