Bobcares

Restore Zimbra LDAP database from backup – How we do it

by | Dec 3, 2020

Wondering how to restore the Zimbra LDAP database from a backup? We can help you with it.

Here at Bobcares, we have seen several such Zimbra related queries as part of our Server Management Services for web hosts and online service providers.

Today we’ll take a look at the restoration process of the Zimbra LDAP database from backup.

 

How we restore Zimbra LDAP database from backup

Recently, one of our customers approached us with the below error while restarting Zimbra services.

$ zmcontrol start
Host mail.mydomain.com
  Starting ldap…Done.
  Unable to determine enabled services from ldap.
  Unable to determine enabled services. Cache is out of date or doesn’t exist.

We found the problem to be with the LDAP database. So we decided to rebuild the database as it was unrepairable.

Now let’s take a look at how our Support Engineers restore the Zimbra LDAP database from backup.

Before restoring an LDAP from the backup, we make sure that:

  • LDAP service is not running
  • The /opt/zimbra/data/ldap/config directory is empty and writeable
  • The /opt/zimbra/data/ldap/db directory is empty and writeable

 

Step 1: Stop Zimbra Services

First, we found that a recent Zimbra LDAP backup located under /opt/zimbra/backup directory. Generally, backups are named ldap_[timestamp].tar.gz and contain the following files:

  • ldap.ldif
  • ldap-schema.ldif (schema information)
  • ldap-config.ldif (backup of all cn=config elements)

First, we stop all Zimbra Services by running the below command.

$ zmcontrol stop

 

Step 2: Backup Zimbra LDAP Data

After stopping the services, we back up the old data. We run the below commands as a root user.

$ mv /opt/zimbra/data/ldap/config/ /opt/zimbra/data/ldap/OLDconfig/
$ mv /opt/zimbra/data/ldap/mdb/db /opt/zimbra/data/ldap/mdb/OLD_db/

Then we recreate LDAP data folders and give them the correct permissions as below.

$ mkdir -p /opt/zimbra/data/ldap/mdb/db /opt/zimbra/data/ldap/mdb/logs
$ chown -R zimbra:zimbra /opt/zimbra/data/ldap
$ /opt/zimbra/libexec/zmfixperms -verbose

 

Step 3: Restore the Zimbra LDAP database from backup.

Now, we have the data directory empty. So we navigate to the directory with the LDAP backup. The backups were archived, so we uncompressed them before restoration.

$ cd /opt/zimbra/backup/sessions/incr-20190218.230007.912/ldap
$ ls
ldap.bak.gz ldap-config.bak.gz

We run the below commands to uncompress the Zimbra LDAP configuration files.

$ gunzip *.gz
$ ls
ldap.bak ldap-config.bak

Then we restore ldap-config.bak using the slapadd command. We run it as Zimbra user.

$ slapadd -q -n 0 -F /opt/zimbra/data/ldap/config -cv -l ldap-config.bak
  added: “cn=config” (00000001)
  added: “cn=module{0},cn=config” (00000001)
  added: “cn=schema,cn=config” (00000001)
  added: “cn={0}core,cn=schema,cn=config” (00000001)
  added: “cn={1}cosine,cn=schema,cn=config” (00000001)
  added: “cn={2}inetorgperson,cn=schema,cn=config” (00000001)
  added: “cn={3}dyngroup,cn=schema,cn=config” (00000001)
  added: “cn={4}zimbra,cn=schema,cn=config” (00000001)
  added: “cn={5}amavisd,cn=schema,cn=config” (00000001)
  added: “cn={6}opendkim,cn=schema,cn=config” (00000001)
  added: “olcDatabase={-1}frontend,cn=config” (00000001)
  added: “olcDatabase={0}config,cn=config” (00000001)
  added: “olcDatabase={1}monitor,cn=config” (00000001)
  added: “olcDatabase={2}mdb,cn=config” (00000001)
  added: “olcOverlay={0}dynlist,olcDatabase={2}mdb,cn=config” (00000001)
  added: “olcOverlay={1}unique,olcDatabase={2}mdb,cn=config” (00000001)
  added: “olcOverlay={2}noopsrch,olcDatabase={2}mdb,cn=config” (00000001)
  ############## 100.00% eta none elapsed none fast!
  Closing DB…

We do the same for ldap.bak.

$ slapadd -q -b “” -F /opt/zimbra/data/ldap/config -cv -l ldap.bak

 

Step 4: Start Zimbra Services

