【故障公告】升级阿里云 RDS SQL Server 实例故障经过

昨天晚上,我们使用的阿里云 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 实例故障经过的更多相关文章
- 【故障公告】阿里云 RDS SQL Server 数据库实例 CPU 100% 引发全站故障
非常抱歉,今天 8:48 开始,我们使用的阿里云 RDS SQL Server 数据库实例突然出现 CPU 100% 问题,引发全站故障,由此给您带来麻烦,请您谅解. 发现故障后立即进行主备切换,和 ...
- 【故障公告】阿里云 RDS 数据库突发 CPU 近 100% 引发全站故障
今天晚上9点我们收到阿里云的告警通知: [阿里云监控]华东1(杭州)-云数据库RDS版<cnblogsdb> [instanceId=xxx] 于21:00 发生告警, 前往诊断 CPU使 ...
- 【故障公告】阿里云 RDS 实例 CPU 100% 故障引发全站无法正常访问
非常抱歉,今天凌晨 3:20~8:30 左右,我们使用的阿里云 RDS 实例 SQL Server 2016 标准版突然出现 CPU 100% 故障,造成全站无法正常访问,由此给您带来巨大的麻烦,请您 ...
- 【故障公告】阿里云 RDS 数据库服务器 CPU 100% 造成全站故障
非常非常抱歉,今晚 19:34 ~ 21:16 园子所使用的阿里云 RDS 数据库服务器突然出现 CPU 100% 问题,造成全站无法正常访问,由此您带来了很大的麻烦,请您谅解. 故障经过是这样的.1 ...
- 阿里云RDS SQL Server 2008 R2 使用本地SQL备份文件还原全过程
最近公司准备全面转向阿里云,写了好几个方案,最终决定购买一台ECS和一台RDS搭配使用.开始对阿里的RDS产品陌生,加上公司的数据库文件近20G,诸多担心,生怕产品买来了不能用,给公司造成损失.后来联 ...
- 干货 | SSMS客户端连接京东云RDS SQL Server配置方法
干货 | SSMS客户端连接京东云RDS SQL Server配置方法 原创: 于振江 京东云开发者社区 微软SQL Server, Oracle数据库以及MySQL系列占据了关系型数据库市场的绝对 ...
- 阿里云服务器,Sql Server 本地连接服务器端问题记录
1.如果你是阿里云服务器,配置参数都整好了并且排除了防火墙问题(关闭了防火墙),依然没有连接上,那就先考虑这个问题 问题:阿里云服务器的SQLServer不允许远程连接 原因:因为除了服务器上的防火墙 ...
- [故障公告]受阿里云部分ECS服务器故障影响,目前无法上传图片与文件
抱歉!今天下午阿里云华东1可用区B的部分ECS服务器出现IO HANG问题,受此影响,我们的图片与文件上传服务器无法访问,由此给您带来麻烦,请您谅解. 16:30左右开始,我们发现图片与文件上传服务器 ...
- 阿里云RDS数据库到期实例被清除,别急着哭(阿里没有删库跑路),或许还有一线生机
阿里资源到期未续费,数据保存期限: ECS实例的保存期是15天. Redis实例的保存期是7天. RDS实例的保存期也是7天. 过期当天会收到一条短信: [阿里云]尊敬的用户:您的RDS实例(实例ID ...
随机推荐
- python Django编写接口并用Jmeter测试
一.环境准备 python3.6.7 Pycharm 二.创建项目 我这里是在Django项目中新建了个APP,目录结构如下图所示: 那么怎么在已有的Django项目中新建APP并进行配置呢: 2.1 ...
- cmd与monkey测试
monkey测试的相关命令 monkey是模拟用户触摸操作,不支持条件判断.monkey命令格式: 启动安卓模拟器/真机 点击运行->输入cmd->进入命令行界面 查看设备连接情况,ad ...
- logback使用配置
一:logback.xml配置内容如下 <?xml version="1.0" encoding="UTF-8"?> <!-- Copyrig ...
- OLE--SWT高级控件
OLE和ActiveX控件的支持 OLE(Object Link Embeded)是指在程序之间链接和嵌入对象数据.通过OLE技术可以在一个应用程序中执行其他的应用程序. 而ActiveX ...
- Pyenv虚拟环境的创建(虚拟机)
创建pyenv虚拟环境 sudo yum install openssl* 安装其所需要的库文件 git clone https://github.com/yyuu/pyenv.git ~/.pyen ...
- 调测Onvif事件总结解决办法
主要在调测事件用例的过程中,发现了大量的信息,和未曾碰到的场景和非法错误等信息,先总结解决办法如下: (1)测试过程中发现以前的一个难题解决了,原先在生成soap空间命名的文件中有部分需要下载,离线生 ...
- c#实现深拷贝的几种方法
为什么要用到深拷贝呢?比如我们建了某个类Person,并且实例化出一个对象,然后,突然需要把这个对象复制一遍,并且复制出来的对象要跟之前的一模一样,来看下我们一般会怎么做,看代码 public cla ...
- NLP(十五)让模型来告诉你文本中的时间
背景介绍 在文章NLP入门(十一)从文本中提取时间 中,笔者演示了如何利用分词.词性标注的方法从文本中获取时间.当时的想法比较简单快捷,只是利用了词性标注这个功能而已,因此,在某些地方,时间的识别 ...
- spring cloud 断路器 Hystrix
一.微服务架构中使用断路器的原因 二.代码实现 1.在Ribbon中使用短路器 1.1.引入依赖 <dependency> <groupId>org.springframewo ...
- 域名、主机名、网站名以及 URL 基础概念
这个东西,在百度经验上已经有人讲得非常清楚了, 作为 web 方向的小白, 我写下我的理解,以便日后查看. 以 https:// www.3vjia.com 为例, 见下图: DNS (Domain ...