class MysqlAwsBackup
Constants
- REQUIRED_ENV
Public Class Methods
new()
click to toggle source
# File lib/mysql_aws_backup.rb, line 15 def initialize ensure_environment_variables_defined @t1 = Time.now @outfile = "#{ENV['MYSQL_AWS_BACKUP_FILE_PREFIX']}-#{@t1.to_s.gsub(/\:/, '.').gsub(/ /, '_')}.sql.gz" @mysqldump = `which mysqldump`.chomp @cmd = "#{@mysqldump} --add-drop-database --databases #{ENV['MYSQL_AWS_BACKUP_DATABASE']} -h #{ENV['MYSQL_AWS_BACKUP_HOST']} -u #{ENV['MYSQL_AWS_BACKUP_MYSQL_USER']} -p#{ENV['MYSQL_AWS_BACKUP_MYSQL_PASSWORD']} | gzip > #{@outfile}" end
Public Instance Methods
perform()
click to toggle source
# File lib/mysql_aws_backup.rb, line 23 def perform do_mysql_dump do_upload_backup_to_s3 clean t2 = Time.now puts "#{t2} Created and uploaded #{@outfile} in #{t2 - @t1} seconds." end
Private Instance Methods
clean()
click to toggle source
# File lib/mysql_aws_backup.rb, line 61 def clean File.delete(@outfile) end
do_mysql_dump()
click to toggle source
# File lib/mysql_aws_backup.rb, line 33 def do_mysql_dump system(@cmd) end
do_upload_backup_to_s3()
click to toggle source
# File lib/mysql_aws_backup.rb, line 37 def do_upload_backup_to_s3 AWS.config(access_key_id: ENV['MYSQL_AWS_BACKUP_AWS_ACCESS_KEY_ID'], secret_access_key: ENV['MYSQL_AWS_BACKUP_AWS_SECRET_ACCESS_KEY'], region: ENV['MYSQL_AWS_BACKUP_AWS_REGION']) s3 = AWS::S3.new b = s3.buckets[ENV['MYSQL_AWS_BACKUP_BUCKET']] s3.buckets.create(ENV['MYSQL_AWS_BACKUP_BUCKET']) unless b.exists? basename = File.basename(@outfile) o = b.objects[basename] o.write(file: @outfile) end
ensure_environment_variables_defined()
click to toggle source
# File lib/mysql_aws_backup.rb, line 52 def ensure_environment_variables_defined failures = [] REQUIRED_ENV.each do |required_variable| message = "You must define environment variable '#{required_variable}'." failures << message unless ENV.has_key? required_variable end fail failures.join(' ') unless failures.empty? end