spresnac/laravel-artisan-database-helper

一些有用的助手来处理数据库备份和恢复

1.0.12 2024-04-08 13:45 UTC

This package is auto-updated.

Last update: 2024-09-08 14:38:29 UTC


README

此包将为您提供一些助手来

  • 备份您的数据库
  • 恢复这些备份
  • 从模式中删除所有表

Software License PHP from Packagist Laravel Version

Software License Downloads

安装

首先,首先,因此需要这个包

composer require spresnac/laravel-artisan-database-helper

这就完成了,你现在可以出发了 😁

用法

BackupDatabase

90%的方法

要备份您的数据库,打开控制台并键入

php artisan db:backup

在大多数情况下,您已经完成。您将在以下位置找到您的备份

storage/app/backups

好的,我所说的“大多数情况”是指这个

  • 您只使用一个数据库
  • 您想备份一切
  • 您已设置了路径,因此调用mysqldump将起作用

如果您具备所有这些,您就可以出发了。

剩下的10% ;)

让我们假设,您不是那90%中的一员,可能是因为

  • 您使用多个数据库连接
  • 您只想导出结构
  • 您有一个mysqldump,但它不在您的路径中

我已经为您解决了这个问题(就像我也遇到过这些问题一样),因此您可以使用这些选项来配置备份的创建方式

定义要备份的连接

使用第一个参数,您可以定义正在使用的连接。您可以在您的config/database.php中设置连接

php artisan db:backup <connection_name>

定义您的mysqldump二进制文件的路径

您需要这个选项的真实世界示例吗?好吧,简短格式:我在使用Windows ... 没有更多话要说 ;)

第二个参数可以用来定义指向您的mysqldump二进制文件的路径

php artisan db:backup <connection_name> <path_to_binary>

提示:当您只需要设置路径,但使用默认连接时,请使用mysql作为连接名称

php artisan db:backup mysql <path_to_binary>

仅导出结构

使用-S选项仅导出数据库的结构

php artisan db:backup -S

无选项导出

这是一个我个人非常需要的选项。关于为什么需要这个,请查看“我如何使用它来测试我的应用程序”部分。

php artisan db:backup -O

带有日期前缀的导出

您可以将实际日期和时间作为导出文件名的前缀导出。它看起来像20190425153412_yourConnection.sql。日期格式为YmdHis

php artisan db:backup -D

将所有部分粘合在一起

所有粘合在一起(导出特定数据库,使用自定义路径,仅结构,无选项)

php artisan db:backup foobardb d:/www/mysql/bin -SO

我的备份在哪里?

您将在以下位置找到您的备份

storage/app/backups/<connection>_backup.sql

如果您设置了-S选项,它看起来像这样

storage/app/backups/<connection>_structure.sql

当与-D一起使用时,它将看起来像这样

storage/app/backups/<Ymd_><connection>_backup.sql

DropTable

使用此命令可以快速“清空”给定数据库模式,而不删除模式本身。简而言之,给定连接中的所有表都将被删除。

php artisan db:drop-tables <connection>

如果您想以自动方式使用此功能,可以使用--force选项删除表而不进行确认(您将被警告!)。

php artisan db:drop-tables <connection> --force

RestoreDatabase

要恢复备份,只需使用

php artisan db:restore

如果需要,您可以提供更多选项

php artisan db:restore <backup_name> <connection> <path_to_mysql> <port>

所有这些选项与在 db:backup 中描述的选项类似,因此您能够无缝地恢复已备份的数据库。

我是如何用它来测试或修复我的应用的bug

当有非常复杂的设置且bug非常复杂时,可能会发生您需要一些非常具体的数据库条目,而不希望每次都重新生成。

在这种情况下,我将这个包用作我的bug修复的辅助工具,以便更快地修复。

  1. 使用 db:backup 从数据库创建备份。
  2. 将此备份重命名为我拥有的bugticket的名称。
  3. 为这个bug设置我的单元测试在一个特殊的组中,该组默认不执行。
  4. 在我的测试脚本中,我定义了一个测试schema。
  5. 在运行我的测试之前,在测试schema上执行 db:drop-tables
  6. 之后,执行 db:restore <ticketnumber>

这样,每次我执行测试以修复bug时,我的数据库都会重置到可以复现bug的具体点,以便我可以快速修复。

最后

... 玩得开心;)并提高生产力。