monashee/backup

Laravel MySQL 备份工具,并上传到 AWS S3。

dev-master 2014-09-30 04:16 UTC

This package is not auto-updated.

Last update: 2024-09-24 02:37:13 UTC


README

Build Status

A simple Laravel artisan utility to backup MySQL database to AWS S3 bucket.

我通过创建一个备份 mysql 用户,并将该用户附加到所有要备份的数据库上来使用它。在多数据库环境中,它使得只选择处于生产状态的数据库变得更容易。

它保存到一个临时文件夹中,然后在上传到 AWS S3 后删除 $database.sql.gz 文件。

它还会清理 S3 文件夹,删除两个月前的每日备份,但保留每月的第一份备份。

事件

MonasheeBackupSuccess 在完成时触发,并传递 $databases 数组

MonasheeBackupFail 在异常时触发,并传递 $e->getTraceAsString()

安装

要求

  • PHP 5.4+
  • Laravel 4.2+

通过 Composer 安装,将以下行添加到 composer.json 文件的 require 块中

"monashee/backup": "dev-master"

然后运行 composer update

将此行添加到 app/config/app.php 文件中的 providers 数组中

'Monashee\Backup\BackupServiceProvider',

配置

在您的根目录中创建或编辑 .env.php 文件。复制配置设置并编辑字段。

<?php

return [
    'BACKUP_MYSQL_HOST'     => 'host',
    'BACKUP_MYSQL_USER'     => 'user',
    'BACKUP_MYSQL_PASSWORD' => 'password',
    'BACKUP_MYSQLDUMP_PATH' => '/usr/bin/mysqldump',
    'BACKUP_AWS_KEY'        => 'key',
    'BACKUP_AWS_SECRET'     => 'secret',
    'BACKUP_S3_BUCKET'      => 'bucket',
    'BACKUP_S3_REGION'      => 'us-west-2',
    'BACKUP_STORAGE_PATH'   => 'monashee/backup/'
];

AWS S3 区域 http://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region

使用方法

php artisan monashee:backup

在控制台测试以确保没有错误。我发现创建一个名为 backup 的 MySQL 用户并将其添加到所有要备份的数据库中更容易。

设置 cron 作业以在需要时触发命令。

注意

它使用 mysqldump 命令创建备份。 更多信息 mysqldump

mysqldump 至少需要 SELECT 权限来导出表,SHOW VIEW 来导出视图,TRIGGER 来导出触发器,以及 LOCK TABLES(如果未使用 --single-transaction 选项)。某些选项可能需要其他权限,如选项描述中所述。

要重新加载转储文件,您必须具有通过手动发出 CREATE 语句创建每个导出对象所需的相同权限。

\Monashee\Backup\Dump.php 有 mysqldump 选项