Project

ray-db2fog

0.0
No commit activity in last 3 years
No release in over 3 years
ray-db2fog was forked from https://github.com/yob/db2fog.git.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

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

Runtime

~> 1.0
~> 3.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'
}

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: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