问题现象
应用程序在连接 RDS MySQL 时偶发出现如下报错:
The MySQL server is running with the --read-only option so it cannot execute this statement
排查步骤
查看实例是否有主备切换
查看应用侧日志,找到对应的时间段内,是否发生了主备切换,为了保证主备一致性,在切换之前会将实例设置为 read only。
发生主备切换的原因有很多,通常来讲有如下原因:
- RDS MySQL 进行预期内升级操作,此类操作会预先发送站内信,用户可以在控制台,查看运维消息部分来确认是否发生了主备切换,数据面访问有30秒以内的 IO 中断。
- 主实例发生故障导致主从切换。
- 用户手动对实例进行重启,重启操作会触发主备切换动作。用户可以在 RDS MySQL 控制台,事件中心找到此类事件的详细信息。
磁盘空间利用率100%
当磁盘写满之后,实例将进入只读状态,建议使用云监控对实例配置告警,在达到阈值,如 80% 后进行自动告警,避免由于磁盘空间利用率 100% 导致实例只读,进而造成业务损失。
总结
总的来说,应用出现 running with the --read-only option 报错,通常来说有如下两点:
- 实例发生主从切换,在切换过程中实例会处于短暂的 read only 状态。
- 实例磁盘空间利用率已经到达 100%。
如果您有其他问题,欢迎您联系火山引擎技术支持服务