spatie / laravel-db-snapshots
快速导出和加载数据库
Requires
- php: ^8.0
- illuminate/support: ^7.0|^8.0|^9.0|^10.0|^11.0
- league/flysystem: ^1.0.41|^2.0|^3.0
- spatie/db-dumper: ^3.3
- spatie/laravel-package-tools: ^1.6
- spatie/temporary-directory: ^2.0
Requires (Dev)
- mockery/mockery: ^1.4
- orchestra/testbench: ^5.0|^6.0|^7.0|^8.0|^9.0
- pestphp/pest-plugin-laravel: ^1.3|^2.3
- phpunit/phpunit: ^9.5|^10.5
This package is auto-updated.
Last update: 2024-09-02 07:46:10 UTC
README
此包提供Artisan命令,以快速在Laravel应用程序中导出和加载数据库。
# 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 # Load up the latest dump php artisan snapshot:load --latest # List all snapshots php artisan snapshot:list # Remove old snapshots. Keeping only the most recent php artisan snapshot:cleanup --keep=2
此包支持MySQL、PostgreSQL和SQLite。
支持我们
我们投入大量资源来创建 最佳开源包。您可以通过 购买我们的付费产品之一 来支持我们。
我们非常感激您从家乡寄给我们一张明信片,说明您正在使用我们的哪个包。您可以在 我们的联系页面 上找到我们的地址。我们将所有收到的明信片发布在我们的 虚拟明信片墙 上。
支持我们
我们投入大量资源来创建 最佳开源包。您可以通过 购买我们的付费产品之一 来支持我们。
我们非常感激您从家乡寄给我们一张明信片,说明您正在使用我们的哪个包。您可以在 我们的联系页面 上找到我们的地址。我们将所有收到的明信片发布在我们的 虚拟明信片墙 上。
安装
对于PHP 7.x和/或Laravel 6.x,请使用此包的v1.x版本。
您可以通过Composer安装此包
composer require spatie/laravel-db-snapshots
您应该在config/filesystems.php
中添加一个名为snapshots
的磁盘,用于保存快照。这将是典型的配置
// ... 'disks' => [ // ... 'snapshots' => [ 'driver' => 'local', 'root' => database_path('snapshots'), ], // ...
可选地,您可以使用以下命令发布配置文件
php artisan vendor:publish --provider="Spatie\DbSnapshots\DbSnapshotsServiceProvider"
这是已发布文件的正文
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'), /* * Create dump files that are gzipped */ 'compress' => false, /* * Only these tables will be included in the snapshot. Set to `null` to include all tables. * * Default: `null` */ 'tables' => null, /* * All tables will be included in the snapshot expect this tables. Set to `null` to include all tables. * * Default: `null` */ 'exclude' => null, ];
使用方法
要创建快照(即从数据库中导出的备份),请运行
php artisan snapshot:create my-first-dump
给您的快照命名是可选的。如果您不传递名称,则将使用当前日期和时间
# Creates a snapshot named something like `2017-03-17 14:31`
php artisan snapshot:create
也许您只想备份几个表。您可以通过多次传递--table
或以逗号分隔的列表来做到这一点
# Both commands create a snapshot containing only the posts and users tables:
php artisan snapshot:create --table=posts,users
php artisan snapshot:create --table=posts --table=users
您可能希望排除一些表不进行备份。您可以通过多次传递--exclude
或以逗号分隔的列表来做到这一点
# create snapshot from all tables excluding the users and posts
php artisan snapshot:create --exclude=posts,users
php artisan snapshot:create --exclude=posts --exclude=users
注意:如果同时传递
--table
和--exclude
,它将使用--table
来创建快照并忽略--exclude
在创建快照时,您可以创建压缩快照。为此,可以在命令行上传递--compress
选项,或将配置选项db-snapshots.compress
设置为true
# Creates a snapshot named my-compressed-dump.sql.gz
php artisan snapshot:create my-compressed-dump --compress
在数据库中做了些更改后,您可以创建另一个快照
php artisan snapshot:create my-second-dump
要加载以前的导出,请运行此命令
php artisan snapshot:load my-first-dump
要将以前的导出加载到另一个数据库连接
php artisan snapshot:load my-first-dump --connection=connectionName
默认情况下,snapshot:load
将删除数据库中所有现有的表。如果您不希望这种行为,请传递--drop-tables=0
选项
php artisan snapshot:load my-first-dump --drop-tables=0
默认情况下,snapshot:load
将整个快照加载到内存中,这可能会在处理大文件时引起问题。为了避免这种情况,您可以将--stream
选项传递给一次流式传输一个语句到数据库的快照
php artisan snapshot:load my-first-dump --stream
要列出所有导出,请运行
php artisan snapshot:list
可以使用以下方式删除导出
php artisan snapshot:delete my-first-dump
要删除除最近两个以外的所有备份
php artisan snapshot:cleanup --keep=2
如果您需要向底层的db-dumper传递额外的选项,请在数据库的连接中添加一个具有dump
键的键,其键为addExtraOption
,其值为选项。例如,要防止Postgres数据库导出程序设置所有者,您将添加:
'dump' => [
'addExtraOption' => '--no-owner',
],
到database.php
中的pgsql
连接中
事件
有一些事件被触发,可以用来执行您自己的逻辑
Spatie\DbSnapshots\Events\CreatingSnapshot
:在创建快照之前将被触发Spatie\DbSnapshots\Events\CreatedSnapshot
:在创建快照之后将被触发Spatie\DbSnapshots\Events\LoadingSnapshot
:在加载快照之前将被触发Spatie\DbSnapshots\Events\LoadedSnapshot
:在加载快照之后将被触发Spatie\DbSnapshots\Events\DeletingSnapshot
:在删除快照之前将被触发Spatie\DbSnapshots\Events\DeletedSnapshot
:在删除快照之后将被触发
测试
composer test
变更日志
请参阅变更日志以获取有关最近更改的更多信息。
贡献
请参阅贡献指南以获取详细信息。
安全漏洞
请查阅我们的安全策略了解如何报告安全漏洞。
致谢
许可证
MIT许可证(MIT)。请参阅许可证文件以获取更多信息。