IRedMail/FAQ/Backup

From iRedMail

(Difference between revisions)
Jump to: navigation, search
(How to restore LDIF file)
Line 152: Line 152:
== How to restore LDIF file ==
== How to restore LDIF file ==
 +
Command "slapcat" will dump whole LDAP tree, so you can restore the whole tree with command "ldapadd". If you want to restore part of LDAP tree, please split related data from LDIF file manually.
 +
Below example shows how to restore the whole LDAP tree.
 +
 +
* Stop OpenLDAP server:
 +
{{cmd|<pre>
 +
# /etc/init.d/ldap stop
 +
</pre>}}
 +
 +
* Remove whole data in OpenLDAP data directory defined in LDAP config file "slapd.conf". For example:
 +
{{cfg|/etc/openldap/slapd.conf|<pre>
 +
database    bdb
 +
suffix      dc=iredmail,dc=org
 +
directory  /var/lib/ldap/iredmail.org
 +
 +
rootdn      cn=Manager,dc=iredmail,dc=org
 +
rootpw      {SSHA}x3u+xafd0npLHGuLEsIUXgGqbClzjg9x
 +
</pre>}}
 +
 +
So you should remove all files in directory '''"/var/lib/ldap/iredmail.org"'''. But don't remove this directory itself.
 +
 +
* Start OpenLDAP server:
 +
{{cmd|<pre>
 +
# /etc/init.d/ldap start
 +
</pre>}}
 +
 +
* Restore backup LDIF file with command '''"ldapadd"'''. Note:
 +
** '''-D''': bind as specified user. Here we bind as root dn, which is defined in slapd.conf.
 +
