Форма резервного копирования базы данных RDS на S3 сохраняет пустые резервные файлы sql.gz - Как устранить неполадки - PullRequest
0 голосов
/ 20 сентября 2018

обзор проблемы.

  • Кластер 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}]'
...