Skip to main content

BackyDB

A modular backup and restore system designed to provide flexible, secure, and efficient database backups with support for MySQL and extensible architecture.

Features

  • Modular architecture with components for compression, encryption, integrity, storage, and more
  • Supports MySQL database backup and restore with SQL export or compressed/encrypted formats
  • Flexible configuration via YAML or JSON
  • Integration with security tools including local and Google Cloud keystore, and AWS KMS support
  • Supports multiple backup modes: raw SQL, compressed only, encrypted only, or full backup (compressed + encrypted)
  • Multiple compression options: ZIP, TAR
  • Hybrid encryption with AES-GCM and RSA-4096
  • Metadata generation for backup integrity and management
  • Validator module for HMAC and checksum verification
  • Supports local storage and AWS S3
  • Designed for extensibility with cloud provider support planned

Installation

You can install backy_db using pip:

pip install backy-db

To include optional dependencies, use:

  • For AWS support:

    pip install backy-db[aws]
    
  • For Google Cloud Platform support:

    pip install backy-db[gcp]
    
  • For full installation with all optional dependencies:

    pip install backy-db[full]
    

Requirements

  • Python 3.9 or higher
  • MySQL server (if using MySQL backup features)

Usage

BackyDB supports flexible backup and restore workflows with customizable options for compression, encryption, integrity checks, storage, and backup feature selection.

Backup Features

  • Backup format:
    • If no compression and no encryption are enabled, the backup will be a plain SQL dump file (.sql).
    • If compression, encryption, or both are enabled, the backup file will have a .backy extension.
  • Metadata generation and optional integrity check are created after the backup.
  • Backup modes:
    • Raw SQL: Direct SQL dump without compression or encryption.
    • Compressed only: Backup is compressed but not encrypted.
    • Encrypted only: Backup is encrypted but not compressed.
    • Full backup: Backup is both compressed and encrypted.
  • Backups should be compressed and uploaded to cloud storage or saved locally.
  • Backup can be split into separate files per feature (tables, data, views, functions, procedures, triggers, events) or saved as a single file.
  • The default backup includes tables and data only.

Minimum Required Backup Configuration Example

{
  "database": {
    "host": "localhost",
    "user": "root",
    "port": 3306,
    "db_name": "backy_db"
  },
  "storage": {
    "storage_type": "local"
  }
}

Full Backup Configuration Example

{
  "database": {
    "host": "localhost",
    "user": "root",
    "port": 3306,
    "db_name": "backy_db",
    "multiple_files": true,
    "features": {
      "tables": true,
      "data": true,
      "views": true,
      "functions": true,
      "procedures": false,
      "triggers": false,
      "events": true
    }
  },
  "compression": {
    "compression": true,
    "compression_type": "tar"
  },
  "security": {
    "encryption": true,
    "type": "keystore",
    "provider": "local",
    "key_size": 4096
  },
  "integrity": {
    "integrity_check": true,
    "integrity_type": "hmac"
  },
  "storage": {
    "storage_type": "local"
  }
}

Restore Configuration Example

{
  "database": {
    "host": "localhost",
    "user": "root",
    "port": 3307,
    "db_name": "backy_db"
  },
  "backup_path": "/path/to/backup/file.backy",
  "storage": {
    "storage_type": "local"
  }
}

Environment Variables

BackyDB supports optional and required environment variables depending on the selected configuration.

  • Required Variables (always required)

    DB_PASSWORD=root
    LOGGING_PATH=/path/to/logs
    
  • Conditional Variables

    • If encryption is enabled:

      PRIVATE_KEY_PASSWORD=private_key_password
      
    • If using Local Key Store encryption:

      LOCAL_KEY_STORE_PATH=/path/to/keys
      
    • Google Key Store encryption:

      GOOGLE_APPLICATION_CREDENTIALS=/path/to/gcp/credentials.json
      GCP_PROJECT_ID=my-gcp-project
      
    • If using AWS KMS encryption:

      AWS_ACCESS_KEY_ID=your-access-key
      AWS_SECRET_ACCESS_KEY=your-secret-key
      AWS_REGION=your-region
      
    • If using Integrity with HMAC type:

      INTEGRITY_PASSWORD=integrity_password
      
    • If using Local storage:

      LOCAL_PATH=/path/to/local/storage
      
    • If using AWS S3 storage:

      AWS_S3_ACCESS_KEY_ID=your-access-key
      AWS_S3_SECRET_ACCESS_KEY=your-secret-key
      AWS_S3_BUCKET_NAME=your-bucket-name
      AWS_S3_REGION=your-region
      

Notes

  • You can customize which database features to backup or restore by enabling/disabling options under features.

  • Storage options currently support local and cloud provider AWS.

  • Compression supports types like tar or zip.

  • Security supports hybrid encryption with local or cloud support key_store (local or GCP) and KMS (AWS).

  • Integrity supports HMAC or checksum validation.

  • You can use YAML or JSON for configuration files.

Basic Example

from backy_db import BackyDB

# Initialize the BackyDB instance
backy_db = BackyDB()

# Define your backup configuration as a dictionary
backup_config = {
    "database": {
        "host": "localhost",
        "user": "root",
        "port": 3306,
        "db_name": "backy_db",
        # Additional optional fields like 'multiple_files' and 'features' can be added
    },
    "storage": {
        "storage_type": "local",
    }
}

# Perform a backup
backy_db.backup(backup_config)

# Define your restore configuration as a dictionary
restore_config = {
    "database": {
        "host": "localhost",
        "user": "root",
        "port": 3307,
        "db_name": "backy_db",
    },
    "backup_path": "/path/to/backup/file.backy",
    "storage": {
        "storage_type": "local",
    }
}

# Perform a restore
backy_db.restore(restore_config)

Configuration Options

  • Backup supports:

    • Backing up data as raw SQL files (when no compression or encryption is specified).

    • Compressed and/or encrypted backups with a .backy extension.

    • Selecting features to backup such as tables, data, views, functions, procedures, triggers, and events.

    • Splitting backup into multiple files (per feature) or a single file.

  • Restore expects:

    • The database connection information.

    • The path to the backup file.

    • Storage details.

Refer to the Configuration section for full schema details.

License

BackyDB is licensed under the MIT License.

Metadata

Release files for backy-db 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for backy-db 0.1.0
File Size Uploaded
backy_db-0.1.0.tar.gz 51.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for backy-db 0.1.0
File Interpreter ABI Platform
backy_db-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 129.1 kB

Release files / backy_db-0.1.0.tar.gz

Download URL backy_db-0.1.0.tar.gz
Size 51.1 kB
Tags Source
SHA-256 checksum
How to use checksums
9779670531d5e621bf016cb7c688adc672f1e8be80c9abaa6d2f6c8525811da6
BLAKE2b-256 checksum
How to use checksums
051a53caefea02c309ec26b33bec6b5d5c4dcf40a3af4a99e2a2e26b1996db23
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.3

Release files / backy_db-0.1.0-py3-none-any.whl

Download URL backy_db-0.1.0-py3-none-any.whl
Size 78.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5eedaa8b0599c19f5790d45f7abb5742b005fcbdead2bb2cbeeae918a487f5e6
BLAKE2b-256 checksum
How to use checksums
0f4e0a9a82408ccc18e4563d59681d076d7c30ebc341f0f1ecf3c176b7aaeb31
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.3

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page