** '''-W''': bind password. It's defined in slapd.conf setting '''rootpw'''.
 +
** '''-f''': the LDIF file which created by backup script.
 +
{{cmd|<pre>
 +
# ldapadd -x -D 'cn=Manager,dc=iredmail,dc=org' -W -f /path/to/backup/backup.ldif
 +
</pre>}}
 +
 +
Depends on your data size, it might take a long time to restore whole LDAP tree, please be patient.
[[Category: iRedMail/FAQ]]
[[Category: iRedMail/FAQ]]
[[Category: FAQ]]
[[Category: FAQ]]

Revision as of 04:40, 13 May 2011

Contents


Backup MySQL Databases

Backup with shell script

There's a shell script available for backing up MySQL databases: http://iredmail.googlecode.com/hg/iRedMail/tools/backup_mysql.sh

Please read header of this file carefully before you execute it:

# Purpose:  Backup specified mysql databases with command 'mysqldump'.

###########################
# REQUIREMENTS
###########################
#
#   * Required commands:
#       + mysqldump
#       + du
#       + bzip2 or gzip     # If bzip2 is not available, change 'CMD_COMPRESS'
#                           # to use 'gzip'.
#

###########################
# USAGE
###########################
#
#   * It stores all backup copies in directory '/backup' by default, you can
#     change it in variable $BACKUP_ROOTDIR below.
#
#   * Set correct values for below variables:
#
#       BACKUP_ROOTDIR
#       MYSQL_USER
#       MYSQL_PASSWD
#       DATABASES
#       DB_CHARACTER_SET
#       COMPRESS
#       DELETE_PLAIN_SQL_FILE
#
#   * Add crontab job for root user (or whatever user you want):
#
#       # crontab -e -u root
#       1   4   *   *   *   bash /path/to/backup_mysql.sh
#   
#   * Make sure 'crond' service is running, and will start automatically when
#     system startup:
#
#       # ---- On RHEL/CentOS ----
#       # chkconfig --level 345 crond on
#       # /etc/init.d/crond status
#
#       # ---- On Debian/Ubuntu ----
#       # update-rc.d cron defaults
#       # /etc/init.d/cron status
#

###########################
# DIRECTORY STRUCTURE
###########################
#
#   $BACKUP_ROOTDIR             # Default is /backup
#       |- mysql/               # Used to store all backed up databases.
#           |- YEAR.MONTH/
#               |- YEAR.MONTH.DAY/
#                   |- DB.YEAR.MONTH.DAY.MIN.HOUR.SECOND.sql
#                               # Backup copy, plain SQL file.
#                               # Note: it will be removed immediately after
#                               # it was compressed with success and 
#                               # DELETE_PLAIN_SQL_FILE='YES'
#
#                   |- DB.YEAR.MONTH.DAY.HOUR.MINUTE.SECOND.sql.bz2
#                               # Backup copy, compressed SQL file.
#
#       |- logs/
#           |- YEAR.MONTH/
#               |- mysql-YEAR.MONTH.DAY.MIN.HOUR.SECOND.log     # Log file
#

Backup OpenLDAP Data

Backup with shell script

There's a shell script available for backing up OpenLDAP data: http://iredmail.googlecode.com/hg/iRedMail/tools/backup_openldap.sh

Please read header of this file carefully before you execute it:

# Purpose:  Dump whole LDAP tree with command 'slapcat'.

###########################
# REQUIREMENTS
###########################
#
#   * Required commands:
#       + slapcat
#       + du
#       + bzip2 or gzip     # If bzip2 is not available, change 'CMD_COMPRESS'
#                           # to use 'gzip'.
#

###########################
# USAGE
###########################
#
#   * It stores all backup copies in directory '/backup' by default, you can
#     change it in variable $BACKUP_ROOTDIR below.
#
#   * Set correct values for below variables:
#
#       BACKUP_ROOTDIR
#       COMPRESS
#       DELETE_PLAIN_SQL_FILE
#
#   * Add crontab job for root user (or whatever user you want):
#
#       # crontab -e -u root
#       1   4   *   *   *   bash /path/to/backup_openldap.sh
#   
#   * Make sure 'crond' service is running, and will start automatically when
#     system startup:
#
#       # ---- On RHEL/CentOS ----
#       # chkconfig --level 345 crond on
#       # /etc/init.d/crond status
#
#       # ---- On Debian/Ubuntu ----
#       # update-rc.d cron defaults
#       # /etc/init.d/cron status
#

###########################
# DIRECTORY STRUCTURE
###########################
#
#   $BACKUP_ROOTDIR             # Default is /backup
#       |- ldap/                # Used to store all backed up copies.
#           |- YEAR.MONTH/
#               |- YEAR.MONTH.DAY/
#                   |- YEAR.MONTH.DAY.MIN.HOUR.SECOND.ldif
#                               # Backup copy, plain LDIF file.
#                               # Note: it will be removed immediately after
#                               # it was compressed with success and 
#                               # DELETE_PLAIN_SQL_FILE='YES'
#
#                   |- YEAR.MONTH.DAY.HOUR.MINUTE.SECOND.ldif.bz2
#                               # Backup copy, compressed LDIF file.
#
#       |- logs/
#           |- YEAR.MONTH/
#               |- ldap-YEAR.MONTH.DAY.MIN.HOUR.SECOND.log     # Log file
#

How to restore LDIF file

Command "slapcat" will dump whole LDAP tree, so you can restore the whole tree with command "ldapadd". If you want to restore part of LDAP tree, please split related data from LDIF file manually.

Below example shows how to restore the whole LDAP tree.

  • Stop OpenLDAP server:
Terminal:
# /etc/init.d/ldap stop
  • Remove whole data in OpenLDAP data directory defined in LDAP config file "slapd.conf". For example:
File: /etc/openldap/slapd.conf
database    bdb
suffix      dc=iredmail,dc=org
directory   /var/lib/ldap/iredmail.org

rootdn      cn=Manager,dc=iredmail,dc=org
rootpw      {SSHA}x3u+xafd0npLHGuLEsIUXgGqbClzjg9x

So you should remove all files in directory "/var/lib/ldap/iredmail.org". But don't remove this directory itself.

  • Start OpenLDAP server:
Terminal:
# /etc/init.d/ldap start
  • Restore backup LDIF file with command "ldapadd". Note:
    • -D: bind as specified user. Here we bind as root dn, which is defined in slapd.conf.
    • -W: bind password. It's defined in slapd.conf setting rootpw.
    • -f: the LDIF file which created by backup script.
Terminal:
# ldapadd -x -D 'cn=Manager,dc=iredmail,dc=org' -W -f /path/to/backup/backup.ldif

Depends on your data size, it might take a long time to restore whole LDAP tree, please be patient.

Personal tools