昨天晚上,我们使用的阿里云 RDS SQL Server 2008 R2 实例突然出现持续 CPU 100% 问题,后来我们通过重启实例恢复了正常(详见故障公告)。但是在恢复正常后发现了新问题,这台 RDS 实例 IOPS 不够用,必须要进行升级,而且当时过了 0 点也是升级的好时间,再加上我们对升级到更高版本的 SQL Server 垂涎已久 —— 因为最新的 EF Core 3.0 不支持生成 SQL Server 2008 的分页 SQL (UseRowNumberForPaging),只是我们还没有确定新版 SQL Server 是自己搭建还是继续使用阿里云 RDS ,加上现在的 RDS 实例是包年买的,所以近期没有安排升级计划。现在迫不得已+顺水推舟,再加上阿里云 RDS 支持直接从 SQL Server 2008 R2 升级到 SQL Server 2016,于是我们临时决定进行升级操作。

升级操作本身很简单,点几下按钮,支付一下费用,整个升级过程由阿里云 RDS 自动完成,而且升级期间不影响现已实例的正常访问。我们唯一担心的是升级后新 SQL Server 实例要重新编译大量 SQL 语句,预热时间比较长,但是我们当时升级的话,有一夜时间进行预热,问题应该不大。于是,在 00:22 启动了升级,启动升级后,从阿里云那得知由于我们的数据库比较大,升级时间比较长,建议我们早上再来看升级是否成功。我们又多了一份担心,假如到明天早上也完成不了升级,到访问高峰时旧实例支撑不住怎么办,阿里云说如果到时真的完成不了升级,他们会想办法让就实例支撑住,于是就安心去睡觉了。

今天一大早上起床一看,升级已经完成了,而且比预想的快很多,只用了3个小时多一点。

这时发现有些不对劲,打开很多页面速度慢,应用日志中很多超时错误,升级后的 RDS 实例 CPU 占用居高不下。

System.Data.SqlClient.SqlException (0x80131904): Timeout expired.  The timeout period elapsed prior to completion of the operation or the server is not responding

对于这个异常情况,我们当即采取了主备切换的操作,操作后发现主备切换一直停在“临时备份任务 25%”,切换无法完成,实例状态一直处于“主备库切换中”。

这时数据库超时问题变得越来越严重,博客后台保存操作多数会超时。

向阿里云反馈,阿里云排查后发现升级后备库的镜像没有搭建好,无法进行主备切换,阿里云建议我们重启实例。

根据阿里云的建议,我们尝试进行了重启实例的操作,但由于实例处于“主备库切换中”状态,根本不允许我们进行这个操作。

于是授权给阿里云重启,但重启就好了一会,接着又出现大量数据库操作超时问题。

8:49 从阿里云那得知 DBA 正在重建备库,主备切换要等备库重建完成才能进行。

这时已经别无选择,只剩下最后一招——升级 RDS 实例配置,悲剧的是,由于实例处于“主备库切换中”状态,也根本不允许变更配置操作。从阿里云得到进一步确认,升级配置是主备一起升,也必需要等到备库重建完成。

此时进入了最无奈无助的局面,眼睁睁地看着整个园子全面故障,却一点办法没有,只能没有任何耐心地“耐心”等待备库重建,更让人心碎的是这一等就等到 10:40 左右。

备库重建完成后,我们立即尝试升级配置,结果发现升级配置的计费有问题,配置没有任何变动的情况下,竟然会产生1万多的费用,似乎升级不是按我们已有的 SQL Server 2016 配置进行计算,而且按照之前 SQL Server 2008 的配置进行计算。这时,我们想到之前想尝试的主备切换还没做,于是,改为先进行主备切换。

11:05 进行了主备切换,11:10 主备切换完成后,全部恢复了正常,飞快的速度终于又回来了。

主备切换后,想眼看一下备库的 CPU 占用情况,结果发现 RDS 控制台针对备库的监控数据一片空白,阿里云的监控功能偏偏在这个时候出问题了。虽然恢复了正常,看不到监控数据,我们还是有些忐忑不安。

下午 13:30 之后开始进入下午的访问高峰时,访问速度又开始变慢了,问题又开始出现了。看来是当前的 RDS 实例配置不堪重负,必须要升级配置,虽然现在升级计费有问题,先升级再说,但是接下来出现的问题让我们傻眼了,在升级购买时却提示“询价失败,请联系客服同学”,屋漏偏逢连夜雨,升级配置也无法进行,只能提交工单,干等阿里云解决。

14:40 左右,阿里云解决了监控问题,备库的 CPU 也是居高不下,的确是升级后的 RDS 实例配置不够,唯有升级配置,但是升级配置的功能也出了问题。

现在唯有等阿里云解决无法升级 RDS 实例配置的问题。

非常非常抱歉,没想到这次数据库升级也是我们搬上阿里云到目前唯一一次数据库升级,竟然引发如此大的故障,给大家带来这么大的麻烦,非常愧疚。

【更新】

16:30 阿里云解决了升级 RDS 配置的问题,我们完成了购买,RDS 实例已经开始升级操作。

17:02 升级全部完成,16:52 开始  CPU 占用大幅下降。

17:10 确认升级后全面恢复正常。

