# 管理磁盘容量
#### 功能介绍
在使用数据库实例的过程中，当前磁盘空间数据与日志的占比以及历史上涨情况往往是用户关心的重点。RDS for MySQL提供了容量预估功能，可以方便地查看磁盘空间分布状况与磁盘空间变化趋势。此外还提供了智能扩容、表智能诊断、Top50库表等高级智能运维功能。
表1功能介绍 
| 功能模块      | 描述                                                                         | 相关操作                                                                        |
|:---|:---|:---|
| 容量空间概况    | 空间概况模块展示了当前实例磁盘的空间使用率、剩余可用空间以及磁盘总空间大小、近一周日均增长量、预计可用天数等信息，可快速了解实例空间的整体情况。 | [查看空间概况]      |
| 表智能诊断       | 表智能诊断可以帮助您诊断"单表空间增长异常表"、"无主键表"、"无索引表"的异常情况。                               | [表智能诊断]  |
| 磁盘空间分布及变化趋势 | 支持查看实例磁盘空间的分布情况及磁盘空间的变化趋势。                                                  | [磁盘空间变化趋势]  |
| Top库表分析      | 支持查看物理文件大小Top50库表，可结合磁盘空间的分布情况，识别占用较高的库表并进行优化。                           | [库表大小统计] |
| 表碎片清理       | 在Top50表，针对指定的非系统表提供表碎片清理功能。                                                 | [表碎片清理]                               |
   
