dev/provisioning/modules/mysql/manifests/backup/xtrabackup.pp
changeset 28 b0b56e0f8c7f
child 146 dc4d1cdc47e0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dev/provisioning/modules/mysql/manifests/backup/xtrabackup.pp	Fri Jan 15 15:35:00 2016 +0100
@@ -0,0 +1,65 @@
+# See README.me for usage.
+class mysql::backup::xtrabackup (
+  $backupuser         = '',
+  $backuppassword     = '',
+  $backupdir          = '',
+  $backupmethod       = 'mysqldump',
+  $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',
+) {
+
+  package{ 'percona-xtrabackup':
+    ensure  => $ensure,
+  }
+
+  cron { 'xtrabackup-weekly':
+    ensure  => $ensure,
+    command => "/usr/local/sbin/xtrabackup.sh ${backupdir}",
+    user    => 'root',
+    hour    => $time[0],
+    minute  => $time[1],
+    weekday => 0,
+    require => Package['percona-xtrabackup'],
+  }
+
+  cron { 'xtrabackup-daily':
+    ensure  => $ensure,
+    command => "/usr/local/sbin/xtrabackup.sh --incremental ${backupdir}",
+    user    => 'root',
+    hour    => $time[0],
+    minute  => $time[1],
+    weekday => 1-6,
+    require => Package['percona-xtrabackup'],
+  }
+
+  file { 'mysqlbackupdir':
+    ensure => 'directory',
+    path   => $backupdir,
+    mode   => $backupdirmode,
+    owner  => $backupdirowner,
+    group  => $backupdirgroup,
+  }
+
+  file { 'xtrabackup.sh':
+    ensure  => $ensure,
+    path    => '/usr/local/sbin/xtrabackup.sh',
+    mode    => '0700',
+    owner   => 'root',
+    group   => $mysql::params::root_group,
+    content => template('mysql/xtrabackup.sh.erb'),
+  }
+}