Added mysql::server::backup class to backup local MySQL databases.
This commit is contained in:
parent
f6a132fda7
commit
32d0b88da6
2 changed files with 63 additions and 0 deletions
|
@ -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.
|
# Install MySQL status reporting.
|
||||||
#
|
#
|
||||||
class mysql::server::report {
|
class mysql::server::report {
|
||||||
|
|
22
mysql/templates/mysql-backup.cron.erb
Normal file
22
mysql/templates/mysql-backup.cron.erb
Normal 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
|
Loading…
Add table
Reference in a new issue