class ServerBackups::MysqlRestore
Constants
- ALL_DATABASES
- ETC_TIMEZONE
Public Class Methods
all_databases(config_file, working_dir)
click to toggle source
# File lib/server_backups/mysql_restore.rb, line 66 def all_databases(config_file, working_dir) MysqlBackup.new(config_file, working_dir, 'daily', 'mysql').all_databases end
new(config_file, working_dir, restore_point, database)
click to toggle source
Calls superclass method
# File lib/server_backups/mysql_restore.rb, line 9 def initialize(config_file, working_dir, restore_point, database) @database = database super config_file, working_dir, restore_point end
restore(config_file, working_dir, restore_point, database)
click to toggle source
# File lib/server_backups/mysql_restore.rb, line 57 def restore(config_file, working_dir, restore_point, database) return new(config_file, working_dir, restore_point, database).do_restore \ if database != ALL_DATABASES all_databases(config_file, working_dir).each do |db_name| new(config_file, working_dir, restore_point, db_name).do_restore end end
Public Instance Methods
do_restore()
click to toggle source
# File lib/server_backups/mysql_restore.rb, line 35 def do_restore full_backup_file.get response_target: (restore_script_path + '.gz') system "gunzip #{restore_script_path}.gz" incremental_backups.each do |s3object| file = Tempfile.new('foo') begin s3object.get response_target: file file.close system config.mysqlbinlog_bin + ' ' + file.path + \ " --stop-datetime='#{formatted_restore_point_in_system_time_zone}'" \ " --database=#{database} >> " + restore_script_path ensure file.close file.unlink # deletes the temp file end end execute_script restore_script_path end
formatted_restore_point_in_system_time_zone()
click to toggle source
# File lib/server_backups/mysql_restore.rb, line 30 def formatted_restore_point_in_system_time_zone restore_point.in_time_zone(config.system_time_zone) \ .strftime('%Y-%m-%d %H:%M:%S') end
full_backup_file()
click to toggle source
# File lib/server_backups/mysql_restore.rb, line 14 def full_backup_file full_backup_prefix = File.join(config.prefix, 'mysql_backup', database) s3.get_ordered_collection(full_backup_prefix).full_backup_for(restore_point) end
incremental_backups()
click to toggle source
# File lib/server_backups/mysql_restore.rb, line 19 def incremental_backups incr_backup_prefix = File.join(config.prefix, 'mysql_backup') s3.get_ordered_collection(incr_backup_prefix).incremental_backups_for(restore_point) end
restore_script_path()
click to toggle source
# File lib/server_backups/mysql_restore.rb, line 24 def restore_script_path File.join(working_dir, "#{database}.sql") end
Private Instance Methods
cli_options()
click to toggle source
# File lib/server_backups/mysql_restore.rb, line 73 def cli_options cmd = config.password.blank? ? '' : " -p'#{config.password}' " cmd + " -u'#{config.user}' " + database end
execute_script(path)
click to toggle source
# File lib/server_backups/mysql_restore.rb, line 78 def execute_script(path) cmd = "#{config.mysql_bin} --silent --skip-column-names #{cli_options}" logger.debug "Executing raw SQL against #{ database}\n#{cmd}" output = `#{cmd} < #{path}` logger.debug "Returned #{$CHILD_STATUS.inspect}. STDOUT was:\n#{output}" output.split("\n") unless output.blank? end