asmbs/mysql-s3-backup

管理MySQL数据库到Amazon S3的备份

v2.0.3 2020-01-22 16:14 UTC

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+

安装

  1. 创建一个空的、非版本化的S3存储桶。脚本第一次运行时,将为您创建4个文件夹(“yearly”,“monthly”,“daily”和“hourly”)。

  2. config.yaml.dist复制到同一目录下名为config.yaml的新文件中,并根据下面的配置参考进行配置。

  3. 安装依赖项

    composer install
    
  4. 设置一个单独的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