heroku-mongo-backup — backup mongodb on Heroku and push it to S3 or FTP storage
heroku-mongo-backup does:
- Backup mongodb collections to one file;
- Compress backup file with gzip;
- Push backup to the specified S3 bucket or FTP server;
Why not mongodump command?
mongodump command is not available on Heroku side. If you don't want to setup third party backup service for every project heroku-mongo-backup may be helpful.
Configuration
Add gem to the Gemfile
: gem "heroku-mongo-backup"
- if everything's okay rake -T
command should show rake mongo:backup
rake tasks.
For S3 support heroku-mongo-backup requires s3
or aws-s3
or fog
library. One of those should be in Gemfile
, if you don't care add fog
it's seems to be the most advanced.
Configure heroku scheduler to run mongo:backup
rake task. Or if cron is used add backup task to /lib/tasks/cron.rake
file:
desc "This task is called by the Heroku cron add-on"
task :cron => :environment do
Rake::Task['mongo:backup'].invoke
end
Set Heroku environment variables:
heroku config:add S3_BACKUPS_BUCKET=_value_ S3_KEY_ID=_value_ S3_SECRET_KEY=_value_ MONGO_URL=_value_
On MONGO_URL place anyone of these is assaptable: MONGOHQ_URI or MONGOLAB_URI.
For FTP set these variables:
heroku config:add UPLOAD_TYPE=ftp FTP_HOST=_host_ FTP_PASSWORD=_pass_ FTP_USERNAME=_user_
Rake Commands
heroku run rake mongo:backup
If you want to automatically remove old backup files pass MAX_BACKUPS
parameter to the rake command:
heroku run rake mongo:backup MAX_BACKUPS=7
Restore from backup:
heroku run rake mongo:restore FILE=backup-file-name.gz
If you want to restore from local file run:
rake mongo:restore LOCAL=/absolute/path/to/<backup-file.gz>
For Rails 2 add this to your Rakefile to import rake tasks:
import File.expand_path(File.join(Gem.datadir('heroku-mongo-backup'), '..', '..', 'lib', 'tasks', 'heroku_mongo_backup.rake'))
Gem Contributors
- alexkravets - slatestudio.com - gem itself with S3 support
- matyi - FTP support
- stefl - stef.io - Rails is not required for production
- moonhouse - moonhouse.se - default config improvement
- wolfpakz - Rails2 support
- solacreative - Max backups feature for aws/s3 and s3 gems