db2fog icon indicating copy to clipboard operation
db2fog copied to clipboard

store your rails database backups in the cloud

= NOT SUPPORTED

This gem is not supported anymore. You can find last version of this gem in https://github.com/itbeaver/db2fog

= DB2Fog

A rails plugin to backup Mysql or PostgreSQL to a cloud storage provider. You're looking at a monthly spend of four cents. So pony up you cheap bastard, and store your backups offsite.

A grandfather style system is used to decide what backups to keep copies of:

  • all backups from the past 24 hours
  • one backup per day for the past week
  • one backup per week forever

Depending on your tolerance for data loss you should be running a backup at least once a day, probably more.

== Installation

Add the following to your project Gemfile

gem "db2fog"

== Configuration

Add the following to config/initializers/db2fog.rb

In general, you can use any configuration options supported by Fog::Storage.new, plus the :directory option. If fog adds support for extra providers they should work with just a config change to Db2Fog.

=== Amazon S3

DB2Fog.config = { :aws_access_key_id => 'yourkey', :aws_secret_access_key => 'yoursecretkey', :directory => 'bucket-name', :provider => 'AWS' }

=== Rackspace Cloudfiles

DB2Fog.config = { :rackspace_username => 'username', :rackspace_api_key => 'api key', :directory => 'bucket-name', :provider => 'Rackspace' }

=== Local Storage

DB2Fog.config = { :directory => 'bucket-name', :local_root => Rails.root.to_s + '/db/backups', :provider => 'Local' }

== Passing options to the database driver

Database adaptors may support further configuration via the :database_options hash.

DB2Fog.config = { :directory => 'bucket-name', :local_root => Rails.root.to_s + '/db/backups', :provider => 'Local', :database_options => { :pg_version => 8 } }

Supported database options:

pg_version 8 or 9 The major version of PostgreSQL installed on the server. Defaults to 9.

== Usage

Add to your crontab or whatever

rake db2fog:backup:full

Handy tasks

rake db2fog:restore # You should be testing this regularly rake db2fog:clean # Clean up old backups - cron this

=== Alternative

If you want to trigger backups from ruby (say, from a delayed job) you can do this:

DB2Fog.new.backup
DB2Fog.new.clean

== Compatibility

This is pure so ruby should run on most ruby VMs. I develop on MRI 1.9.2.

This will only work with rails 3. Supporting earlier versions is more complication than I feel like handling at the moment.

== Development

Specs are a little weak and mysql based. This code is bit hackish but is being used by quite a few people.

== Kudos

This is a fork of Xavier Shay's db2s3 gem. It worked perfectly, but only supported Amazon S3 within US-east. By switching the dependency to using fog this now supports all S3 regions and multiple storage providers

Xavier's original gem is available at https://github.com/xaviershay/db2s3

Xavier quotes the following example as inspiration:

http://github.com/pauldowman/blog_code_examples/tree/master/mysql_s3_backup