RDS for MySQL支持哪些存储引擎
数据库存储引擎就是一种数据存储方式。使用数据存储引擎实现 存储、处理和保护数据的核心服务 。利用数据库引擎可控制访问权限并快速处理事务,从而满足企业内大多数需要处理大量数据的应用程序要求。
InnoDB存储引擎
MySQL数据库只有InnoDB存储引擎支持完整的备份、恢复等服务功能,因此RDS for MySQL推荐使用InnoDB引擎。
其他存储引擎
在MySQL 5.6.40、MySQL 5.7.22 以上的版本中,不支持的存储引擎如下表所示:
存储引擎约束限制
引擎 | 原因 |
---|---|
MyISAM引擎 | MyISAM引擎表不支持事务,仅支持表级别锁,导致读写操作相互冲突。 MyISAM对数据完整性的保护存在缺陷,且这些缺陷会导致数据库数据的损坏甚至丢失。 MyISAM在出现数据损害情况下,很多都需要手动修复,无法通过产品服务提供的恢复功能进行数据恢复。 MyISAM向InnoDB的迁移透明,大多数情况不需要改动建表的代码,云数据库自动转换InnoDB即可完成迁移。 |
FEDERATED引擎 | 主备实例支持FEDERATED引擎会导致在远端数据库上相同DML重复执行,导致数据错乱。 FEDERATED引擎会在时间点恢复场景,当全量恢复完成后,远端数据库上数据不会跟随全量备份恢复到全备时的数据状态,在增量恢复阶段再应用数据会导致FEDERATED表数据错乱。 |
Memory引擎 | 如果内存表隐式的变空,那在Open表的时候数据库就会自己产生一个DELETE event到binlog中。这样当HA集群使用了内存表,那么重启HA,备库(或者只读库)就会自己产生一个自己的GTID,导致主备不一致,进而引发备库重建,甚至导致备库会不停的重建。 使用Memory表,会存在OOM的风险,导致服务被终止。 |
RDS使用的什么存储
关系型数据库存储采用云硬盘,关于云硬盘具体信息,请参见《云硬盘用户指南》。
关系型数据库的备份数据存储采用对象存储服务,不占用用户创建的数据库空间。关于关系型数据库实例存储的硬件配置,请参见《对象存储服务用户指南》。
RDS是否支持存储类型变更,普通IO转超高IO
不支持。当RDS实例已经创建成功后,不支持存储类型的变更。
数据超过了RDS实例的最大存储容量怎么办
问题症状
RDS数据库的磁盘空间满,导致实例变为只读状态,或者应用无法对RDS数据库进行读写操作,从而影响业务。
问题原因
- 数据空间占用过大。
- 由于大量的事务和写入操作产生了大量的RDS for MySQL binlog日志文件。
- 应用中存在大量的排序查询,产生了过多的临时文件。
解决方案
- 针对数据空间过大,如果实例变为只读状态,您可以先联系技术人员解除只读状态,再删除无用的历史表数据进行释放空间(清理整张表使用DROP或TRUNCATE操作;删除部分数据,使用DELETE操作。如果是执行DELETE操作,需要使用OPTIMIZE TABLE来释放空间);如果实例非只读状态,则可以直接执行删除操作;如果没有可删除的历史数据,需要进行磁盘扩容。
- 如果是RDS for MySQL binlog日志文件占用过多,可以联系技术人员清除本地的RDS for MySQL binlog日志,来释放磁盘空间。
- 针对大量排序查询导致的临时文件过大,建议进行优化SQL查询。
如果上述几种解决方案无效,就需要采用分库分表的方案。