Django-easydump

Easily load database snapshots across deployments


Project maintained by priestc Hosted on GitHub Pages — Theme by mattgraham

At a glance

How it works

When you run the make_dump command, the plugin makes a call to pg_dump (only postgres supported at this time), creates a compressed dump, then uploads it to an S3 bucket. It is recommended to only run this command on your production deployment. Preferably in a cron.

When the load_dump command is called (it is recommended to only run this command on your local/qa/staging deployments), the app will download the latest dump from the bucket (based on the timestamp in the key), and will apply that database dump into the current database.

Installation

  1. pip install django-easydump
  2. add to INSTALLED_APPS

Configuration

In your settings, add three settings: AWS_SECRET_KEY, AWS_ACCESS_KEY, and EASYDUMP_MANIFESTS::

AWS_SECRET_KEY = ''
AWS_ACCESS_KEY = ''

EASYDUMP_MANIFESTS = {
    'location': {
        'database': 'default',
        'include-models': 'Location',
        's3-bucket': 'my_dump_bucket'
    },
    'default': {
        'database': 'default',
        'exclude-models': 'Location',
        'extra-tables': ['django_deleted_model'],
        's3-bucket': 'my_dump_bucket'
    }
}

Usage

python manage.py make_dump default

This command will dump your database based on the default manifest in your settings and upload it to the S3 bucket.

python manage.py load_dump location

This command will download the latest dump according to the location manifest from the S3 bucket and apply it to your database. Make sure you don't run this command on your production machine, it will overwrite data!!

python manage.py rotate_dumps default

This will go through your bucket and remove all dumps except for ones performed on at 9PM on a monday. This command is to keep your S3 bucket from getting huge. In future versions, this command will be customizable.

Notes

Postgres/Postgis currently only supported. Mysql/Oracle/SQLite support coming soon.

Changelog

v0.1.0

v0.1.1 - v0.1.3

v0.2.0

v0.2.1