littlegiant / silverstripe-spindb
定期备份数据库,并使用轮换方式备份到AWS S3存储
1.0.0
2019-04-05 03:04 UTC
Requires
- aws/aws-sdk-php: ^3.69
- silverstripe/crontask: ^2.1
- silverstripe/environmentcheck: ^2.1
- silverstripe/framework: ^4.1
- silverstripe/vendor-plugin: ^1.0
- spatie/db-dumper: ^2.13
This package is auto-updated.
Last update: 2024-09-19 15:29:38 UTC
README
确保定期数据库备份并通过AWS S3进行异地存储。适用于需要保留客户数据的场景。
一个定时任务将定期创建网站的数据库备份,归档文件,并将它们上传到S3。模块还会轮换备份,以确保保留更多最近创建的备份,而较少的旧备份,以避免不必要地消耗空间。
默认计划是
- 每晚2点备份
- 保留7天的每日备份
- 保留4个月的月度备份
- 每年保留年度备份
可以通过配置调整默认计划
在以下情况下使用此模块
- 您正在运行SilverStripe 4.0及以上版本
- 您拥有小型到中型网站
- 在非PaaS提供商上自行托管
- 有权访问AWS存储桶
- 不想手动管理备份
如果以下情况不适用,则不要使用此模块
- 您的Web服务器磁盘空间有限
- 您的网站拥有庞大的数据库
- 您需要专业的存档/SLA存储和备份要求
- 深夜性能下降可能导致重大问题
安装
将您的模块安装到silverstripe项目中
composer require littlegiant/silverstripe-spindb
AWS配置
配置对您的AWS存储桶的访问。以下环境变量应在服务器上的env中直接配置,或在项目根目录中的.env
中配置。
SPINDB_AWS_S3_BUCKET="<thebucketname>" SPINDB_AWS_REGION="ap-southeast-2" # Or your aws region SPINDB_AWS_ACCESS_KEY_ID="<my-access-key>" SPINDB_AWS_SECRET_ACCESS_KEY="<my-secret>"
如果您想通过本地AWS凭据(存储在~/.aws/credentials
)进行认证,则可以提供配置文件名称。
SPINDB_AWS_S3_BUCKET="<thebucketname>" SPINDB_AWS_REGION="ap-southeast-2" # Or your aws region SPINDB_AWS_PROFILE="profilename" # The profile name containing your authentication credentials. Can be `default`
如果您在AWS上运行此站点,则可以通过IAM提供访问权限,并且您只需指定以下内容。这是模块运行所需的最小配置。
SPINDB_AWS_S3_BUCKET="<thebucketname>" SPINDB_AWS_REGION="ap-southeast-2" # Or your aws region
默认情况下,数据库备份写入到存储桶中的{baseurl}/db_{date}{ext}
路径,但这可以配置。
SPINDB_PATH="{baseurl}/db_{date}{ext}"
支持的变量
{baseurl}
BASE_URL
变量的值{date}
归档创建的日期(ISO_8601){time}
归档创建的时间(ISO_8601){ext}
创建的文件扩展名,例如.sql
或.zip
,具体取决于归档方法
计划/轮换配置
您可以配置任务发生的时间,甚至它运行的频率。
SPINDB_SCHEDULE="0 2 * * *" # Every night at 2am
如果您想更少地备份,可以调整日期
SPINDB_SCHEDULE="0 2 */2 * *" # Every second night at 2am
您可以配置每日、每周、每月和每年的备份数量
以下每一项,0表示不保留备份,-1表示保留无限备份(请谨慎使用)
SPINDB_KEEP_DAILY="7" # Default to 1 week of backups SPINDB_KEEP_WEEKLY="0" # Default to no weekly backups SPINDB_KEEP_WEEKLY_DAY="0" # If keeping weekly backups set the day of the week to keep (0/7 = sunday, 1 = monday, etc). SPINDB_KEEP_MONTHLY="4" # Default to 4 months of monthly backups SPINDB_KEEP_MONTHLY_DAY="1" # Day of the month to keep. Archaic 1-based index sorry. SPINDB_KEEP_YEARLY="-1" # Default to keep unlimited yearly backups. SPINDB_KEEP_YEARLY_DAY="0" # Day of the year to keep. 0-365. (0 is Jan 1) SPINDB_ARCHIVE="gzip" # Set archive mode. Supports `gzip` / `none`
您还可以配置一个警报电子邮件,在创建备份时通知您。
SPINDB_ALERT_EMAIL="webmaster@littlegiant.co.nz"