обзор проблемы.
- Кластер RDS настроен с двумя экземплярами RDS (rdslab0 и rdslab1), где rdslab0 используется в качестве реплики чтения rdslab1.
- Кроме тогодля резервных копий RDS выборочные дампы базы данных выполняются из экземпляра EC2 через crontab root (crontab -l) с использованием операторов mysqldump.
- Сценарий оболочки, выполняющий эти резервные копии каждую ночь, хранится в /root/db-backup.sh.'db' - это база данных в этом экземпляре mysql RDS.
- Скрипт содержит несколько операторов mysqldump, при запуске сохраняющих файлы резервных копий mysql .sql.gz в «резервные копии» корзины s3.
- Сценарий работал хорошо до недели назад, но затем начал сохранять пустые файлы уже несколько дней. На данный момент в S3 папки db-schema-backups, db-database-backups имеютэти соответствующие файлы mysqldump .sql.gz сохранены, но файлы не содержат никакого реального содержимого резервной копии.
- Я не уверен, является ли это проблемой с оператором mysqldump, разрешениями IAM, разрешениями БД или чем-то еще, но файлы сохраняются пустыми.Например, файлы резервных копий сохраняются в байтах вместо их фактических размеров в килобайтах и мегабайтах.
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}]'