Class: ServerBackups::MysqlBackup

Inherits:
BackupBase show all
Defined in:
lib/server_backups/mysql_backup.rb

Direct Known Subclasses

MysqlIncrementalBackup

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_nameObject (readonly)

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_databasesObject



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_databasesObject



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_filenameObject



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_commandObject



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_backupObject



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_prefixObject



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