module-puppetlabs-mysql/manifests/backup/mysqlbackup.pp
Liao Penghui 3694ae2a80 (MODULES-2787) Fixes for future parser
The weekday attribute of cron resource will be parse to negetive integer
with future parser. This patch is aim to ensure that the value types of
cron resouce are valid with future parser.
2015-11-05 00:11:15 +08:00

105 lines
3 KiB
Puppet

# See README.me for usage.
class mysql::backup::mysqlbackup (
$backupuser = '',
$backuppassword = '',
$backupdir = '',
$backupdirmode = '0700',
$backupdirowner = 'root',
$backupdirgroup = $mysql::params::root_group,
$backupcompress = true,
$backuprotate = 30,
$ignore_events = true,
$delete_before_dump = false,
$backupdatabases = [],
$file_per_database = false,
$include_triggers = true,
$include_routines = false,
$ensure = 'present',
$time = ['23', '5'],
$prescript = false,
$postscript = false,
$execpath = '/usr/bin:/usr/sbin:/bin:/sbin',
) {
mysql_user { "${backupuser}@localhost":
ensure => $ensure,
password_hash => mysql_password($backuppassword),
require => Class['mysql::server::root_password'],
}
package { 'meb':
ensure => $ensure,
}
# http://dev.mysql.com/doc/mysql-enterprise-backup/3.11/en/mysqlbackup.privileges.html
mysql_grant { "${backupuser}@localhost/*.*":
ensure => $ensure,
user => "${backupuser}@localhost",
table => '*.*',
privileges => [ 'RELOAD', 'SUPER', 'REPLICATION CLIENT' ],
require => Mysql_user["${backupuser}@localhost"],
}
mysql_grant { "${backupuser}@localhost/mysql.backup_progress":
ensure => $ensure,
user => "${backupuser}@localhost",
table => 'mysql.backup_progress',
privileges => [ 'CREATE', 'INSERT', 'DROP', 'UPDATE' ],
require => Mysql_user["${backupuser}@localhost"],
}
mysql_grant { "${backupuser}@localhost/mysql.backup_history":
ensure => $ensure,
user => "${backupuser}@localhost",
table => 'mysql.backup_history',
privileges => [ 'CREATE', 'INSERT', 'SELECT', 'DROP', 'UPDATE' ],
require => Mysql_user["${backupuser}@localhost"],
}
cron { 'mysqlbackup-weekly':
ensure => $ensure,
command => 'mysqlbackup backup',
user => 'root',
hour => $time[0],
minute => $time[1],
weekday => '0',
require => Package['meb'],
}
cron { 'mysqlbackup-daily':
ensure => $ensure,
command => 'mysqlbackup --incremental backup',
user => 'root',
hour => $time[0],
minute => $time[1],
weekday => '1-6',
require => Package['meb'],
}
$default_options = {
'mysqlbackup' => {
'backup-dir' => $backupdir,
'with-timestamp' => true,
'incremental_base' => 'history:last_backup',
'incremental_backup_dir' => $backupdir,
'user' => $backupuser,
'password' => $backuppassword,
}
}
$options = mysql_deepmerge($default_options, $mysql::server::override_options)
file { 'mysqlbackup-config-file':
path => '/etc/mysql/conf.d/meb.cnf',
content => template('mysql/meb.cnf.erb'),
mode => '0600',
}
file { 'mysqlbackupdir':
ensure => 'directory',
path => $backupdir,
mode => $backupdirmode,
owner => $backupdirowner,
group => $backupdirgroup,
}
}