如何每天自动定期上传DB备份文件到AWS S3 ?



我们有一个使用SQL Server数据库的ERP系统,它每天在Windows PC上生成数据库备份文件。

我们的经理希望实现每天自动定期上传当天的DB备份文件并保存到AWS S3桶中。我们已经为此注册了一个AWS帐户,并专门创建了一个存储桶。考虑到AWS S3的存储成本,我们希望只保留最近的10个DB备份文件在bucket中。.

看来我们需要AWS S3 CLI和一些脚本编码来实现这个需求。它应该在。bat代码或Windows Power Shell脚本代码中实现吗?如何查看S3桶中是否已经有10个DB备份文件?如果是,在上传最新的文件之前,如何删除最旧的文件?

是否有类似的示例代码?谢谢!

您可以为此创建一个cron作业。您还需要安装aws cli。如果您在linux中托管数据库,那么以下代码可能会对您有所帮助:

#!/bin/bash
NOW=$(date +"%Y-%m-%d")
NOW_TIME=$(date +"%Y-%m-%d %T %p")
NOW_MONTH=$(date +"%Y-%m")
MYSQL_HOST="localhost"
MYSQL_PORT="3306"
MYSQL_DATABASE="wordpress"
MYSQL_USER="user"
MYSQL_PASSWORD="password"
BACKUP_DIR="/home/mkyong/backup/$NOW_MONTH"
BACKUP_FULL_PATH="$BACKUP_DIR/$MYSQL_DATABASE-$NOW.sql.gz"
AMAZON_S3_BUCKET="s3://mkyong/backup/linode/mysql/$NOW_MONTH/"
AMAZON_S3_BIN="/home/mkyong/.local/bin/aws"
#################################################################
mkdir -p ${BACKUP_DIR}
backup_mysql(){
mysqldump -h ${MYSQL_HOST} 
-P ${MYSQL_PORT} 
-u ${MYSQL_USER} 
-p${MYSQL_PASSWORD} ${MYSQL_DATABASE} | gzip > ${BACKUP_FULL_PATH}
}
upload_s3(){
${AMAZON_S3_BIN} s3 cp ${BACKUP_FULL_PATH} ${AMAZON_S3_BUCKET}
}
backup_mysql
upload_s3

最新更新