バックアップと復元をセットアップして、それが機能することを確認しようとしています。
ldap.old
のデータベースサイズはldap
よりはるかに大きいことに注意してください。 /var/lib/ldap.old
は私の既存のデータベースです。バックアップ/復元テストのために/var/lib/ldap
に名前を変更しました。
復元すると次のエラーが表示されます。このため、すべてを正常に復元できたかどうかはわかりません。
...
added: "uid=user11123,ou=Abcd,ou=Industry Professional,dc=testdomain,dc=org" (0001cc9f)
added: "uid=user13123,ou=Abcd,ou=Industry Professional,dc=testdomain,dc=org" (0001cca0)
Error, entries missing!
entry 79870: ou=industryprofessional,dc=testdomain,dc=org
entry 79871: ou=abcd professional,ou=industryprofessional,dc=testdomain,dc=org
[root@openldap]# du -khs ldap ldap.old/
3.3G ldap
4.0G ldap.old/
これが私のバックアップ/復元プロセスです:
slapcat -v -l backup_openldap.ldif
/etc/init.d/ldap stop
mv /var/lib/ldap /var/lib/ldap.old
mkdir /var/lib/ldap
chmod go-rwx /var/lib/ldap
cp –rfp /var/lib/ldap.old/DB_CONFIG /var/lib/ldap
slapadd –v –l backup_openldap.ldif
chown ldap:ldap /var/lib/ldap
/etc/init.d/ldap start
すべてのレコードが正常に復元されたことを確認するにはどうすればよいですか?
まず最初に、slapcatの 制限 に注意する必要があります。
_For some backend types, your slapd(8) should not be running
(at least, not in read-write mode) when you do this to ensure
consistency of the database. It is always safe to run slapcat
with the slapd-bdb(5), slapd-hdb(5), and slapd-null(5) backends.
_
したがって、backupを_/etc/init.d/ldap stop
_および_/etc/init.d/ldap start
_にもパックする方がよいでしょう。
復元手順でldap
を再起動する前に、ロードしたばかりのデータを一時ファイルにダンプし、それを入力として使用したLDIFファイルと比較できます。 slapcat
のLDIF出力は識別名でソートされるので、diff
はexit-code 0で終了するはずです。
_...
chown ldap:ldap *
slapcat -l /var/tmp/test.ldif
diff /var/tmp/test.ldif /backup/openldap/backup_ldap2.diff
if [ $? != 0 ] ; then
echo 'differences found'
fi
/etc/init.d/ldap start
_
もちろん、これはslapcat
が正しく機能していることを前提としています。 youに関連するすべてのデータをldap_search_ext()
を使用して実行中のDBから抽出する必要があると信頼できない場合は、いくつかの出力(そこからダンプまたはチェックサムを取得し、復元されたデータベースで同じコードを実行した場合と比較します(もちろんldap
を開始した後)。こうすることで、slapcat
によって、使用状況に関連する一部のデータがダンプから除外されているかどうかがわかります(可能性は低いですが、バグがある場合は可能です)。