#### 操作步骤
- [查看空间概况]
  
  1. [登录RDS管理控制台](https://console.huaweicloud.com/rds/#/rds/management/list)。
  
  2. 单击管理控制台左上角的![](https://support.huaweicloud.com/usermanual-rds-mysql/zh-cn_image_0000002593882307.png)，选择区域。
  
  3. 在"实例管理"页面，选择目标实例，单击实例名称，进入实例的"概览"页签。
  
  4. 在左侧导航栏选择"智能DBA助手"下的"容量预估"。
  
  5. 查看磁盘空间使用情况，容量不足时，及时扩容磁盘或[开启存储空间自动扩容](https://support.huaweicloud.com/usermanual-rds-mysql/rds_05_0039.html)。
     
     图1空间概况   
     ![](https://support.huaweicloud.com/usermanual-rds-mysql/zh-cn_image_0000002679998568.png "点击放大")
     如果近一周日均增长为0GB，即近一周没有容量的使用，预计可用"无限"天，可用天数将不展示。
     如果磁盘空间（包括数据空间、Binlog、Slowlog、Relaylog、Audit log、临时空间、其他空间）对应的文件总数超过1万个，界面上不会展示磁盘空间分布数据和空间变化趋势，为避免采集大量文件信息消耗性能，请[提交工单](https://console.huaweicloud.com/ticket/?locale=zh-cn#/ticketindex/createIndex)处理。
     - 数据空间：用户数据（包括临时表文件以及数据库生成的ib_logfile文件）占用的磁盘空间。
     
     - Binlog：Binlog日志占用的磁盘空间。
     
     - Slowlog：慢日志占用的磁盘空间。
     
     - Relaylog：Relaylog日志占用的磁盘空间。
     
     - Audit log：审计日志占用的磁盘空间。
     
     - 临时空间：临时文件占用的磁盘空间。
     
     - 其他空间：数据库的系统表空间ibdata1, ib_buffer_pool, ib_doublewrite, error.log等文件占用空间，以及操作系统预留空间，系统预留大小预计是磁盘5%左右。
     
     
     
     
   
- [表智能诊断]
  
  表智能诊断可帮您诊断"单表空间增长异常表"、"无主键表"、"无索引表"，升级至高级版智能DBA助手可以使用。
  1. 在"容量预估"页签，查看表智能诊断。 
     图2表智能诊断   
     ![](https://support.huaweicloud.com/usermanual-rds-mysql/zh-cn_image_0000002706771110.png "点击放大")
     
     
  
  2. 单击"升级高级版"，在弹框中，了解增值功能以及费用说明。 
     图3升级高级版智能DBA助手   
     ![](https://support.huaweicloud.com/usermanual-rds-mysql/zh-cn_image_0000002736650687.png "点击放大")
     
     
  
  3. 升级后，可以查看当前实例的表诊断结果。 
     图4表诊断结果   
     ![](https://support.huaweicloud.com/usermanual-rds-mysql/zh-cn_image_0000002679838698.png "点击放大")
     
     
  
  4. 单击自动诊断后的![](https://support.huaweicloud.com/usermanual-rds-mysql/zh-cn_image_0000002247222405.png)，在弹框中，自定义诊断阈值，单击"确定"。
     
     图5自定义诊断阈值   
     ![](https://support.huaweicloud.com/usermanual-rds-mysql/zh-cn_image_0000002679838700.png "点击放大")
     
     
   
- [磁盘空间变化趋势]
  
  支持查看实例磁盘空间的变化趋势、以及诊断磁盘空间的使用情况。
  图6磁盘空间变化趋势   
  ![](https://support.huaweicloud.com/usermanual-rds-mysql/zh-cn_image_0000002709558727.png "点击放大")
  1. 在趋势变化图上方，单击"趋势诊断"，选择诊断区间，单击"确定"。
     - 诊断耗时一般为分钟级，且仅能查询一小时内诊断结果，过期后请重新发起诊断。
     
     - 若结束时间非当前时间，不诊断临时文件。
     
     
     图7趋势诊断   
     ![](https://support.huaweicloud.com/usermanual-rds-mysql/zh-cn_image_0000002679838894.png) 
  
  2. 诊断完成后，单击"趋势诊断结果查询"。
  
  3. 在弹框中，单击"诊断详情"，查看各诊断项的处理建议。
     图8查看诊断结果   
     ![](https://support.huaweicloud.com/usermanual-rds-mysql/zh-cn_image_0000002709678579.png "点击放大") 
   
- [库表大小统计]
  
  可查看物理文件大小Top50库表，结合磁盘空间的分布情况，识别占用较高的库表并进行优化。
  - 物理文件大小为精确采集数据，其余指标为预估值（存在误差），如差距较大建议对目标表执行ANALYZE TABLE。
  
  - 库名，表名中包含保留特殊字符时无法正常统计，包括"/"和"#p#p"。
  
  - 实例内存大于85%或者实例总计表数量超过5万时，为了不影响实例，不会采集数据。
  
  
  图9TOP 50库   
  ![](https://support.huaweicloud.com/usermanual-rds-mysql/zh-cn_image_0000002247142285.png "点击放大")
  单击"查看趋势"，可以查看近7天、近30天、自定义时间段（时间跨度在30天内）的数据量变化情况。
  图10查看数据趋势   
  ![](https://support.huaweicloud.com/usermanual-rds-mysql/zh-cn_image_0000002212062520.png "点击放大")
- [表碎片清理]
  
  在Top50表，针对指定的非系统表提供表碎片清理功能。
  - 实例在执行其他任务期间不允许下发表碎片清理，避免任务失败。
  
  - 每张表碎片清理任务互斥，需要排队执行，减少对实例的性能影响。
  
  - 碎片清理即对表执行optimize优化，优化期间会有短暂锁表操作。
  
  - 一般执行时间较长，且较为占用资源（必须预留被optimize表1.5倍大小的磁盘空间）。
  
  - 取消表碎片清理任务会导致MyISAM引擎表损坏不可用，请谨慎操作。
  
  - 清理完表碎片后会更新当前表碎片数据。
  
  - 清理主备实例和集群版实例的表碎片时，如果不勾选"仅清理备节点"，表示清理实例下所有节点的表碎片；如果勾选"仅清理备节点"，表示只清理实例下备节点的表碎片。
  
  
  在Top50表页面，单击目标表操作列的"碎片清理"，选择执行时间，单击"确定"，在弹出提示框中二次确定。
  图11立即执行表碎片清理   
  ![](https://support.huaweicloud.com/usermanual-rds-mysql/zh-cn_image_0000002633272354.png "点击放大")
  图12可维护时间段执行表碎片清理   
  ![](https://support.huaweicloud.com/usermanual-rds-mysql/zh-cn_image_0000002663511587.png "点击放大")
  任务提交后，返回实例列表，在左侧导航栏，选择"任务中心"，查看表碎片清理任务的执行进度。
  - 对于执行方式为"立即执行"的任务：
    - 在"即时任务"页签，搜索"MySQL表碎片清理"任务，查看执行进度。
    
    - 即时任务执行过程中，单击"取消"，取消执行该任务。
     
  
  - 对于执行方式为"可维护时间段"的任务：
    - 在"定时任务"页签，搜索实例ID，查看该实例下表碎片清理的任务执行情况。
    
    - 定时任务为"待执行"状态，单击"取消"，取消执行该任务。
    
    - 定时任务执行过程中，会在"即时任务"下生成一条任务，取消该即时任务后，对应的定时任务会同步取消，任务状态为"失败"。
     
   
  更多操作，请参见[任务中心](https://support.huaweicloud.com/usermanual-rds-mysql/rds_task_0001.html)。
#### 常见问题
问题："磁盘空间满"问题如何处理？
解决方法：参考[磁盘满导致实例只读的限制说明](https://support.huaweicloud.com/usermanual-rds-mysql/zh-cn_topic_scale_cluster.html#zh-cn_topic_scale_cluster__section18619499194)，通过以下方式降低磁盘空间使用率，使数据库恢复正常的写入操作。
- 磁盘扩容：**磁盘扩容期间，服务不中断。** 您可以[设置存储空间自动扩容](https://support.huaweicloud.com/usermanual-rds-mysql/rds_05_0039.html)，在实例存储空间达到阈值时，会触发自动扩容。
- 减少磁盘数据：删除无用的历史表数据。
  1. 如果实例变为只读状态，您需要先[解除只读](https://support.huaweicloud.com/usermanual-rds-mysql/zh-cn_topic_scale_cluster.html#zh-cn_topic_scale_cluster__section1378617541603)状态。如果实例非只读状态，则可以直接执行删除操作。
  
  2. 查看物理文件大小Top50库表，识别可以删除的历史表数据，具体操作请参见[库表大小统计]。
  
  3. 在业务低峰期对碎片率高的表执行OPTIMIZE优化，以便释放空间。 清理整张表使用**DROP** 或**TRUNCATE** 操作。删除部分数据，使用**DELETE** 操作。如果是执行**DELETE** 操作，需要使用**OPTIMIZE TABLE**来释放空间。
     
   
- 对于大量排序查询导致的临时文件过大，建议优化SQL查询。 查询数据库的[慢SQL](https://support.huaweicloud.com/usermanual-rds-mysql/rds_08_0030.html)，分析数据量大，行数多，响应时间长的SQL语句，并进行优化。
  
 
