openldap的备份,只有在升级崩溃时才知道有多重要。

1. slapcat命令

备份主要使用slapcat命令,该命令的格式如下:

slapcat [-v] [-c] [-g] [-d level] [-b suffix] [-n dbnum] [-a filter] [-f slapd.conf] [-F confdir] [-l ldif-file]

-v: 启用verbose模式; -c: 启用continue模式,会忽略错误; -g: 禁用subordinate gluing; -d level: 开启debug模式,会输出debug信息; -b suffix: 使用指定的后缀来决定哪个数据库需要备份。-b不能与-n一起使用。 -n dbnum: 为指定的第dbnum个数据库生成备份。-b不能与-n一起使用。 -a filter: 过滤条件;比如 slapcat -a (!(entryDN:dnSubtreeMatch:=ou=People,dc=example,dc=com))" 会备份所有dc=example,dc=com下的不包含ou=People,dc=example,dc=com子树的数据; -f slapd.conf: 指定slapd.conf配置文件; -F confdir: 指定slapd配置文件目录,比如CentOS下的/etc/openldap/slapd.d; 如果-f和-F同时被指定,则使用-f的配置,如果两者都没有被指定,则使用默认配置; -l ldif-file: 需要生成的ldif文件名称。

2. 配置备份

slapcat -n 0 -l config.ldif

参数"-n 0":指示slapcat命令备份编号为0的数据库,也就是存储配置文件的数据库,n是number的意思; 参数"-l config.ldif":指示slapcat命令将数据备份至"config.ldif"文件中。

3. 数据备份

slapcat -n 2 -l data.ldif

参数 "-n 2":同样是指示数据库的编号,这个编号在安装的时候进行指定; 参数 "-l data.ldif":指示slapcat命令将数据备份至"data.ldif"文件中。

4. 恢复

4.1 准备

sudo systemctl stop slapd

4.2 恢复配置文件

(1) 查看配置文件目录权限设置

ls -ld /etc/openldap/slapd.d

(2) 备份配置文件目录

sudo mv /etc/openldap/slapd.d /etc/openldap/slapd.d.`date '+%Y-%m-%d'`

(3) 创建新的配置文件目录并赋权

sudo mkdir /etc/openldap/slapd.d
chown -R ldap:ldap /etc/openldap/slapd.d

(4) 恢复

sudo slapadd -n 0 -F /etc/openldap/slapd.d -l /backups/config.ldif

参数"-n 0":与备份命令的含义一致; 参数“-F /etc/openldap/slapd.d”:指明了配置文件所在的目录。

4.3 恢复数据文件

(1) 查看数据文件目录权限设置

ls -ld /var/lib/ldap

(2) 备份数据文件目录

sudo mv /var/lib/ldap /var/lib/ldap`date '+%Y-%m-%d'`

(3) 创建新的数据文件目录并赋权

sudo mkdir /var/lib/ldap
sudo chown -R ldap:ldap /var/lib/ldap

(4) 恢复

sudo slapadd -n 2 -F /etc/openldap/slapd.d -l /backups/data.ldif

参考

https://www.cnblogs.com/eagle6688/p/16996460.html https://www.openldap.org/doc/admin24/maintenance.html https://tylersguides.com/articles/backup-restore-openldap/ http://itdavid.blogspot.com/2012/05/howto-openldap-24-backup-recovery-on.html http://genetics.wustl.edu/technology/backing-up-and-restoring-openldap/ https://man7.org/linux/man-pages/man8/slapcat.8.html