文档简介:
存储类
Q:RDS for MySQL支持哪些存储引擎
A:数据库存储引擎就是一种数据存储方式。使用数据存储引擎实现存储、处理和保护数据的核心服务。利用数据库引擎可控制访问权限并快速处理事务,从而满足企业内大多数需要处理大量数据的应用程序要求。
云数据库MySQL数据库只有InnoDB存储引擎支持完整的备份、恢复等服务功能,因此RDS for MySQL推荐使用InnoDB引擎。
在MySQL 5.6.40、MySQL 5.7.22 以上的版本中,不再支持如下存储引擎,主要原因如下:
RDS for MySQL目前不支持MyISAM引擎,主要原因如下:
l MyISAM引擎表不支持事务,仅支持表级别锁,导致读写操作相互冲突。
l MyISAM对数据完整性的保护存在缺陷,且这些缺陷会导致数据库数据的损坏甚至丢失。
l MyISAM在出现数据损害情况下,很多都需要手动修复,无法通过产品服务提供的恢复功能进行数据恢复。
l MyISAM向InnoDB的迁移透明,大多数情况不需要改动建表的代码,云数据库自动转换InnoDB即可完成迁移。
RDS for MySQL目前不支持FEDERATED引擎,主要原因如下:
l 主备实例支持FEDERATED引擎会导致在远端数据库上相同DML重复执行,导致数据错乱。
l FEDERATED引擎会在时间点恢复场景,当全量恢复完成后,远端数据库上数据不会跟随全量备份恢复到全备时的数据状态,在增量恢复阶段再应用数据会导致FEDERATED表数据错乱。
RDS for MySQL目前不支持Memory引擎,主要原因如下:
l 如果内存表隐式的变空,那在Open表的时候数据库就会自己产生一个DELETE event到binlog中。这样当HA集群使用了内存表,那么重启HA,备库(或者只读库)就会自己产生一个自己的GTID,导致主备不一致,进而引发备库重建,甚至导致备库会不停的重建。
l 使用Memory表,会存在OOM的风险,导致服务被终止。
Q:RDS存储的存储配置是什么
A:关系型数据库存储采用云硬盘,关于云硬盘具体信息,请参见《云硬盘用户指南》。
关系型数据库的备份数据存储采用对象存储服务,不占用用户购买的数据库空间。关于关系型数据库实例存储的硬件配置,请参见《对象存储服务用户指南》。
Q:数据超过了RDS实例的最大存储容量怎么办
A:问题症状
RDS数据库的磁盘空间满,导致应用无法对RDS数据库进行读写操作,从而影响业务。
问题原因
1. 数据空间占用过大。
2. 由于大量的事务和写入操作产生了大量的binlog日志文件。
3. 应用中存在大量的排序查询,产生了过多的临时文件。
解决方案
4. 针对数据空间过大,可以删除无用的历史表数据进行释放空间(DROP或TRUNCATE操作,如果是执行DELETE操作,需要使用OPTIMIZE TABLE来释放空间);如果没有可删除的历史数据,需要进行磁盘扩容。
5. 如果是binlog日志文件占用过多,可以联系技术人员清除本地的binlog日志,来释放磁盘空间。
6. 针对大量排序查询导致的临时文件过大,建议进行优化SQL查询。
7. 如果上述几种解决方案无效,就需要采用分库分表的方案。
Q:哪些内容会占用用户所购买的RDS实例空间
A:用户正常的数据(不包括备份数据),以及关系型数据库实例正常运行所需的数据(比如系统数据库、数据库回滚日志、重做日志、索引等)。同时,包含如下关系型数据库的必要日志文件:
l MySQL数据库产生的Binlog日志。
l PostgreSQL数据库服务器产生的日志文件。
l Microsoft SQL Server数据库产生的日志文件(Microsoft SQL Server日志、默认的Trace文件和代理日志文件等)。
这些文件保证关系型数据库实例正常稳定地运行。
Q:用户申请的RDS实例磁盘空间会有哪些系统开销
A:您申请的磁盘空间会有必要的文件系统开销,这些开销主要包括inode、reserved block,以及数据库运行必需的空间。
占用RDS磁盘空间的日志及文件有哪些
A:占用关系型数据库实例的磁盘空间的日志及文件如下表:
数据库引擎 |
文件类型 |
MySQL |
日志文件:数据库undo-log、redo-log和Binlog文件。 |
数据文件:数据库内容文件和索引文件。 |
|
其他文件:ibdata、ib_logfile0和临时文件等。 |
|
PostgreSQL |
日志文件:数据库错误日志文件和事务日志文件。 |
数据文件:数据库内容文件、索引文件、复制槽数据文件、事务状态数据文件和数据库配置文件。 |
|
其他文件:临时文件。 |
|
Microsoft SQL Server |
日志文件:数据库的错误日志、事务日志文件和跟踪文件。 |
数据文件:数据库内容文件。 |
解决方案
1. 随着业务数据的增加,原来申请的数据库磁盘容量可能会不够用,您需要为关系型数据库实例进行扩容。
2. 针对数据空间过大,可以删除无用的历史表数据进行释放空间(DROP或TRUNCATE操作,如果是执行DELETE操作,需要使用OPTIMIZE TABLE来释放空间);如果没有可删除的历史数据,需要进行磁盘扩容。
3. 针对大量排序查询导致的临时文件过大,建议进行优化SQL查询。
a. 应用中存在大量的排序查询,产生了大量的临时文件。
b. 短期内大量增、删、改,产生大量binlog文件占用空间。
c. 由于大量的事务和写入操作产生了大量的binlog日志文件。
4. 云监控服务(Cloud Eye)目前可以监控存储空间的大小、使用量、利用率等,并且设置告警策略。
Q:用户必须进行DDL操作时对磁盘空间的要求
A:为了确保业务正常,您应该避免在业务高峰进行DDL(Data Definition Language)等可能导致磁盘空间爆增的操作,必须进行DDL操作时,请务必确保磁盘空间大于等于表空间两倍大小+10GB,即:假设您的表空间为500GB,那么,您在进行DDL操作时,需确保磁盘空间大于等于500*2+10=1010GB。