mysql-aws-backup 0.1.0

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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: e6e874851d553024e0e8db31b782b33afb01e903
4
+ data.tar.gz: 13e9ef755368cfc520dac40f31f7dac00b8a4bde
5
+ SHA512:
6
+ metadata.gz: 2ee31ff1cfe6cf28cdc1cd754fb7ccd91c1d871989ef8182f36fd646ac534fcc28e82a2ea3c8e59a53a58a5f7daffce91d68dbc2181e7446dab5eefed5d2ee88
7
+ data.tar.gz: db0249274d2be18b194abfbc1b9c0577ce1e5ac62982cb5dc3eb5f18e747e625ccfd6b0cb72cfc73fef186592d1dbbe8360e85038eb832936877f84d822ed86e
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'mysql_aws_backup'
4
+
5
+ b = MysqlAwsBackup.new
6
+ b.perform
@@ -0,0 +1,62 @@
1
+ require 'aws-sdk'
2
+
3
+ # Some documentation
4
+ class MysqlAwsBackup
5
+
6
+ def perform
7
+ t = Time.now
8
+ ensure_environment_variables_defined
9
+ outfile = generate_outfile
10
+ cmd = "#{mysqldump} -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)
13
+ t2 = Time.now
14
+ puts "#{Time.now} Backup run took #{(t2 - t1} seconds."
15
+ end
16
+
17
+ private
18
+
19
+ def mysqldump
20
+ `which mysqldump`.chomp
21
+ end
22
+
23
+ def upload_backup_to_s3(outfile)
24
+ AWS.config(access_key_id: ENV['MYSQL_AWS_BACKUP_AWS_ACCESS_KEY_ID'],
25
+ secret_access_key: ENV['MYSQL_AWS_BACKUP_AWS_SECRET_ACCESS_KEY'],
26
+ region: ENV['MYSQL_AWS_BACKUP_AWS_REGION'])
27
+
28
+ s3 = AWS::S3.new
29
+
30
+ b = s3.buckets[ENV['MYSQL_AWS_BACKUP_BUCKET']]
31
+ s3.buckets.create(ENV['MYSQL_AWS_BACKUP_BUCKET']) unless b.exists?
32
+
33
+ basename = File.basename(outfile)
34
+ 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_AWS_ACCESS_KEY_ID',
49
+ 'MYSQL_AWS_BACKUP_AWS_SECRET_ACCESS_KEY',
50
+ 'MYSQL_AWS_BACKUP_AWS_REGION']
51
+ end
52
+
53
+ def ensure_environment_variables_defined
54
+ failures = []
55
+ required_environment_variables.each do |required_variable|
56
+ message = "You must define environment variable '#{required_variable}'."
57
+ failures << message unless ENV.has_key? required_variable
58
+ end
59
+ fail failures.join(' ') unless failures.empty?
60
+ end
61
+
62
+ end
metadata ADDED
@@ -0,0 +1,46 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mysql-aws-backup
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Kevin J. Dickerson
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-11-03 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: A simple way to create and upload mysql backups to AWS.
14
+ email: kevin.dickerson@loom.technology
15
+ executables:
16
+ - mysql-aws-backup
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - bin/mysql-aws-backup
21
+ - lib/mysql_aws_backup.rb
22
+ homepage: http://rubygems.org/gems/mysql-aws-backup
23
+ licenses:
24
+ - Apache 2.0
25
+ metadata: {}
26
+ post_install_message:
27
+ rdoc_options: []
28
+ require_paths:
29
+ - lib
30
+ required_ruby_version: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ required_rubygems_version: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ requirements: []
41
+ rubyforge_project:
42
+ rubygems_version: 2.2.2
43
+ signing_key:
44
+ specification_version: 4
45
+ summary: Simple way to dump a mysql database and upload to AWS.
46
+ test_files: []