基于 Laravel 扩展包 laravel-db-snapshots 快速导入导出数据库快照
功能简介
顾名思义,laravel-db-snapshots 是一个 Laravel 扩展包,可用于在 Laravel 项目中快速创建或加载数据库快照,即我们通常所说的导入导出数据库,这个扩展包在迁移网站时非常有用,亦可作为数据库备份工具。相对于直接使用特定数据库的导入导出命令而言,它的优点是对不同数据库提供了统一的操作命令,让你不需要关心不同数据库的实现细节,同时让操作流程更加标准化,有利于团队协作。
接下来学院君将给大家演示这个扩展包的安装和使用,目前,该扩展包已经支持 Laravel 6.0。
安装配置
首先进入项目根目录,通过 Composer 安装这个扩展包:
composer require spatie/laravel-db-snapshots
然后打开配置文件 config/filesystem.php
,在 disks
中新增 snapshots
配置项:
// ...
'disks' => [
// ...
'snapshots' => [
'driver' => 'local',
'root' => database_path('snapshots'),
],
// ...
如果你需要对 laravel-db-snapshots
扩展包进行更多自定义配置,还可以发布扩展包的配置文件到 config
目录下:
php artisan vendor:publish --provider="Spatie\DbSnapshots\DbSnapshotsServiceProvider" --tag="config"
至此,扩展包的安装配置工作都已经完成了,接下来,我们就可以使用这个扩展包了。
使用入门
laravel-db-snapshots
扩展包通过 Artisan 命令对数据库快照进行管理。
创建快照
我们可以通过 Artisan 命令 snapshot:create
创建快照(快照名称可选,默认是日期时间作为快照名),也就是导出数据库:
php artisan snapshot:create my-first-dump
我们可以在 database/snapshots
目录下看到刚刚生成的快照文件:
还可以在创建时对快照进行压缩:
php artisan snapshot:create --compress
可以看到,生成的快照文件相较于不压缩的时候小了很多。
注:你可以通过配置调度任务定时生成快照实现对数据库的备份。
加载快照
可以通过 Artisan 命令 snapshot:load
加载快照到数据库,也就是导入数据库:
php artisan snapshot:load my-first-dump
还可以在导入时指定数据库连接名称:
php artisan snapshot:load my-first-dump --connection=connectionName
查看快照列表
我们可以通过 Artisan 命令 snapshot:list
查看所有快照列表:
php artisan snapshot:list
删除快照
最后,还可以通过 Artisan 命令 snapshot:delete
删除指定快照:
php artisan snapshot:delete my-first-dump
触发事件
在对数据库快照进行创建、加载、删除等操作时,会触发相应的数据库事件,你可以在应用中对这些事件进行监听和自定义处理:
-
Spatie\DbSnapshots\Events\CreatingSnapshot
: 快照创建前触发 -
Spatie\DbSnapshots\Events\CreatedSnapshot
: 快照创建后触发 -
Spatie\DbSnapshots\Events\LoadingSnapshot
: 快照加载前触发 -
Spatie\DbSnapshots\Events\LoadedSnapshot
: 快照加载后触发 -
Spatie\DbSnapshots\Events\DeletingSnapshot
: 快照删除前触发 -
Spatie\DbSnapshots\Events\DeletedSnapshot
: 快照删除后触发
更多使用细节请参考该扩展包的官方文档。
2 Comments
这个可以当数据库备份用吗
可以啊