Khôi phục Database Backups trong Laravel
Laravel Backup Restore là một package để khôi phục (restore) database backups đã được backup bởi Spatie’s laravel-backup package :
Gói này cung cấp một lệnh Artisan để khôi phục một bản sao lưu cũng như một số kiểm tra sức khỏe có thể tùy chỉnh và kiểm tra tính toàn vẹn của bản sao lưu. Dưới đây là một ví dụ về lệnh artisan từ tệp README của dự án:
php artisan backup:restore
--disk=s3
--backup=latest
--connection=mysql
--password=my-secret-password
--reset
Sau khi bản sao lưu (backup) được khôi phục, gói này sẽ chạy một số kiểm tra sức khỏe để đảm bảo rằng bản sao lưu đã được khôi phục thành công. Nó kiểm tra các yếu tố như đảm bảo cơ sở dữ liệu có bảng. Bạn cũng có thể thêm các kiểm tra tùy chỉnh riêng của mình mà bạn có thể cấu hình để chạy sau khi thực hiện lệnh backup:restore:
namespace App\HealthChecks;
use Wnx\LaravelBackupRestore\PendingRestore;
use Wnx\LaravelBackupRestore\HealthChecks\HealthCheck;
class MyCustomHealthCheck extends HealthCheck
{
public function run(PendingRestore $pendingRestore): Result
{
$result = Result::make($this);
// We assume that your app generates sales every day.
// This check ensures that the database contains sales from yesterday.
$newSales = \App\Models\Sale::query()
->whereBetween('created_at', [
now()->subDay()->startOfDay(),
now()->subDay()->endOfDay()
])
->exists();
// If no sales were created yesterday, we consider the restore as failed.
if ($newSales === false) {
return $result->failed('Database contains no sales from yesterday.');
}
return $result->ok();
}
}
Hãy chắc chắn kiểm tra tệp README của gói để xem ví dụ về một GitHub action bạn có thể sử dụng để kiểm tra tích cực tính toàn vẹn của bản sao lưu.
Bạn có thể tìm hiểu thêm về gói này, xem hướng dẫn cài đặt đầy đủ và xem source code trên GitHub.