Class: ServerBackups::MysqlBackup
Constant Summary
collapse
- SYSTEM_DATABASES =
%w[sys information_schema mysql performance_schema].freeze
Constants inherited
from BackupBase
BackupBase::BACKUP_TYPES, BackupBase::TIMESTAMP_FORMAT
Instance Attribute Summary collapse
Attributes inherited from BackupBase
#backup_type, #config, #logger, #s3, #working_directory
Class Method Summary
collapse
Instance Method Summary
collapse
Methods inherited from BackupBase
#backup_path, #backup_s3_key, #incremental?, #load_resources, #remove_old_backups, #store_backup, #take_backup, #timestamp, #title
Constructor Details
#initialize(config_file, working_directory, backup_type, database_name) ⇒ MysqlBackup
Returns a new instance of MysqlBackup.
9
10
11
12
|
# File 'lib/server_backups/mysql_backup.rb', line 9
def initialize(config_file, working_directory, backup_type, database_name)
@database_name = database_name
super(config_file, working_directory, backup_type)
end
|
Instance Attribute Details
#database_name ⇒ Object
Returns the value of attribute database_name.
5
6
7
|
# File 'lib/server_backups/mysql_backup.rb', line 5
def database_name
@database_name
end
|
Class Method Details
.daily(config_file, working_directory, database_name) ⇒ Object
33
34
35
|
# File 'lib/server_backups/mysql_backup.rb', line 33
def daily(config_file, working_directory, database_name)
new(config_file, working_directory, :daily, database_name)
end
|
.incremental(config_file, working_directory, database_name) ⇒ Object
45
46
47
|
# File 'lib/server_backups/mysql_backup.rb', line 45
def incremental(config_file, working_directory, database_name)
MysqlIncrementalBackup.new(config_file, working_directory, database_name)
end
|
.monthly(config_file, working_directory, database_name) ⇒ Object
41
42
43
|
# File 'lib/server_backups/mysql_backup.rb', line 41
def monthly(config_file, working_directory, database_name)
new(config_file, working_directory, :monthly, database_name)
end
|
.weekly(config_file, working_directory, database_name) ⇒ Object
37
38
39
|
# File 'lib/server_backups/mysql_backup.rb', line 37
def weekly(config_file, working_directory, database_name)
new(config_file, working_directory, :weekly, database_name)
end
|
Instance Method Details
#all_databases ⇒ Object
65
66
67
68
69
|
# File 'lib/server_backups/mysql_backup.rb', line 65
def all_databases
execute_sql('show databases;').reject do |db_name|
db_name.in?(SYSTEM_DATABASES)
end
end
|
#backup_all_databases ⇒ Object
22
23
24
25
26
27
28
29
30
|
# File 'lib/server_backups/mysql_backup.rb', line 22
def backup_all_databases
@database_name = 'mysql'
all_databases.each do |database|
self.class.send(backup_type,
config.config_file,
working_directory,
database).do_backup
end
end
|
#backup_filename ⇒ Object
61
62
63
|
# File 'lib/server_backups/mysql_backup.rb', line 61
def backup_filename
"mysql_backup.#{backup_type}.#{timestamp}.sql.gz"
end
|
#create_archive_command ⇒ Object
50
51
52
53
54
|
# File 'lib/server_backups/mysql_backup.rb', line 50
def create_archive_command
cmd = config.mysqldump_bin + ' --quick --single-transaction --create-options '
cmd += ' --flush-logs --master-data=2 --delete-master-logs ' if binary_logging?
cmd + cli_options + ' | gzip > ' + backup_path
end
|
#do_backup ⇒ Object
14
15
16
17
18
19
20
|
# File 'lib/server_backups/mysql_backup.rb', line 14
def do_backup
if database_name == 'all'
backup_all_databases
else
super
end
end
|
#s3_prefix ⇒ Object
56
57
58
59
|
# File 'lib/server_backups/mysql_backup.rb', line 56
def s3_prefix
File.join(config.prefix, self.class.name.demodulize.underscore,
database_name, backup_type.to_s, '/')
end
|