Added mysql::server::backup class to backup local MySQL databases.

This commit is contained in:
Timo Mkinen 2010-03-25 08:54:01 +02:00
parent f6a132fda7
commit 32d0b88da6
2 changed files with 63 additions and 0 deletions

View file

@ -79,6 +79,47 @@ class mysql::server {
}
# Install MySQL daily backup job
#
# === Global variables
#
# $mysql_backup_datadir:
# Directory where MySQL backups are stored. Defaults to /srv/mysql/backup
#
# $mysql_backup_maxage:
# How long to keep MySQL backups. Defaults to 168 hours (7 days).
#
class mysql::server::backup {
include mysql::client
if ! $mysql_backup_datadir {
$mysql_backup_datadir = "/srv/mysql/backup"
}
if ! $mysql_backup_maxage {
$mysql_backup_maxage = "168"
}
file { $mysql_backup_datadir:
ensure => directory,
mode => 0700,
owner => root,
group => root,
}
file { "/etc/cron.daily/mysql-backup":
ensure => present,
content => template("mysql/mysql-backup.cron.erb"),
mode => 0755,
owner => root,
group => root,
require => [ File[$mysql_backup_datadir],
Package["mysql"], ],
}
}
# Install MySQL status reporting.
#
class mysql::server::report {

View file

@ -0,0 +1,22 @@
#!/bin/sh
DESTDIR="<%= mysql_backup_datadir %>"
MAXAGE="<%= mysql_backup_maxage %>"
DATE=`date "+%Y-%m-%d"`
if [ ! -d ${DESTDIR} ]; then
echo "ERR: MySQL backup directory [${DESTDIR}] does not exist" 1>&2
exit 1
fi
umask 077
tmpwatch -m -f ${MAXAGE} ${DESTDIR}
DESTDIR=${DESTDIR}/${DATE}
mkdir -p ${DESTDIR}
for db in `mysql -e 'show databases' -s | egrep -v '^Database$'` ; do
mysqldump --add-drop-table ${db} | gzip > ${DESTDIR}/${db}.${DATE}.gz
done