我在 Amazon RDS 上的 MySQL 数据库最近如何在大约 1.5 小时内从 10.5 GB 免费变为“存储已满”状态?
这是一个运行在 db.t2.micro 实例上的 15GB MySQL 5.6.27 数据库。通常每天只有几百 KB 被添加到它。
大约一天前,免费存储空间在大约 1.5 小时内从 10.5 GB 变为基本上 0 GB。写入 IOPS 图表仅显示在那段时间内我的常规低流量流量,因此显然数据必须是在服务器端生成的。
一个可能相关的说明是我的数据库有大约 7,000 个表,并且将 innodb_file_per_table 设置为 1。
类似的事件显然发生在 8 天前,但没有那么严重,我什至没有注意到它,因为它没有填满存储空间。
我不是数据库专家,这是我的一个业余爱好项目,所以我正在努力弄清楚如何开始解决这个问题!
我开始查看@RolandoMySQLDBA 提供的答案,我意识到我遗漏了一些非常有用的细节。
写入数据库的唯一系统是两个 EC2 实例,它们每 30 分钟写入一次,这与图中看到的存储减少相对应。
这两个系统都从网络上收集相同的数据,然后它们都尝试在半小时内将收集到的数据同时写入我的数据库。我使用两个数据收集系统只是为了冗余,并且我对我的写入例程进行了编码,以便每个系统将尝试使用 INSERT IGNORE INTO 写入其所有数据,因此无论哪个系统首先写入该特定数据,第二个系统的插入尝试是干脆忽略了。
在每 30 分钟发生一次的写入期间,除了一个表外,数据库中的数千个表中的每一个都插入了一行。该表中没有插入任何内容,但其(大约)2000 行中的每一行都会更新,一次一个。
在添加了大约 2.5GB 的数据后,我从一个点恢复了数据库的实例(8/16 上的事件,如第一个屏幕截图所示),这样我就可以运行命令而不会遇到“存储已满”错误。
在@RolandoMySQLDBA 的帮助下,我能够看到使用了多少 InnoDB 和 MyISAM 数据(如何监视 MySQL …