Laravelタスク実戦データベースバックアップのスケジュール

2520 ワード

私たちは1分に1回データベースをバックアップします.始めましょう.

コマンドファイルの作成

php artisan make:comman BackupDatabase

作成したファイルを開き、次のように変更します.
process = new Process(sprintf('mysqldump -u%s --password=%s %s > %s',
            config('database.connections.mysql.username'),
            config('database.connections.mysql.password'),
            config('database.connections.mysql.database'),
            storage_path('backups/' . $file_name)
        ));
    }

    /**
     * Execute the console command.
     *
     * @return mixed
     */
    public function handle()
    {
        try {
            $this->process->mustRun();

            $this->info('The backup has been proceed successfully.');
        } catch (ProcessFailedException $exception) {
            $this->error($exception);
        }
    }
}

設定コマンド


storageにbackupsフォルダを作成し、app/Clonsole/Kernelを開きます.phpは一部の内容を修正し、以下のようにする.
protected $commands = [
       
        Commands\BackupDatabase::class,
    ];
protected function schedule(Schedule $schedule)
    {
        $schedule->command('db:backup')
            ->everyMinute();
    }

サーバ構成


サーバ実行
crontab -e

初めてcrontabを開いた場合はエディタを選択させますが、ここ(vimを選択)でいいです.私が選んだ3番目です.しかし、もしあなたが間違って選択したら、少し面倒になるかもしれません.正常に編集できません.crontab-e.どうしよう?このコマンドを実行します:select-editor(crontabのコマンド)は、もう一度選択することができます.次のようにコピー
* * * * * php /home/vagrant/code/laravel/artisan schedule:run >> /dev/null 2>&1

/home/vagrant/code/laravel/はプロジェクトのディレクトリです.1分後にstorage/backupsフォルダにバックアップを生成するsqlファイルがあるかどうかを確認できます.