昨天晚上,咱们使用的阿里云 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,因而咱们临时决定进行升级操做。html
升级操做自己很简单,点几下按钮,支付一下费用,整个升级过程由阿里云 RDS 自动完成,并且升级期间不影响现已实例的正常访问。咱们惟一担忧的是升级后新 SQL Server 实例要从新编译大量 SQL 语句,预热时间比较长,可是咱们当时升级的话,有一晚上时间进行预热,问题应该不大。因而,在 00:22 启动了升级,启动升级后,从阿里云那得知因为咱们的数据库比较大,升级时间比较长,建议咱们早上再来看升级是否成功。咱们又多了一份担忧,假如到明天早上也完成不了升级,到访问高峰时旧实例支撑不住怎么办,阿里云说若是到时真的完成不了升级,他们会想办法让就实例支撑住,因而就安心去睡觉了。git
今天一大早上起床一看,升级已经完成了,并且比预想的快不少,只用了3个小时多一点。github
这时发现有些不对劲,打开不少页面速度慢,应用日志中不少超时错误,升级后的 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%”,切换没法完成,实例状态一直处于“主备库切换中”。阿里云
这时数据库超时问题变得愈来愈严重,博客后台保存操做多数会超时。3d
向阿里云反馈,阿里云排查后发现升级后备库的镜像没有搭建好,没法进行主备切换,阿里云建议咱们重启实例。日志
根据阿里云的建议,咱们尝试进行了重启实例的操做,但因为实例处于“主备库切换中”状态,根本不容许咱们进行这个操做。code
因而受权给阿里云重启,但重启就行了一会,接着又出现大量数据库操做超时问题。server
8:49 从阿里云那得知 DBA 正在重建备库,主备切换要等备库重建完成才能进行。htm
这时已经别无选择,只剩下最后一招——升级 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 确认升级后全面恢复正常。