昨天晚上,我们使用的阿里云 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. Apache和Spring提供的StopWatch执行时间监视器

    相关阅读 [小家java]java5新特性(简述十大新特性) 重要一跃 [小家java]java6新特性(简述十大新特性) 鸡肋升级 [小家java]java7新特性(简述八大新特性) 不温不火 [小 ...

  2. 史上最强Java开发环境搭建

    在项目产品开发中,开发环境搭建是软件开发的首要阶段,也是必须阶段,只有开发环境搭建好了,方可进行开发,良好的开发环境搭建,为后续的开发工作带来极大便利. 对于大公司来说,软件开发环境搭建工作一般是由运 ...

  3. 【iOS】Updating local specs repositories

    使用 Pods 时遇到这个问题,原因是被墙了……需换成下面命令: pod install --verbose --no-repo-update

  4. 【Spring源码解析】—— 委派模式的理解和使用

    一.什么是委派模式 委派模式,是指什么呢?从字面含义理解,委派就是委托安排的意思,委派模式就是在做具体某件事情的过程中,交给其他人来做,这个事件就是在我的完整链路上的一部分,但是复杂度较高的情况下或者 ...

  5. 【Python-Django后端开发】配置静态文件详解!!!

    配置前端静态文件 1. 准备静态文件 2. 指定静态文件加载路径 STATIC_URL = '/static/' # 配置静态文件加载路径 STATICFILES_DIRS = [os.path.jo ...

  6. kubernetes集群升级的正确姿势

    kubernetes社区非常活跃,每季度都会发布一个release.但是线上集群业务可用性要求较高,场景复杂,任何微小的变更都需要非常小心,此时跟随社区版本进行升级略显吃力.但是为了能够使用到最新的一 ...

  7. 简洁明了的Noip考场策略 / 平时做题也适用

    1.选择策略: 评估的标准得分的难度不是AC的难度 2.思考问题: 怀疑的眼光审视自己 3.写代码前: 想想可不可以换一种代码实现会好写很多 把自己的思路再理一遍,可以写到纸上,记下来大致关键顺序 4 ...

  8. npm 一些有用的提示和技巧

    生成 package.json 我们通常执行 npm init,然后开始添加 npm 请求的信息. 但是,如果我们不关心所有这些信息,并且希望保留默认值,那么对于 npm 请求的每一条数据,我们都按 ...

  9. kali Metasploit 连接 Postgresql 默认密码

    使用 metasploit 时, 1. 启动 postgresql service postgresql start 2. 自行测试 postgresql 是否安装成功 根据需要,自行 修改 post ...

  10. MySQL多表(理论知识总结)

    1. 多表关系    外键    foreign key    添加外键语法:    alter table 表名1 add foreign key(外键名称) references 表名2(主键名称 ...