Skip to content

Simple backups for self hosted Postgres databases using ActiveStorage

License

Notifications You must be signed in to change notification settings

koenhandekyn/ops_backups

Repository files navigation

OpsBackups

A Ruby gem that provides a simple way to backup (self)-hosted postgres databases to ActiveStorage services like S3, Google Cloud Storage, etc.

Usage

Installation

bundle add ops_backups
# install migrations
# configure solid queu recurring job for a basic backup
rails generate ops_backups:install

Scripts

pgdb is a script that can be used to backup and restore a postgres database and wraps pg_dump and pg_restore in the context of Kamal for ease of use. Environment here coresponds to the destination in Kamal.

Usage: pgdb <command> <environment> [<additional_args>]

Available commands:
  console <environment>                   - Opens a database console for the specified environment.
  create <environment>                    - Creates a new database for the specified environment.
  revert <environment> <backup_db_name>   - Reverts the database to a specified backup.
  backup <environment>                    - Creates a clone of the remote database as a backup on the server.
  backup:local <environment>              - Backs up the remote database to a local dump file.
  drop <environment>                      - Drops the database of the specified environment after confirmation.
  pull <environment|url> [local_db_name]  - Pulls the remote database to a local database with an optional custom name (optional).
  push <environment> <local_db_name>      - Pushes a local database to the remote environment, creating a backup of the remote.
  rename <environment> [new_db_name]      - Renames the main database of the specified environment, optionally using a new name (optional).
  copy <source_env> <target_env>          - Copies a database from one environment to another, with backup of the target database.
  list <environment>                      - Lists databases for the base URL associated with the environment.

set EXCLUDE_TABLE_DATA to exclude data from specific tables on export
e.g. EXCLUDE_TABLE_DATA=versions   bin/pgdb pull staging

ActiveAdmin Integration

If you are using ActiveAdmin, you can manage your backups through the admin interface. The generator rails generate ops_backups:activeadmin will create the necessary example configuration.

# add an active admin resource
rails generate ops_backups:activeadmin

Available Actions

  • Download Backup: Download the backup file.
  • Create Versioned Backup: Create a new versioned backup.
  • Create Unversioned Backup: Create a new unversioned backup, excluding specific tables.

License

The gem is available as open source under the terms of the MIT License.

About

Simple backups for self hosted Postgres databases using ActiveStorage

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published