【故障公告】升级阿里云 RDS SQL Server 实例故障经过的更多相关文章

  1. 【故障公告】阿里云 RDS SQL Server 数据库实例 CPU 100% 引发全站故障

    非常抱歉,今天 8:48 开始,我们使用的阿里云 RDS SQL Server 数据库实例突然出现 CPU 100%  问题,引发全站故障,由此给您带来麻烦,请您谅解. 发现故障后立即进行主备切换,和 ...

  2. 【故障公告】阿里云 RDS 数据库突发 CPU 近 100% 引发全站故障

    今天晚上9点我们收到阿里云的告警通知: [阿里云监控]华东1(杭州)-云数据库RDS版<cnblogsdb> [instanceId=xxx] 于21:00 发生告警, 前往诊断 CPU使 ...

  3. 【故障公告】阿里云 RDS 实例 CPU 100% 故障引发全站无法正常访问

    非常抱歉,今天凌晨 3:20~8:30 左右,我们使用的阿里云 RDS 实例 SQL Server 2016 标准版突然出现 CPU 100% 故障,造成全站无法正常访问,由此给您带来巨大的麻烦,请您 ...

  4. 【故障公告】阿里云 RDS 数据库服务器 CPU 100% 造成全站故障

    非常非常抱歉,今晚 19:34 ~ 21:16 园子所使用的阿里云 RDS 数据库服务器突然出现 CPU 100% 问题,造成全站无法正常访问,由此您带来了很大的麻烦,请您谅解. 故障经过是这样的.1 ...

  5. 阿里云RDS SQL Server 2008 R2 使用本地SQL备份文件还原全过程

    最近公司准备全面转向阿里云,写了好几个方案,最终决定购买一台ECS和一台RDS搭配使用.开始对阿里的RDS产品陌生,加上公司的数据库文件近20G,诸多担心,生怕产品买来了不能用,给公司造成损失.后来联 ...

  6. 干货 | SSMS客户端连接京东云RDS SQL Server配置方法

    干货 | SSMS客户端连接京东云RDS SQL Server配置方法 原创: 于振江 京东云开发者社区  微软SQL Server, Oracle数据库以及MySQL系列占据了关系型数据库市场的绝对 ...

  7. 阿里云服务器,Sql Server 本地连接服务器端问题记录

    1.如果你是阿里云服务器,配置参数都整好了并且排除了防火墙问题(关闭了防火墙),依然没有连接上,那就先考虑这个问题 问题:阿里云服务器的SQLServer不允许远程连接 原因:因为除了服务器上的防火墙 ...

  8. [故障公告]受阿里云部分ECS服务器故障影响,目前无法上传图片与文件

    抱歉!今天下午阿里云华东1可用区B的部分ECS服务器出现IO HANG问题,受此影响,我们的图片与文件上传服务器无法访问,由此给您带来麻烦,请您谅解. 16:30左右开始,我们发现图片与文件上传服务器 ...

  9. 阿里云RDS数据库到期实例被清除,别急着哭(阿里没有删库跑路),或许还有一线生机

    阿里资源到期未续费,数据保存期限: ECS实例的保存期是15天. Redis实例的保存期是7天. RDS实例的保存期也是7天. 过期当天会收到一条短信: [阿里云]尊敬的用户:您的RDS实例(实例ID ...

随机推荐

  1. @ConfigurationProperties 注解使用姿势,这一篇就够了

    在编写项目代码时,我们要求更灵活的配置,更好的模块化整合.在 Spring Boot 项目中,为满足以上要求,我们将大量的参数配置在 application.properties 或 applicat ...

  2. Jibx 只绑定需要的字段

    栗子:     binding.xml   <?xml version="1.0" encoding="UTF-8"?> <binding&g ...

  3. tomcat 启动是 jdbc警告

    the web application [ROOT] registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregist ...

  4. 【Android】System.exit(0) 退出程序

    许多 Android 应用程序都是连续点击两下返回键时退出程序,代码如下: private long exitTime = 0; @Override public boolean onKeyDown( ...

  5. Linux常用的命令及使用方法

    1.请用命令查出ifconfig命令程序的绝对路径 [root@localhost ~]# which ifconfig(ifconfig是linux中用于显示或配置网络设备(网络接口卡)的命令) / ...

  6. 自定义SWT控件二之自定义多选下拉框

    2.自定义下拉多选框 package com.view.control.select; import java.util.ArrayList; import java.util.HashMap; im ...

  7. 初识代理——Proxy

    无处不在的模式——Proxy 最近在看<设计模式之禅>,看到代理模式这一章的时候,发现自己在写spring项目的时候其实很多时候都用到了代理,无论是依赖注入.AOP还是其他,可以说是无处不 ...

  8. 编程杂谈——Non-breaking space

    近日,意外地遇上件不寻常的事情.在解析PDF文件,读取其中内容的时候,对某一文件的处理,始终无法达到预期的效果. 解析方法如下: public void Parse(string value) { i ...

  9. Nginx 1.15.5: 405 Not Allowed

    0x00 事件 在做一个业务跳转时,遇到这个错误 405 Not Allowed,找了挺多资料,多数解决方案是让在 nginx 配置文件中直接添加 error_page 405 =200 $uri; ...

  10. 优雅的在WinForm/WPF/控制台 中使用特性封装WebApi

    优雅的在WinForm/WPF/控制台 中使用特性封装WebApi 说明 在C/S端作为Server,建立HTTP请求,方便快捷. 1.使用到的类库 Newtonsoft.dll 2.封装 HttpL ...