Project

db2fog

No commit activity in last 3 years
No release in over 3 years
db2fog provides rake tasks for backing up and restoring your DB to cloud storage providers
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
 Dependencies

Development

>= 0
>= 0
~> 2.6
~> 0.3.5

Runtime

< 5.0, >= 3.2.0
~> 1.0
< 5.0, >= 3.2.0
 Project Readme

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',
  :region                => 'region'
}

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 github.com/xaviershay/db2s3

Xavier quotes the following example as inspiration:

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