Quickly dump and load databases
This package provides Artisan commands to quickly dump and load databases in a Laravel application.
# Create a dump
php artisan snapshot:create my-first-dump
# Make some changes to your db
# ...
# Create another dump
php artisan snapshot:create my-second-dump
# Load up the first dump
php artisan snapshot:load my-first-dump
# List all snapshots
php artisan snapshot:list
This package supports MySQL, PostgreSQL and SQLite.
Installation
You can install the package via Composer:
composer require spatie/laravel-db-snapshots
In Laravel 5.5 and above, the package will autoregister the service provider. For Laravel 5.4 or below you must install this service provider to config/app.php
:
'providers' => [
// ...
Spatie\DbSnapshots\DbSnapshotsServiceProvider::class,
];
And finally you should add a disk named snapshots
to app/config/filesystems.php
on which the snapshots will be saved. This would be a typical configuration:
// ...
'disks' => [
// ...
'snapshots' => [
'driver' => 'local',
'root' => database_path('snapshots'),
],
// ...
Optionally, you may publish the configuration file with:
php artisan vendor:publish --provider="Spatie\DbSnapshots\DbSnapshotsServiceProvider" --tag="config"
This is the content of the published file:
return [
/**
* The name of the disk on which the snapshots are stored.
*/
'disk' => 'snapshots',
/**
* The connection to be used to create snapshots. Set this to null
* to use the default configured in `config/databases.php`
*/
'default_connection' => null,
/**
* The directory where temporary files will be stored.
*/
'temporary_directory_path' => storage_path('app/laravel-db-snapshots/temp'),
];
Usage
To create a snapshot (which is just a dump from the database) run:
php artisan snapshot:create my-first-dump
Giving your snapshot a name is optional. If you don't pass a name the current date time will be used:
# Creates a snapshot named something like `2017-03-17 14:31`
php artisan snapshot:create
After you've made some changes to the database you can create another snapshot:
php artisan snapshot:create my-second-dump
To load a previous dump issue this command:
php artisan snapshot:load my-first-dump
To load a previous dump to another DB connection:
php artisan snapshot:load my-first-dump --connection=connectionName
To list all the dumps run:
php artisan snapshot:list
A dump can be deleted with:
php artisan snapshot:delete my-first-dump
Events
There are several events fired which can be used to perform some logic of your own:
Spatie\DbSnapshots\Events\CreatingSnapshot
: will be fired before a snapshot is createdSpatie\DbSnapshots\Events\CreatedSnapshot
: will be fired after a snapshot has been createdSpatie\DbSnapshots\Events\LoadingSnapshot
: will be fired before a snapshot is loadedSpatie\DbSnapshots\Events\LoadedSnapshot
: will be fired after a snapshot has been loadedSpatie\DbSnapshots\Events\DeletingSnapshot
: will be fired before a snapshot is deletedSpatie\DbSnapshots\Events\DeletedSnapshot
: will be fired after a snapshot has been deleted
Changelog
Please see CHANGELOG for more information what has changed recently.
Testing
composer test
Contributing
Please see CONTRIBUTING for details.
Security
If you discover any security related issues, please email freek@spatie.be instead of using the issue tracker.
Postcardware
You're free to use this package (it's MIT-licensed), but if it makes it to your production environment we highly appreciate you sending us a postcard from your hometown, mentioning which of our package(s) you are using.
Our address is: Spatie, Samberstraat 69D, 2060 Antwerp, Belgium.
We publish all received postcards on our company website.
Credits
Support us
Spatie is a webdesign agency based in Antwerp, Belgium. You'll find an overview of all our open source projects on our website.
Does your business depend on our contributions? Reach out and support us on Patreon. All pledges will be dedicated to allocating workforce on maintenance and new awesome stuff.
License
The MIT License (MIT). Please see License File for more information.