Autobus
Last updated 20 February 2019
Table of Contents
Autobus is an add-on for providing a simple-to-use automatic backup service for PostgreSQL (Heroku Postgres), MySQL (ClearDB, JawsDB) and MariaDB (JawsDB Maria) databases. Autobus gives you the following:
Smart automation — You can schedule daily backups to minimize load on your application database.
Cross-continental backup — For applications that are hosted in the US, snapshots are stored in the EU region and the other way round.
Data integrity verification — All snapshots are tested for restorability and you’ll be notified if anything goes wrong.
Full control — You can entirely rule backup process. Exclude tables, select dump options and manage snapshots via web dashboard or RESTful API.
Detalization — Autobus provides brief database statistics for each snapshot. You can monitor the changes in your database day by day.
Quick start — You need just a few clicks to get a fully functional automatic backup system. No code and configs, just an easy-to-use web dashboard.
Provisioning the add-on
A list of all plans available can be found here.
To get a working automatic backup system you need to do just a two step:
1) Visit Heroku Dashboard and select the application in question. Then click on “Access” tab and add our Heroku account (heroku@autobus.io) as collaborator for your application (if you are Heroku Enterprise user please make sure it has “operate” permission).
2) Attache Autobus add-on to your application from Heroku Dashboard or via the CLI
$ heroku addons:create autobus
-----> Adding autobus to sharp-mountain-4005... done, v18 (free)
That’s all!
It’s also a good idea to get a look at default preferences on Autobus Settings tab and personalize them if necessary. To do this log into the Autobus dashboard via the CLI:
$ heroku addons:open autobus
Opening autobus for sharp-mountain-4005…
or by visiting the Heroku Dashboard and selecting Autobus from the Add-ons menu.
Data safety and security
We’re using only secure protocols for all data transfers on all levels of interactions. Created snapshots are encrypted by multi-factor Server-Side Encryption with Amazon S3-managed keys (SSE-S3) at rest. Our Heroku account is protected by a strong password and two-factor authentication.
Backups Retention Limits
Snapshot type | Retention period |
---|---|
Manual | Unlimited |
Daily | 1 week |
Weekly | 4 weeks |
Monthly | 1 year |
Monthly snapshots are disabled by default, you can enable it on the “Settings” tab (section “Monthly backups”) in the Autobus dashboard.
Restoring backups
You can download any snapshot from the Autobus dashboard and restore it into your local or remote database.
PostgreSQL
Manually:
$ pg_restore --verbose --clean --no-acl --no-owner -h host -U myuser -d mydb DATABASE_54d4041969702d0295380301.dump
Or via pg:backups
:
$ heroku pg:backups:restore "https://autobus-us.s3.amazonaws.com/DATABASE_5ac7bb45772c9005be448fbe.dump?AWSAccessKeyId=..." DATABASE_URL --app sushi
URL of the certain snapshot you can find in Autobus dashboard.
MySQL
$ gzip -d -c DATABASE_54d4041969702d0295380301.sql.gz | mysql -h host -uuser_name -ppassword db_name
API
Autobus provides the simple RESTful API to access your snapshots via any http-client. By default it’s disabled. Before use you need to enable it on the “Settings” tab (“Account settings” section) in the Autobus dashboard. In the same section you can find your personal API token.
List all snapshots
URL: "https://www.autobus.io/api/snapshots"
Method: "GET"
Content-Type: "application/json"
Parameters: {"token": "YOUR_API_TOKEN"}
Response Body: [{"id":"550bb45669702d21bd430000", "kind":"Daily", "created_at":"2015-03-20T05:47:03.592Z", ...}, ...]
Get the latest snapshot URL
URL: "https://www.autobus.io/api/snapshots/latest"
Method: "GET"
Content-Type: "application/json"
Parameters: {"token": "YOUR_API_TOKEN"}
Response Body: "https://autobus-us.s3.amazonaws.com/PURPLE_552b383e69702d5b420f0000.dump..."
The URL expires after 30 minutes.
Create snapshot
URL: "https://www.autobus.io/api/snapshots"
Method: "POST"
Content-Type: "application/json"
Parameters: {"token": "YOUR_API_TOKEN", "database": "FULL_DATABASE_NAME", "description": "SNAPSHOT_DESCRIPTION"}
Response Body: {"message": "Snapshot is in progress, it may take awhile", "jid": "0255ba3ef315936317d883d8"}
Note: “database” and “description” parameters are optional.
Check snapshot
URL: "https://www.autobus.io/api/snapshots/check_snapshot"
Method: "GET"
Content-Type: "application/json"
Parameters: {"token": "YOUR_API_TOKEN", "jid": "YOUR_JID"}
Response Body: {"completed"=>true, "snapshot_id"=>"5880eb73cc5fb5d74da892cd"}
Get information about the certain snapshot
URL: "https://www.autobus.io/api/snapshots/:snapshot_id"
Method: "GET"
Content-Type: "application/json"
Parameters: {"token": "YOUR_API_TOKEN"}
Response Body: {"id":"550bb45669702d21bd430000", "kind":"Daily", "created_at":"2015-03-20T05:47:03.592Z", ...}
Delete snapshot
URL: "https://www.autobus.io/api/snapshots/:snapshot_id"
Method: "DELETE"
Content-Type: "application/json"
Parameters: {"token": "YOUR_API_TOKEN"}
Response Body: {"message": "Snapshot has been deleted"}
Migrating between plans
A list of all plans available can be found here.
Use the heroku addons:upgrade
command to migrate to a new plan.
$ heroku addons:upgrade autobus:travel
-----> Upgrading autobus:travel to sharp-mountain-4005... done, v18 ($20/mo)
Your plan has been updated to: autobus:travel
Removing the add-on
Autobus can be removed via the CLI.
This will destroy all associated data and cannot be undone!
$ heroku addons:destroy autobus
-----> Removing autobus from sharp-mountain-4005... done, v20 (free)
Before removing the Autobus add-on you can download recent snapshots from the dashboard.
Support
All Autobus support and runtime issues should be submitted via one of the Heroku Support channels. Any non-support related issues or product feedback is welcome at support@autobus.io.