mysql-aws-backup 0.1.4 → 0.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/mysql_aws_backup.rb +32 -30
  3. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 88a3f9f004e05a0b7236e04d1c6c8dbb7a42d815
4
- data.tar.gz: 5dfedec3b1bda5f1e5b068085dafb68ef4c6e91d
3
+ metadata.gz: b487daf4e6764901f79c43aea32a00d6d789aa4a
4
+ data.tar.gz: 248e8823c66fbffc2c1e2a9adc242874214c0c0d
5
5
  SHA512:
6
- metadata.gz: d854fad76a7841b8ddc97b7b7bae0f3771f9b558871e7bba9837a9b5fbd764f75f0ac4535dfe478642b06877f80bd9ee27d71f22cbea52be3facf0a80d5a9925
7
- data.tar.gz: 3c04ae956fcfac05c79ee22b741f43816553960ef3a3085fdbab87468650c4edc3f5087ad339fd3b2bd13ecc71ddb2616fafa436ed5808a0fcf2a79ec6f65676
6
+ metadata.gz: d5f0af020807e8357f551e80b3a910d8548022de2939030bcaed3e0f635b9f2b0b3ff78b58f5e294e2937e12837dd185a1a1e6420dc828b64fe79f3faf2245cd
7
+ data.tar.gz: 6a08923194e11252a7c0596768cff55ab4f855f73c25167ac55c6bed449aa1ba8361192c601f1313d63be9a5ac2ed87012ee90dd6502afd3ae42263439f23cf2
@@ -1,26 +1,40 @@
1
1
  require 'aws-sdk'
2
2
 
3
- # Some documentation
4
3
  class MysqlAwsBackup
5
4
 
6
- def perform
7
- t1 = Time.now
5
+ REQUIRED_ENV = ['MYSQL_AWS_BACKUP_HOST',
6
+ 'MYSQL_AWS_BACKUP_MYSQL_USER',
7
+ 'MYSQL_AWS_BACKUP_MYSQL_PASSWORD',
8
+ 'MYSQL_AWS_BACKUP_FILE_PREFIX',
9
+ 'MYSQL_AWS_BACKUP_BUCKET',
10
+ 'MYSQL_AWS_BACKUP_DATABASE',
11
+ 'MYSQL_AWS_BACKUP_AWS_ACCESS_KEY_ID',
12
+ 'MYSQL_AWS_BACKUP_AWS_SECRET_ACCESS_KEY',
13
+ 'MYSQL_AWS_BACKUP_AWS_REGION']
14
+
15
+ def initialize
8
16
  ensure_environment_variables_defined
9
- outfile = generate_outfile
10
- 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}"
11
- system(cmd)
12
- upload_backup_to_s3(outfile)
17
+ @t1 = Time.now
18
+ @outfile = "#{ENV['MYSQL_AWS_BACKUP_FILE_PREFIX']}-#{@t1.to_s.gsub(/\:/, '.').gsub(/ /, '_')}.sql.gz"
19
+ @mysqldump = `which mysqldump`.chomp
20
+ @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}"
21
+ end
22
+
23
+ def perform
24
+ do_mysql_dump
25
+ do_upload_backup_to_s3
26
+ clean
13
27
  t2 = Time.now
14
- puts "#{Time.now} Backup run took #{t2 - t1} seconds."
28
+ puts "#{t2} Created and uploaded #{@outfile} in #{t2 - @t1} seconds."
15
29
  end
16
30
 
17
31
  private
18
32
 
19
- def mysqldump
20
- `which mysqldump`.chomp
33
+ def do_mysql_dump
34
+ system(@cmd)
21
35
  end
22
36
 
23
- def upload_backup_to_s3(outfile)
37
+ def do_upload_backup_to_s3
24
38
  AWS.config(access_key_id: ENV['MYSQL_AWS_BACKUP_AWS_ACCESS_KEY_ID'],
25
39
  secret_access_key: ENV['MYSQL_AWS_BACKUP_AWS_SECRET_ACCESS_KEY'],
26
40
  region: ENV['MYSQL_AWS_BACKUP_AWS_REGION'])
@@ -30,34 +44,22 @@ class MysqlAwsBackup
30
44
  b = s3.buckets[ENV['MYSQL_AWS_BACKUP_BUCKET']]
31
45
  s3.buckets.create(ENV['MYSQL_AWS_BACKUP_BUCKET']) unless b.exists?
32
46
 
33
- basename = File.basename(outfile)
47
+ basename = File.basename(@outfile)
34
48
  o = b.objects[basename]
35
- o.write(:file => outfile)
36
- end
37
-
38
- def generate_outfile
39
- "#{ENV['MYSQL_AWS_BACKUP_FILE_PREFIX']}-#{Time.now.to_i}.sql.gz"
40
- end
41
-
42
- def required_environment_variables
43
- ['MYSQL_AWS_BACKUP_HOST',
44
- 'MYSQL_AWS_BACKUP_MYSQL_USER',
45
- 'MYSQL_AWS_BACKUP_MYSQL_PASSWORD',
46
- 'MYSQL_AWS_BACKUP_FILE_PREFIX',
47
- 'MYSQL_AWS_BACKUP_BUCKET',
48
- 'MYSQL_AWS_BACKUP_DATABASE',
49
- 'MYSQL_AWS_BACKUP_AWS_ACCESS_KEY_ID',
50
- 'MYSQL_AWS_BACKUP_AWS_SECRET_ACCESS_KEY',
51
- 'MYSQL_AWS_BACKUP_AWS_REGION']
49
+ o.write(file: @outfile)
52
50
  end
53
51
 
54
52
  def ensure_environment_variables_defined
55
53
  failures = []
56
- required_environment_variables.each do |required_variable|
54
+ REQUIRED_ENV.each do |required_variable|
57
55
  message = "You must define environment variable '#{required_variable}'."
58
56
  failures << message unless ENV.has_key? required_variable
59
57
  end
60
58
  fail failures.join(' ') unless failures.empty?
61
59
  end
62
60
 
61
+ def clean
62
+ File.delete(@outfile)
63
+ end
64
+
63
65
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mysql-aws-backup
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kevin J. Dickerson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-03 00:00:00.000000000 Z
11
+ date: 2014-11-11 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: A simple way to create and upload mysql backups to AWS.
14
14
  email: kevin.dickerson@loom.technology
@@ -39,7 +39,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
39
39
  version: '0'
40
40
  requirements: []
41
41
  rubyforge_project:
42
- rubygems_version: 2.2.2
42
+ rubygems_version: 2.4.2
43
43
  signing_key:
44
44
  specification_version: 4
45
45
  summary: Simple way to dump a mysql database and upload to AWS.