现象说明

  • 实例基本信息页实例状态为锁定中
  • 实例为锁定中时,无法INSERTUPDATE数据。
    说明 以RDS MySQL为例,会报错ERROR 1290 (HY000): The MySQL server is running with the LOCK_WRITE_GROWTH option so it cannot execute this statement

常见原因

  • 实例存储空间已满。
  • 账号欠费或实例到期。

实例存储空间已满处理方法

在实例基本信息页左下角查看实例存储空间是否已满。存储空间使用量

释放存储空间

  1. 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。
  2. 单击左侧导航栏的监控与报警,单击标准监控页签内的资源监控,查看实例各类数据占用的磁盘空间信息。资源监控
  3. 根据不同数据类型,清理对应磁盘空间。
    说明 数据无价,请您谨慎清理,如非必要,不推荐清理数据,请采用扩容存储空间方式解除锁定,如果必须清理,请在清理前对数据库进行备份,避免数据丢失。
    • 数据文件
      数据库引擎 处理方法
      MySQL
      1. 通过DMS连接实例,详情请参见通过DMS登录RDS数据库
      2. 执行以下SQL语句,查看数据库的表大小,确认其中可以删除的历史数据或无用数据。
        SELECT
            TABLE_NAME,
            concat(round((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024,2),'MB') AS DATA
        FROM
            information_schema. TABLES
        WHERE
            TABLE_SCHEMA = '<数据库名>'
        ORDER BY
            DATA + 0 DESC;
      3. 在对应数据库下使用DROP TABLE <表名>;命令清理数据。
      4. 清理后需要耐心等待一段时间(5分钟左右),RDS实例才会解锁。
      PostgreSQL
      1. 通过DMS连接实例,详情请参见通过DMS登录RDS数据库
      2. 执行以下SQL语句,查看数据库的表大小,确认其中可以删除的历史数据或无用数据。
        SELECT 
            table_schema || '.' || table_name AS table_full_name,
            pg_total_relation_size('"' || table_schema || '"."' || table_name || '"') AS size
        FROM
            information_schema.tables
        ORDER BY
            pg_total_relation_size('"' || table_schema || '"."' || table_name || '"') 
        DESC;
      3. 在对应数据库下使用DROP TABLE <表名>;命令清理数据。
      4. 清理后需要耐心等待一段时间(5分钟左右),RDS实例才会解锁。
      SQL Server
      1. 通过DMS连接实例,详情请参见通过DMS登录RDS数据库
      2. 执行以下SQL语句,查看数据库的表大小,确认其中可以删除的历史数据或无用数据。
         SELECT
              t.NAME AS TableName,
              CAST(ROUND(((SUM(a.used_pages) * 8) / 1024.00), 2) AS NUMERIC(36, 2)) AS UsedSpaceMB
         FROM
             sys.tables t
         INNER JOIN
             sys.indexes i ON t.OBJECT_ID = i.object_id
         INNER JOIN
             sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id
         INNER JOIN
             sys.allocation_units a ON p.partition_id = a.container_id
         LEFT OUTER JOIN
             sys.schemas s ON t.schema_id = s.schema_id
         WHERE 1=1
             AND t.is_ms_shipped = 0
             AND i.OBJECT_ID > 255
         GROUP BY
             t.Name, s.Name, p.Rows
         ORDER BY
             t.Name
      3. 在对应数据库下使用DROP TABLE <表名>;命令清理数据。
      4. 清理后需要耐心等待一段时间(5分钟左右),RDS实例才会解锁。
    • 日志文件
      引擎 处理办法
      MySQL 删除本地日志(Binlog)
      PostgreSQL RDS PostgreSQL日志文件不支持手动删除。
      SQL Server RDS SQL Server日志文件不支持手动删除。
    • 临时文件:重启实例。
      如果实例基本信息页中,重启实例按钮不可用,您可以通过如下方式触发实例重启。
      1. 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。
      2. 在左侧导航栏单击参数设置。
      3. 在可修改参数标签页,查看是否重启列,找到一个该列取值为的参数进行修改。
      说明 设置实例参数的具体操作,请参见设置实例参数
    • 系统文件:系统文件不支持清理。

扩容存储空间

  1. 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。
  2. 配置信息区域单击变更配置。扩容实例存储空间,更多信息,请参见变更配置
    说明 如果变更配置无法操作,请提交工单处理
  3. 完成支付后,在实例基本信息页右上角单击按钮按钮查看变配进度。变更配置进度
说明 变配任务结束后,等待约5分钟,如果实例状态仍为锁定中,请提交工单处理

账号欠费或实例到期处理方法

  • 包年包月:如果实例已到期且未续费,为实例续费后,等待5分钟查看实例状态是否为运行中。续费操作具体请参见手动续费
  • 按量付费:如果账号已欠费,为账号充值后,等待5分钟查看实例状态是否为运行中
说明 续费后,等待约5分钟,如果实例状态仍为锁定中,请提交工单处理

更多运维建议

建议您配置如下内容,避免实例被锁定。

  • 设置实例到期欠费预警提醒通知。
    1. 访问RDS管理控制台
    2. 单击页面右上方的通知图标,进入消息中心页面。
    3. 在左侧导航栏,单击基本接收管理
    4. 基本接收管理页面的消息类型中勾选产品的欠费、停服、即将释放相关信息通知,单击修改
    5. 修改消息接收人对话框, 勾选需通知的联系人,单击保存,即可完成设置。
  • 设置实例存储空间报警,建议设置存储空间大于90%时报警。具体操作请参见管理报警
  • 开启SQL洞察与审计,当存储空间突增时,结合监控与报警,查询存储空间增长期间的历史SQL语句,对SQL进行优化。SQL审计的更多信息,请参见SQL洞察和审计
  • 设置自动扩容存储空间,当资源不足时,系统将自动扩容。具体请参见设置存储空间自动扩容
  • 对于临时文件较大的场景,应优化SQL语句,避免频繁使用ORDER BY、GROUP BY操作。

实例已经有充足空间或者已续费,为什么实例仍然被锁定?

因为实例当前有任务(如变更配置)在运行,需要等待任务结束后才会自动解锁。您可以在实例基本信息页右上角单击按钮按钮查看任务进度。