Database Backups
From UGCS
Contents |
[edit] Database Backups
You typically cannot backup databases using traditional backup tools because most databases leave files on disk in a somewhat inconsistent state. Instead, you must somehow pause the database server, take a snapshot of its filesystem contents, and then restart the server. This snapshot can then be backed up with traditional backup utilities, like Bacula
On UGCS, we put backups in /var/local/<service>-backups. Tarballs are named according to when they were created, and are usually kept for a week.
[edit] AFS
AFS databases are kept in /var/lib/openafs/db on the db servers (vlserver, ptserver, buserver). You need to shutdown the services with "bos shutdown server service", tar up the contents of /var/lib/openafs/db, and then restart the services.
On UGCS, there is a cron script on athena that does this daily and keeps the backups for 14 days.
[edit] Mysql
Unfortunately, you need to pay for online backup tools for mysql. Instead of that, you can use the following procedure:
- Run the SQL command "flush tables with read lock"
- Create an LVM snapshot of the filesystem mysql is on
- Unlock the tables
- Tar up /var/lib/mysql
Since taking an lvm snapshot requires basically no time, this results in little downtime. If you can't make a snapshot for some reason, you need to create the tarball as step 2, which may take a while if you have a large database.
On UGCS, poseidon has a script that does this (without LVM backups since we don't have any free PV space). Backups are run daily and kept for 7 days.
[edit] Postgresql
Postgres has nice online backups. See http://www.postgresql.org/docs/8.1/static/backup-online.html for details. On poseidon, I have WAL archiving enabled, and the archive_command copies the WAL logs to /var/local/postgres-backups.
[edit] Ldap
OpenLDAP uses BerkelyDB to store stuff on disk. You can dump the database with "slapcat > file". This potentially doesn't scale very well, but we don't have problems with it on our installation.
On UGCS, hera backs up the ldap database daily to /mnt/db/ldap-backups (with slapcat) and keeps them for 7 days.
[edit] Kerberos
Kerberos databases are usually dumped to a data transfer format for propagation every hour or so. All you have to do is copy that file once a day (or as often as you'd like) to another location for backups.
On UGCS, zeus copies the slave_transfer file daily to /var/local/krb5kdc-backups and keeps copies for 7 days.

