This extension provides commands to quickly create and restore database snapshots for Flarum.
composer require acpl/flarum-db-snapshotsCreate 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--compress: Compression type (gzorbz2).--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 includeCREATE TABLEstatements.--no-data: Dump schema only, without row data.--skip-auto-increment: SkipAUTO_INCREMENTvalues.--no-column-statistics: Disable column statistics.--binary-path=/path/to/binary: Custom path to themysqldumpbinary.
Most standard mysqldump options are also supported, such as --single-transaction, --quick, and --lock-tables. See the mysqldump documentation for details.
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--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 themysqlbinary.
mysqlandmysqldumpbinariesgzipfor.gzsnapshotsbzip2for.bz2snapshots