asmbs / mysql-s3-backup
管理MySQL数据库到Amazon S3的备份
v2.0.3
2020-01-22 16:14 UTC
Requires
- php: >=7.2
- aws/aws-sdk-php: ^3.61
- ifsnop/mysqldump-php: ^2.7
- symfony/console: ^4.3
- symfony/yaml: ^4.1
This package is auto-updated.
Last update: 2024-09-21 19:25:58 UTC
README
管理MySQL数据库到Amazon S3的备份
要求
- PHP 7.2+
- MySQL 4.1.0+
- Composer 1.6.5+
安装
-
创建一个空的、非版本化的S3存储桶。脚本第一次运行时,将为您创建4个文件夹(“yearly”,“monthly”,“daily”和“hourly”)。
-
将
config.yaml.dist
复制到同一目录下名为config.yaml
的新文件中,并根据下面的配置参考进行配置。 -
安装依赖项
composer install
-
设置一个单独的
cron
作业,每小时执行一次MySQLS3Backup.php
。使用crontab
,一个示例行将是0 * * * * php /path/to/mysql-s3-backup/src/MySQLS3Backup.php app:manage
备份文件将以YYYY-MM-DD_HH-MM-SS.EXT
的格式创建,其中EXT
是根据选择的压缩方法确定的文件扩展名(“None”对应“sql”,“Gzip”对应“gz”,“Bzip2”对应“bz2”)。文件名不应在存储桶内更改,否则脚本将无法识别文件。
用法
您可以通过运行以下命令手动执行“manage”命令
php src/MySQLS3Backup.php app:manage
要下载使用客户端加密上传的以前版本的转储,必须使用“download-encrypted”命令下载。您可以通过运行以下命令来完成此操作
php src/MySQLS3Backup.php app:download-encrypted "hourly/2019-06-19_16-07-24.sql.gz" --output-file="/var/tmp/bar.sql.gz"
配置参考
s3
参数
version
要使用的S3版本region
要使用的S3区域凭证
key
您的S3密钥secret
您的S3密钥
客户端加密
enabled
如果设置为true,则将转储文件使用AWS KMS管理的客户主密钥的客户端加密传输到S3。如果设置为false,则使用纯非加密传输。参数
版本
区域
凭证
密钥
密钥
key_arn
要使用的KMS管理的客户密钥的ARN。通常,这将以“arn:aws:kms”开头。加密选项
- 应为“cbc”或“gcm”。请参阅AWS PHP SDK文档。
- 应为“128”、“192”或“256”。请参阅AWS PHP SDK文档。
sns
enabled
如果设置为true,则异常将发送到Amazon SNS主题。如果设置为false,则异常将简单地输出。参数
版本
区域
凭证
密钥
密钥
topic_arn
要使用的Amazon SNS主题的ARN。通常,这将以“arn:aws:sns”开头。
mysql
host
您数据库所在的主机dbname
您的数据库名称username
MySQL使用的用户名password
MySQL使用的密码
app
output
如果设置为true,则将输出信息。如果设置为false,则脚本将静默运行(除了异常)。compression
要使用的压缩算法。这应该是‘None’、‘Gzip’或‘Bzip2’。请注意,bzip2支持默认未在PHP中启用。maximum_backup_counts
这是根据每个时间周期保留的最大备份数量。例如,将‘yearly’设置为‘7’将保留过去7年的每个备份。当日滚动时,将使用最近的‘hourly’备份。yearly
monthly
daily
hourly
mirror_default_opt
如果设置为 true,则导出设置将镜像 MySQL 原始mysqldump
的默认--opt
设置。add_sql_extension
如果设置为 true,则在压缩备份中,会在压缩扩展名(例如.gz
)之前添加.sql
。