RDS到S3的数据库备份表单保存了空的备份sql.gz文件-如何解决问题

时间:2018-09-19 21:13:22

标签: mysql amazon-web-services amazon-s3 amazon-rds

有关此问题的概述。

  • 使用两个RDS实例(rdslab0和rdslab1)设置RDS集群,其中rdslab0用作rdslab1的只读副本。
  • 除了RDS备份外,还使用mysqldump语句通过root的crontab(crontab -l)从EC2实例执行选择性数据库转储。
  • 每晚运行这些备份的Shell脚本存储在/root/db-backup.sh中。 “ db”是此mysql RDS实例上的数据库。
  • 该脚本包含多个mysqldump语句,运行时会将mysql .sql.gz备份转储文件保存到s3存储桶“ backups”中。
  • 脚本运行良好直到一周前,但是从几天开始就开始保存空文件。到目前为止,在S3中,db-schema-backups,db-database-backups文件夹分别具有这些文件mysqldump .sql.gz文件已保存,但文件不包含任何实际备份内容。
  • 我不确定这是否与mysqldump语句,IAM权限或数据库权限或其他问题有关,但是文件是否保存为空。例如,备份文件是以字节为单位保存的,而不是以KB和MB为单位的实际大小。

db-backup.sh

#!/bin/bash
#  Dump the db database from the RDS readreplica and move it to S3.
#  Dump the db database from the RDS readreplica and move it to S3.
#  S3 Bucket has policy access to only allow db-backup IAM User PutObject
#  mysqlbackup is used to backup files

bucketName="backups"
today=$(date +%d)
endPoint2="database-endpoint"

#All databases, routines, procedures, etc
mysqldump db --routines --triggers | gzip > /root/db-$(date +%Y%m%d).sql.gz
aws --profile db-backup s3 cp /root/db-$(date +%Y%m%d).sql.gz s3://dbaccount-backups/db-database-backups/
aws --profile db-backup s3api put-object-tagging --bucket $bucketName --key db-database-backups/db-$(date +%Y%m%d).sql.gz --tagging 'TagSet=[{Key=retention,Value=60}]'
rm /root/db-$(date +%Y%m%d).sql.gz

#Schema backups
mysqldump db --no-data  | gzip > /root/db-schema-$(date +%Y%m%d).sql.gz
aws --profile db-backup s3 mv /root/db-schema-$(date +%Y%m%d).sql.gz s3://dbaccount-backups/db-schema-backups/
aws --profile db-backup s3api put-object-tagging --bucket $bucketName --key db-schema-backups/db-schema-$(date +%Y%m%d).sql.gz --tagging 'TagSet=[{Key=retention,Value=14}]'

0 个答案:

没有答案