如何将AWS RDS手动快照保存在s3存储桶(在同一帐户中)上? Aws是否会为自动RDS快照收费?
你们对此有解决方案吗?
谢谢。
答案 0 :(得分:1)
我们如何将AWS RDS手动快照保存在s3存储桶中 帐户)?
您不能。 AWS不提供对快照原始数据的访问。
Aws是否会为自动RDS快照收费?
是的,AWS为快照使用的存储空间收费。
答案 1 :(得分:0)
只能通过RDS控制台/ CLI访问RDS快照。
如果要将数据导出到自己的S3存储桶,则需要直接从数据库实例中获取该信息。像mysqldump
之类的东西
如果您使用自动快照,则AWS将向您收费。
这是我过去用来将MySQL / Aurora RDS备份到S3存储桶的脚本:
#!/usr/bin/env bash
set -o errexit
set -o pipefail
set -o nounset
function log {
echo "[`date '+%Y-%m-%d %H:%M:%S.%N'`] $1"
}
: ${MYSQL_USER:=root}
: ${MYSQL_PASS:=root}
: ${MYSQL_HOST:=127.0.0.1}
: ${MYSQL_PORT:=3306}
if [ -z "${AWS_S3_BUCKET-}" ]; then
log "The AWS_S3_BUCKET variable is empty or not set"
exit 1;
fi;
EXCLUDED_DATABASES=(Database information_schema mysql performance_schema sys tmp innodb)
YEAR=$(date '+%Y')
MONTH=$(date '+%m')
DAY=$(date '+%d')
TIME=$(date '+%H-%M-%S')
if [ -z "${MYSQL_DATABASE-}" ]; then
DATABASES=$(/usr/bin/mysql --host="$MYSQL_HOST" --port="$MYSQL_PORT" --user="$MYSQL_USER" --password="$MYSQL_PASS" -e "SHOW DATABASES;" | cut -d ' ' -f 1)
else
DATABASES=("$MYSQL_DATABASE")
fi;
for DATABASE in $DATABASES; do
for EXCLUDED in ${EXCLUDED_DATABASES[@]}; do
if [ "$DATABASE" == "$EXCLUDED" ]; then
log "Excluded mysqlbackup of $DATABASE"
continue 2
fi;
done
log "Starting mysqlbackup of $DATABASE"
AWS_S3_PATH="s3://$AWS_S3_BUCKET/path-to-folder/$DATABASE.sql.gz"
mysqldump --host="$MYSQL_HOST" --port="$MYSQL_PORT" --user="$MYSQL_USER" --password="$MYSQL_PASS" "$DATABASE" | gzip | AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY aws s3 cp - "$AWS_S3_PATH"
log "Completed mysqlbackup of $DATABASE to $AWS_S3_PATH"
done