coreproc / laravel-db-backup
Requires
- php: >=5.4.0
- aws/aws-sdk-php-laravel: 1.*
- illuminate/database: 4.2.*
- illuminate/support: 4.2.*
- symfony/finder: 2.*
Requires (Dev)
- laravel/framework: 4.2.*
- mockery/mockery: dev-master
- orchestra/testbench: 2.2.*
- satooshi/php-coveralls: 0.6.*
README
Artisan 命令用于备份数据库。为 Laravel 4.2 构建。最初是从 schickling/laravel-backup 分支中 fork 出来,但修改了更多功能,如从 Amazon S3 保留数据和 Slack 通知。
快速开始
所需设置
在 composer.json
文件的 require
键中添加以下内容
"coreproc/laravel-db-backup": "0.*"
运行 Composer 更新命令
$ composer update
在你的 app/config/app.php
中,将 'Coreproc\LaravelDbBackup\LaravelDbBackupServiceProvider'
添加到 $providers
数组的末尾
'providers' => array(
'Illuminate\Foundation\Providers\ArtisanServiceProvider',
'Illuminate\Auth\AuthServiceProvider',
...
'EllipseSynergie\ApiResponse\Laravel\ResponseServiceProvider',
'Coreproc\LaravelDbBackup\LaravelDbBackupServiceProvider',
),
用法
基本用法
你可以使用以下命令行快速备份数据库
php artisan db:backup
此命令将备份你的 Laravel 应用程序连接到的数据库。这意味着将使用 app/config/database.php
中的 default
配置。
默认情况下,文件将保存到 app/storage/dumps
路径,并以如下方式命名: {database_name}_{unix_timestamp}.sql
。
如果你想使用其他数据库,只需在 connection
值中添加另一个配置。在 app/config/database.php
中的示例配置如下
'connections' => array(
'dbconnection1' => array(
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'db1',
'username' => 'user',
'password' => 'password',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'slackWebhookPath' => 'T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX'
),
'dbconnection2' => array(
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'db1',
'username' => 'user',
'password' => 'password',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'slackWebhookPath' => 'T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX'
),
),
所以,如果你想备份,比如 dbconnection2,你需要在 artisan 命令中添加 --database
选项。
php artisan db:backup --database=dbconnection2
Slack 集成
Slack 是一个团队沟通的平台/服务。使用 Incoming Webhooks 集成,你可以向团队 Slack 中的任何频道发送实时消息。
请注意,我们在数据库配置中添加了一个额外的变量(slackWebhookPath
)。要开始接收数据库备份通知,你首先需要在 Slack 团队中添加 Incoming Webhooks 集成。设置完成后,你将获得一个唯一的 Webhook URL
,看起来像这样:https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX
。只需复制你的唯一 webhook 路径(T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX
)并将其添加到数据库配置中。
要禁用 Slack 集成,要么留空值,或者你可以使用 --disable-slack
选项手动禁用 Slack 通知。以下是一个示例
``php artisan db:backup --database=dbconnection2 --disable-slack`
上传到 Amazon S3
要将文件上传到你的 Amazon S3 存储桶,你首先需要输入你的 AWS 设置。默认情况下,此包附带 aws/aws-sdk-php-laravel 包,因此我们将从那里修改设置。
要生成 AWS 库的配置文件,你需要使用以下命令生成它
php artisan config:publish aws/aws-sdk-php-laravel
你将在以下路径找到 AWS 配置文件: app/config/packages/aws/aws-sdk-php-laravel/config.php
。填写适当的值。
要上传数据库备份到 S3,请使用 --upload-s3
选项
php artisan db:backup --database=dbconnection2 --upload-s3=s3_bucket_name
将 --upload-s3
的值更改为你想要上传到的存储桶的名称。
如果你只想保留 S3 备份,设置 --s3-only
,这将删除 S3 上传启用时本地备份的副本。
php artisan db:backup --database=dbconnection2 --upload-s3=s3_bucket_name --s3-only=true
数据库保留(目前仅支持 S3)
如果您只想保留数据库的一定数量副本,可以将 --data-retention-s3
选项设置为希望保留数据的天数。以下是一个示例:
php artisan db:backup --database=dbconnection2 --data-retention=30
更改文件名
您可以使用 --filename
选项更改备份文件的名称。所有文件名都将附加 Unix 时间戳。
php artisan db:backup --database=dbconnection2 --filename=test
保存为 ZIP 归档
要创建 ZIP 归档而不是原始 .sql 文件,请设置 --archive
值。
php artisan db:backup --database=dbconnection2 --data-retention=30 --archive=true