-
Notifications
You must be signed in to change notification settings - Fork 794
/
Copy pathbackup.pp
159 lines (158 loc) · 9.47 KB
/
backup.pp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
# @summary
# Create and manage a MySQL backup.
#
# @example Create a basic MySQL backup:
# class { 'mysql::server':
# root_password => 'password'
# }
# class { 'mysql::server::backup':
# backupuser => 'myuser',
# backuppassword => 'mypassword',
# backupdir => '/tmp/backups',
# }
#
# @example Create a basic MySQL backup using mariabackup:
# class { 'mysql::server':
# root_password => 'password'
# }
# class { 'mysql::server::backup':
# backupmethod => 'mariabackup',
# backupmethod_package => 'mariadb-backup'
# provider => 'xtrabackup',
# backupdir => '/tmp/backups',
# }
#
# @param backupuser
# MySQL user to create with backup administrator privileges.
# @param backuppassword
# Password to create for `backupuser`.
# @param backupdir
# Directory to store backup.
# @param backupdirmode
# Permissions applied to the backup directory. This parameter is passed directly to the file resource.
# @param backupdirowner
# Owner for the backup directory. This parameter is passed directly to the file resource.
# @param backupdirgroup
# Group owner for the backup directory. This parameter is passed directly to the file resource.
# @param backupcompress
# Whether or not to compress the backup (when using the mysqldump or xtrabackup provider)
# @param backupmethod
# The execution binary for backing up. ex. mysqldump, xtrabackup, mariabackup
# @param backup_success_file_path
# Specify a path where upon successfull backup a file should be created for checking purposes.
# @param backuprotate
# Backup rotation interval in 24 hour periods.
# @param ignore_events
# Ignore the mysql.event table.
# @param delete_before_dump
# Whether to delete old .sql files before backing up.
# Setting to true deletes old files before backing up, while setting to false deletes them after backup.
# @param backupdatabases
# Databases to backup (required if using xtrabackup provider). By default `[]` will back up all databases.
# @param file_per_database
# Use file per database mode creating one file per database backup.
# @param include_routines
# Dump stored routines (procedures and functions) from dumped databases when doing a `file_per_database` backup.
# @param include_triggers
# Dump triggers for each dumped table when doing a `file_per_database` backup.
# @param incremental_backups
# A flag to activate/deactivate incremental backups. Currently only supported by the xtrabackup provider.
# @param ensure
# @param time
# An array of two elements to set the backup time. Allows ['23', '5'] (i.e., 23:05) or ['3', '45'] (i.e., 03:45) for HH:MM times.
# @param prescript
# A script that is executed before the backup begins.
# @param postscript
# A script that is executed when the backup is finished. This could be used to sync the backup to a central store.
# This script can be either a single line that is directly executed or a number of lines supplied as an array.
# It could also be one or more externally managed (executable) files.
# @param execpath
# Allows you to set a custom PATH should your MySQL installation be non-standard places. Defaults to `/usr/bin:/usr/sbin:/bin:/sbin`.
# @param provider
# Sets the server backup implementation. Valid values are: xtrabackup, mysqldump, mysqlbackup
# @param maxallowedpacket
# Defines the maximum SQL statement size for the backup dump script. The default value is 1MB, as this is the default MySQL Server value.
# @param optional_args
# Specifies an array of optional arguments which should be passed through to the backup tool.
# (Supported by the xtrabackup and mysqldump providers.)
# @param install_cron
# Manage installation of cron package
# @param compression_command
# Configure the command used to compress the backup (when using the mysqldump provider). Make sure the command exists
# on the target system. Packages for it are NOT automatically installed.
# @param compression_extension
# Configure the file extension for the compressed backup (when using the mysqldump provider)
# @param backupmethod_package
# The package which provides the binary specified by the backupmethod parameter.
# @param excludedatabases
# Give a list of excluded databases when using file_per_database, e.g.: [ 'information_schema', 'performance_schema' ]
# Only used for the mysqldump and xtrabackup providers
class mysql::server::backup (
Optional[String[1]] $backupuser = undef,
Optional[Variant[String, Sensitive[String]]] $backuppassword = undef,
Optional[String[1]] $backupdir = undef,
String[1] $backupdirmode = '0700',
String[1] $backupdirowner = 'root',
String[1] $backupdirgroup = $mysql::params::root_group,
Boolean $backupcompress = true,
Variant[String[1], Integer] $backuprotate = 30,
Optional[String[1]] $backupmethod = undef,
String[1] $backup_success_file_path = '/tmp/mysqlbackup_success',
Boolean $ignore_events = true,
Boolean $delete_before_dump = false,
Array[String[1]] $backupdatabases = [],
Boolean $file_per_database = false,
Boolean $include_routines = false,
Boolean $include_triggers = false,
Variant[Enum['present','absent'], Pattern[/(\d+)[\.](\d+)[\.](\d+)/]] $ensure = 'present',
Variant[Array[String[1]], Array[Integer]] $time = ['23', '5'],
Variant[Boolean, String[1], Array[String[1]]] $prescript = false,
Variant[Boolean, String[1], Array[String[1]]] $postscript = false,
String[1] $execpath = '/usr/bin:/usr/sbin:/bin:/sbin',
Enum['xtrabackup', 'mysqldump', 'mysqlbackup'] $provider = 'mysqldump',
String[1] $maxallowedpacket = '1M',
Array[String[1]] $optional_args = [],
Boolean $incremental_backups = true,
Boolean $install_cron = true,
Optional[String[1]] $compression_command = undef,
Optional[String[1]] $compression_extension = undef,
String[1] $backupmethod_package = $mysql::params::xtrabackup_package_name,
Array[String] $excludedatabases = [],
) inherits mysql::params {
if $prescript and $provider =~ /(mysqldump|mysqlbackup)/ {
warning("The 'prescript' option is not currently implemented for the ${provider} backup provider.")
}
create_resources('class', {
"mysql::backup::${provider}" => {
'backupuser' => $backupuser,
'backuppassword' => $backuppassword,
'backupdir' => $backupdir,
'backupdirmode' => $backupdirmode,
'backupdirowner' => $backupdirowner,
'backupdirgroup' => $backupdirgroup,
'backupcompress' => $backupcompress,
'backuprotate' => $backuprotate,
'backupmethod' => $backupmethod,
'backup_success_file_path' => $backup_success_file_path,
'ignore_events' => $ignore_events,
'delete_before_dump' => $delete_before_dump,
'backupdatabases' => $backupdatabases,
'file_per_database' => $file_per_database,
'include_routines' => $include_routines,
'include_triggers' => $include_triggers,
'ensure' => $ensure,
'time' => $time,
'prescript' => $prescript,
'postscript' => $postscript,
'execpath' => $execpath,
'maxallowedpacket' => $maxallowedpacket,
'optional_args' => $optional_args,
'incremental_backups' => $incremental_backups,
'install_cron' => $install_cron,
'compression_command' => $compression_command,
'compression_extension' => $compression_extension,
'backupmethod_package' => $backupmethod_package,
'excludedatabases' => $excludedatabases,
}
})
}