After restoring the database, we start all the Zimbra Services. We start with LDAP service.

$ ldap start
$ ldap status

Once it is successful, we bring up all other Zimbra Services.

# su – zimbra
$ zmcontrol start
Host mail.mydomain.com
  Starting ldap…Done.
  Starting zmconfigd…Done.
  Starting logger…Done.
  Starting convertd…Done.
  Starting mailbox…Done.
  Starting memcached…Done.
  Starting proxy…Done.
  Starting amavis…Done.
  Starting antispam…Done.
  Starting antivirus…Done.
  Starting opendkim…Done.
  Starting snmp…Done.
  Starting spell…Done.
  Starting mta…Done.
  Starting stats…Done.
  Starting service webapp…Done.
  Starting zimbra webapp…Done.
  Starting zimbraAdmin webapp…Done.
  Starting zimlet webapp…Done.
  Starting imapd…Done.

Then we check the status.

$ zmcontrol status
Host mail.mydomain.com
  amavis Running
  antispam Running
  antivirus Running
  convertd Running
  imapd Running
  ldap Running
  logger Running
  mailbox Running
  memcached Running
  mta Running
  opendkim Running
  proxy Running
  service webapp Running
  snmp Running
  spell Running
  stats Running
  zimbra webapp Running
  zimbraAdmin webapp Running
  zimlet webapp Running
  zmconfigd Running

Finally, the customer was able to access Zimbra Admin UI and perform the normal Email administration tasks.

[Need any further assistance with Zimbra related queries? – We are here to help you.]

 

Conclusion

In today’s writeup, we saw how our Support Engineers restores the LDAP database from backup.

PREVENT YOUR SERVER FROM CRASHING!

Never again lose customers to poor server speed! Let us help you.

Our server experts will monitor & maintain your server 24/7 so that it remains lightning fast and secure.

GET STARTED

var google_conversion_label = "owonCMyG5nEQ0aD71QM";

0 Comments

Submit a Comment

Your email address will not be published. Required fields are marked *

Never again lose customers to poor
server speed! Let us help you.

Privacy Preference Center

Necessary

Necessary cookies help make a website usable by enabling basic functions like page navigation and access to secure areas of the website. The website cannot function properly without these cookies.

PHPSESSID - Preserves user session state across page requests.

gdpr[consent_types] - Used to store user consents.

gdpr[allowed_cookies] - Used to store user allowed cookies.

PHPSESSID, gdpr[consent_types], gdpr[allowed_cookies]
PHPSESSID
WHMCSpKDlPzh2chML

Statistics

Statistic cookies help website owners to understand how visitors interact with websites by collecting and reporting information anonymously.

_ga - Preserves user session state across page requests.

_gat - Used by Google Analytics to throttle request rate

_gid - Registers a unique ID that is used to generate statistical data on how you use the website.

smartlookCookie - Used to collect user device and location information of the site visitors to improve the websites User Experience.

_ga, _gat, _gid
_ga, _gat, _gid
smartlookCookie
_clck, _clsk, CLID, ANONCHK, MR, MUID, SM

Marketing

Marketing cookies are used to track visitors across websites. The intention is to display ads that are relevant and engaging for the individual user and thereby more valuable for publishers and third party advertisers.

IDE - Used by Google DoubleClick to register and report the website user's actions after viewing or clicking one of the advertiser's ads with the purpose of measuring the efficacy of an ad and to present targeted ads to the user.

test_cookie - Used to check if the user's browser supports cookies.

1P_JAR - Google cookie. These cookies are used to collect website statistics and track conversion rates.

NID - Registers a unique ID that identifies a returning user's device. The ID is used for serving ads that are most relevant to the user.

DV - Google ad personalisation

_reb2bgeo - The visitor's geographical location

_reb2bloaded - Whether or not the script loaded for the visitor

_reb2bref - The referring URL for the visit

_reb2bsessionID - The visitor's RB2B session ID

_reb2buid - The visitor's RB2B user ID

IDE, test_cookie, 1P_JAR, NID, DV, NID
IDE, test_cookie
1P_JAR, NID, DV
NID
hblid
_reb2bgeo, _reb2bloaded, _reb2bref, _reb2bsessionID, _reb2buid

Security

These are essential site cookies, used by the google reCAPTCHA. These cookies use an unique identifier to verify if a visitor is human or a bot.

SID, APISID, HSID, NID, PREF
SID, APISID, HSID, NID, PREF