Laravel 应用自动备份 MySQL 数据到云端 (Dropbox) 实践

说明
  • 安装 backup-manager 包;
  • 添加 cron 计划任务.

    通过 这个链接 创建一个 App, 创建成功后收集以下信息:

  • 'token' => 获取见下图, 见下图

    backup-manager 是一个用来备份数据库的扩展包, 并专门为 Laravel 提供了接口.

    添加 providers 文件不需要理会, 会自动使用 laravel 应用里当前环境下使用的数据库配置. 是对存储目标 provider 的配置;在此, 可供参考. 备份数据库

    backup-manager 很棒, 可惜没有提供自动命名, 所有这里手动创建一个命令, 来完成自动命名的功能.Laravel 4 Artisan 命令行实战.

    在 app/start/artisan.php 文件里面, 添加以下

    代码如下: <?php use IlluminateConsoleCommand; use SymfonyComponentConsoleInputInputOption; use SymfonyComponentConsoleInputInputArgument; class DatabaseBackupCommand extends Command { /** * The console command name. * * @var string */ protected $name = 'db:cloudbackup'; /** * The console command description. * * @var string */ protected $description = 'Backup database to the cloud.'; /** * Create a new command instance. * * @return void */ public function __construct() { parent::__construct(); } /** * Execute the console command. * * @return mixed */ public function fire() { $now = Carbon::now(); $folder = $now->format('Y-m') . '/'; $database = Config::get('database.connections.mysql.database'); $subfix = '_' . $now->toDateTimeString() . '.sql'; $filename = $folder . $database . $subfix; // database, destination, destinationPath, compression $this->call('db:backup', [ '--database' => 'mysql', '--destination' => 'dropbox', '--destinationPath' => $filename, '--compression' => 'gzip', ]); } }

    结束语

    通过这种方式, 以后可以很轻易的修改备份到别的备份目标, 如 S3 上.

    转载请注明:代码家园 » Laravel 应用自动备份 MySQL 数据到云端 (Dropbox) 实践

  • 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)