昨天晚上,我们使用的阿里云 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. ioc和aop的区别

    IoC,(Inverse of Control)控制反转,其包含两个内容:其一是控制,其二是反转.在程序中,被调用类的选择控制权从调用它的类中移除,转交给第三方裁决.这个第三方指的就是Spring的容 ...

  2. RabbitMQ搭建单机及集群

    1,基本环境配置 hosts 文件 免密登录 2,访问官网 https://www.rabbitmq.com/download.html 3, 4,安装依赖 yum -y install make g ...

  3. SPFA队列优化

    spfa队列优化(用来求最短路) 实现方法: 1.存入图.可以使用链式前向星或者vocter. 2.开一个队列,先将开始的节点放入. 3.每次从队列中取出一个节点X,遍历与X相通的Y节点,查询比对   ...

  4. Restful API 中的错误处理

    简介 随着移动开发和前端开发的崛起,越来越多的 Web 后端应用都倾向于实现 Restful API. Restful API 是一个简单易用的前后端分离方案,它只需要对客户端请求进行处理,然后返回结 ...

  5. 云计算网络基础笔记及VLAN交换机配置

  6. java8中用流收集数据

    用流收集数据 汇总 long howManyDishes = menu.stream().collect(Collectors.counting()); int totalCalories = men ...

  7. MongoDB之数据库备份与恢复

    MongoDB之数据备份与恢复 一,需求 一段时间备份数据库数据,以防意外导致数据丢失 二,备份与恢复 2.1,数据库备份 1,常用命令格式 mongodump -h IP --port 端口 -u ...

  8. 利用ImageAI库只需几行python代码超简实现目标检测

    目录 什么是目标检测 目标检测算法 Two Stages One Stage python实现 依赖 安装 使用 附录 什么是目标检测 目标检测关注图像中特定的物体目标,需要同时解决解决定位(loca ...

  9. 从SpringBoot构建十万博文聊聊缓存穿透

    前言 在博客系统中,为了提升响应速度,加入了 Redis 缓存,把文章主键 ID 作为 key 值去缓存查询,如果不存在对应的 value,就去数据库中查找 .这个时候,如果请求的并发量很大,就会对后 ...

  10. Spring入门(八):自动装配的歧义性

    1. 什么是自动装配的歧义性? 在Spring中,装配bean有以下3种方式: 自动装配 Java配置 xml配置 在这3种方式中,自动装配为我们带来了很大的便利,大大的降低了我们需要手动装配bean ...