Skip to main content

Easily take snapshots of Postgres and MySQL databases and upload to AWS S3.

Project description

# django-bacman #

A simple library that takes a snapshot of a Postgres or MySQL database and uploads it to AWS S3.

## Installation ##

**Step 1:** - Install it

```bash
pip install bacman
```

**Step 2:** Add proper environment variables in your `/etc/environment` or `.pam_environment`

```bash
DATABASE_URL="postgres://dbuser:dbpass@localhost:5432/dbname"

AWS_SECRET_ACCESS_KEY="YOURAWSSECRETACCESSKEYABCDEFGHIJKLMNOPQR"
AWS_ACCESS_KEY_ID="YOURAWSACCESSKEYIDAB"

BACMAN_BUCKET="bacman-example"
BACMAN_DIRECTORY="/home/bacman/backups"
BACMAN_REGION="eu-west-1"
```

**Step 3:** Create .py file with the contents below

```python
from bacman.postgres import Postgres

Postgres(cleanup_local_snapshots=True)
```

or

```python
from bacman.postgres import Postgres

Postgres(cleanup_local_snapshots=True, local_snapshot_timeout=24)
```


## Settings ##

### DATABASE

**DATABASE_URL**

Please add the `DATABASE_URL` variable to your `/etc/environment` or `.pam_environment`

Read more at https://github.com/kennethreitz/dj-database-url


### Amazon Web Services

**AWS_ACCESS_KEY_ID**

Please add the `AWS_ACCESS_KEY_ID` variable to your `/etc/environment` or `.pam_environment`

**AWS_SECRET_ACCESS_KEY**

Please add the `AWS_SECRET_ACCESS_KEY` variable to your `/etc/environment` or `.pam_environment`


### BacMan ###

#### BACMAN_BUCKET

Please add the `BACMAN_BUCKET` variable to your `/etc/environment` or `.pam_environment`

#### BACMAN_DIRECTORY
* default: `/tmp/bacman`

#### BACMAN_PREFIX
* default (Postgres): `pgdump`
* default (MySQL): `mysqldump`


### Examples ###

```python
# /home/bacman/runbacman.py

from bacman.postgres import Postgres

def main():
Postgres(to_remote=True, cleanup_local_snapshots=True)

if __name__ == "__main__":
main()
```

You can test run the script above by

```
$ chmod +x runbacman.py
$ python runbacman.py
```

```bash
# Open your crontab editor by typing crontab -e

# m h dom mon dow command
0 */2 * * * ~/env/bin/python ~/runbacman.py >> /home/bacman/logs/crontab.log 2>&1
```

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for bacman, version 0.2
Filename, size & hash File type Python version Upload date
bacman-0.2.tar.gz (5.5 kB) View hashes Source None

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page