Upgrade BerkeleyDB
Przy przenoszeniu katalogu LDAP do nowej instalacji z nowszą wersją samego OpenLDAP (2.4.25) i nowszą wersją BerkeleyDB (5.1.25) musiałem dokonać upgradeu środowiska BerkeleyDB. Ponieważ można się natknąć na to w dowolnej aplikacji wykorzystującej bdb, gdy podnosimy wersję BerkeleyDB, postanowiłem opisać jak tego dokonałem. Jeśli w logach znajdziecie coś takiego:
Program version 5.1 doesn't match environment version 4.7
database ... cannot be opened, err -30969. Restore from backup!
bdb(...): txn_checkpoint interface requires an environment configured for the transaction subsystem
bdb_db_close: database "...": txn_checkpoint failed: Invalid argument (22).
backend_startup_one (type=hdb, suffix="..."): bi_db_open failed! (-30969)
bdb_db_close: database "...": alock_close failed
to właśnie oznacza, że należy zrobić upgrade. Najpierw jednak polecam zrobić kopię:
# cd /data/var/openldap/openldap-data # cp -a baza baza.db47
spróbujmy db_upgrade
:
# /usr/local/BerkeleyDB.5.1/bin/db_upgrade -h /data/var/openldap/openldap-data/baza * db_upgrade: Program version 5.1 doesn't match environment version 4.7 db_upgrade: DB_ENV->open: DB_VERSION_MISMATCH: Database environment version mismatch
nic z tego, musimy wrócić do starego środowiska i tam wykonać pewne kroki:
# /usr/local/BerkeleyDB.4.7/bin/db_checkpoint -1 -h /data/var/openldap/openldap-data/baza # /usr/local/BerkeleyDB.4.7/bin/db_recover -h /data/var/openldap/openldap-data/baza
po tej operacji możemy przenieść się już do nowej instalacji (wersji) i uruchomić aplikację, która powinna odbudować sobie środowisko już w nowej wersji. Można też zrobić to ręcznie używając /usr/local/BerkeleyDB.5.1/bin/db_upgrade -e
(czyli już z nowej wersji).