Flarum Database Snapshots

This extension provides commands to quickly create and restore database snapshots for Flarum.
Installation
composer require acpl/flarum-db-snapshots
Create Snapshot
Create a database snapshot using the snapshot:create command.
Basic usage:
# Dump to storage/snapshots/snapshot-Y-m-d-His.sql
php flarum snapshot:create
# Dump to storage/snapshots/my-snapshot.sql
php flarum snapshot:create my-snapshot.sql
# Dump to a specific path/file
php flarum snapshot:create /path/to/backup.sql
php flarum snapshot:create ../backups/forum.sql
# Dump with compression (based on extension)
php flarum snapshot:create /backups/dump.sql.gz # gzip compression
php flarum snapshot:create /backups/dump.sql.bz2 # bzip2 compression
# Create a backup on a live site without locking tables (recommended for production)
php flarum snapshot:create --single-transaction --quick --lock-tables=false
Options for Creation
--compress: Compression type (gz or bz2).
--include-tables=table1,table2: Include only specific tables in the snapshot.
--exclude-tables=table1,table2: Exclude specific tables from the snapshot.
--skip-structure: Skip table structure and do not include CREATE TABLE statements.
--no-data: Dump schema only, without row data.
--skip-auto-increment: Skip AUTO_INCREMENT values.
--no-column-statistics: Disable column statistics.
--binary-path=/path/to/binary: Custom path to the mysqldump binary.
Most standard mysqldump options are also supported, such as --single-transaction, --quick, and --lock-tables. See the mysqldump documentation for details.
Load Snapshot
Restore a database from an existing snapshot using the snapshot:load command.
Basic usage:
# Select a snapshot interactively from storage/snapshots
php flarum snapshot:load
# Load a specific snapshot from the default storage/snapshots directory
php flarum snapshot:load my-snapshot.sql.gz
# Restore from a standard SQL file
php flarum snapshot:load /path/to/backup.sql
# Restore directly from a compressed file (automatically decompressed on the fly)
php flarum snapshot:load /path/to/backup.sql.gz
php flarum snapshot:load /path/to/backup.sql.bz2
Options for Loading
--drop-tables: Drop all existing tables before loading the snapshot. Useful when restoring a full backup into an existing database to avoid conflicts.
--force, -f: Bypass the confirmation prompt when using --drop-tables.
--binary-path=/path/to/binary: Custom path to the mysql binary.
Requirements
mysql and mysqldump binaries
gzip for .gz snapshots
bzip2 for .bz2 snapshots
Links