Создание резервных копий БД в рельсах 4

Существует gem db2fog, но он работает только с Rails 3.
Есть ли какие-либо возможности для создания резервных копий баз данных в Rails 4?

Ответ 1

Взгляните на Backup gem. Он обеспечивает очень хороший набор функций, таких как:

  • Поддержка баз данных: MySQL, MongoDB, PostgreSQL, Redis...
  • Сжатие
  • Шифрование
  • Хранилища: Amazon S3, Local, RSync, Dropbox...
  • Уведомления: электронная почта, Twitter, Hipchat...
  • Дружественный DSL

Плагин полностью независим от Rails, поэтому вы можете использовать его для других приложений.

Пример резервной копии (MySQL, Amazon, Gzip и уведомления по электронной почте):

Model.new(:my_backup, 'My backup description') do
  database MySQL do |db|
    db.name     = "database_name"
    db.username = "username"
    db.password = "pass"
    db.host     = "localhost"
    db.port     = 3306
  end

  store_with S3 do |s3|
    s3.access_key_id     = "access_key_id"
    s3.secret_access_key = "secret_access_key"
    s3.bucket            = "bucket_name"
    s3.path              = "path/to/your/backups"
  end

  compress_with Gzip

  notify_by Mail do |mail|
    mail.on_success     = true
    mail.on_warning     = true
    mail.on_failure     = true

    mail.from           = "[email protected]"
    mail.to             = "[email protected]"
    mail.address        = "smtp.gmail.com"
    mail.port           = 587
    mail.domain         = "your.host.name"
    mail.user_name      = "[email protected]"
    mail.password       = "pass"
    mail.authentication = "plain"
  end
end

Выполните резервное копирование:

$ backup perform --trigger my_backup

Запланируйте свои резервные копии с помощью задания cron (например, с помощью whenever gem), и вы достигнете простого и эффективного решения:

every 1.day, :at => '1:00 am' do
  command "backup perform --trigger my_backup"
end

Надеюсь, это поможет вам.

Ответ 2

Я знаю, что ваша проблема уже решена, но я хотел добавить инструмент Dumper.io в этот поток. Я просто люблю простоту этого инструмента.