当我在 RDS 中启动 Amazon MySQL 数据库实例时,我会为其选择分配的存储量。
当我创建快照(手动或使用自动备份)时,它在“存储”下显示与为实例分配的大小相同的大小,即使我的数据库没有达到那个大小。
由于亚马逊的定价(或免费套餐)取决于使用的存储量,我想知道我正在使用的实际存储大小,而不是原始数据库分配的大小。
通过查看帐户活动,并了解 mysqldump 的工作原理,我猜快照并没有真正包括分配的空白空间。
当我在 RDS 中启动 Amazon MySQL 数据库实例时,我会为其选择分配的存储量。
当我创建快照(手动或使用自动备份)时,它在“存储”下显示与为实例分配的大小相同的大小,即使我的数据库没有达到那个大小。
由于亚马逊的定价(或免费套餐)取决于使用的存储量,我想知道我正在使用的实际存储大小,而不是原始数据库分配的大小。
通过查看帐户活动,并了解 mysqldump 的工作原理,我猜快照并没有真正包括分配的空白空间。
我对这个问题的答案很感兴趣,谷歌搜索把我带到了这里。我很惊讶地看到,虽然有一个被接受的、赞成的答案,但它实际上并没有回答所提出的问题。
问的问题是:
如何判断 Amazon RDS 中 MySQL 数据库快照的原始大小?
但是,接受的答案实际上是这个问题的答案:
当我从源数据库获取 RDS 快照时,我是否会为源数据库的分配大小收费。
至于最初的问题 AFAICT,没有 API 或控制台函数来确定 RDS 快照使用的存储。DBSnapshot 资源已分配_storage ( ruby , java ),但这会返回创建数据库时请求的最大存储大小。这反映了 AWS RDS 控制台:
有人可能认为这会在 AWS 账单中列出,但它提供的细节很少。对于 RDS:
账单的 S3 部分就更没用了:
结论,没有办法告诉Amazon RDS 中 MySQL 数据库快照的原始大小。
根据常见问题,RDS 正在通过 EBS 存储:
Amazon RDS 使用 EBS 卷进行数据库和日志存储。
根据其定价页面,EBS 不存储空块:
由于数据在保存到 Amazon S3 之前已被压缩,并且 Amazon EBS 不保存空块,因此快照大小可能会大大小于您的卷大小。
根据详细信息页面,在制作初始快照后,仅对更改的块占用空间:
如果您的设备具有 100 GB 数据,但在上次快照后仅更改了 5 GB,则后续快照仅消耗 5 GB 额外的空间,并且您只需为额外的 5 GB 快照存储付费,即使之前和之后的快照存储都是如此快照显示完成。
RDS 备份是块级的完整虚拟机快照;根本不涉及 mysqldump。鉴于这一事实,您的每个快照将使用与备份发生时的生产实例完全相同的存储量。