阿里云上踩着RDS的2个坑

最近发现阿里云RDS管理控制台升级了,界面更好看了,操作也更方便了,但在美丽的外表下却藏着坑,不小心被我们睬着了。

8月31日下午,我们在RDS管理控制台中创建了一个新的数据库帐号,创建时选择了绑定多个数据库。

然后,这个新建帐户的状态显示为“创建中”,这时该新建帐户可以登录,但不能访问任何数据库。

过了2分多钟,帐户状态由“创建中”变为“激活”后,才可以正常访问所绑定的数据库。

之前我们很久没有在RDS进行帐户管理操作了,今天这样一个如此简单、如此常用的操作,我们根本没想到会出问题。

结果却在2分多钟内连踩2个坑,被坑得不轻!

第1个坑

在创建新帐号时所选择绑定的所有数据库,在这2分钟内,竟然都无法访问。已经绑定这些数据库的现有帐户访问时都被拒绝,错误信息如下:

The SELECT permission was denied on the object '', database '', schema 'dbo'.

由于创建时选择的数据库比较多,结果这个问题影响到了全站。非常之郁闷,自从使用数据库以来,从未遇到过这样的问题——创建新帐号竟然会影响到现有帐号。

后来进一步发现,实际的坑比这个还要深,修改任何一个现有帐户的数据库绑定,都会触发这个问题。而且修改的设置要过2分多钟才生效。

也就是说,在RDS中,只要涉及任何数据库帐户权限的变动,就会引发所涉及的数据库在短时间内不能正常访问,而且没有任何提示或警告。

我们向阿里云反馈后,他们已经确认这是一个bug,说会在9月底的下一个版本中修复。

我们的想法是:如此严重的bug,还要让用户等到9月底,24小时内修复才是负责任的做法!

第2个坑

创建新帐号竟然造成已有的数据库帐号的数据库绑定丢失,有的只剩下一个数据库绑定,有的少了一两个数据库绑定。

向阿里云反馈后,RDS的DBA查了才知道,当时我们迁移至RDS时,某些在SQL Server Management Studio中的操作造成了SQL Server中的帐号与RDS中的帐号不一致,在RDS创建新帐号时发现在SQL Server中有的帐号在RDS中没有,于是RDS就把这些帐号给干掉了。

阿里云说这么做是出于安全角度考虑,出于安全角度不给SA权限,我们可以忍。这地方又存在什么安全问题呢?况且,我们的RDS只有内网授权的IP才能访问。另外,即使必须要保持RDS与SQL Server数据库的帐号一致,那也应该以SQL Server中的帐号为准。因为RDS中的帐户即使全丢失,也不会影响数据库的正常访问;而数据库中的帐号只要少了一个,就可能影响到用户的正常应用。孰轻孰重?

坑后感言

如果在设计产品时,把保证用户应用的稳定性放在首要位置,就不会有这么多坑!如果敢把自己的核心应用放在自己的云上,也不会有这么多坑!

现在的状况就如生产汽车不考虑安全问题,等用户开车出了事故,才去针对性地解决安全问题;然后,那些准备买车的人看到汽车这么不安全,吓得都不敢买了。如果真是这样,就不会有今天的汽车工业。

更新:第1个坑在9月2日晚22:00左右被填平。

查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Servers/cloud-computing/

时间: 2024-08-28 19:53:57

阿里云上踩着RDS的2个坑的相关文章

从运维的角度分析使用阿里云数据库RDS的必要性--你不应该在阿里云上使用自建的MySQL/SQL Server/Oracle/PostgreSQL数据库

开宗明义,你不应该在阿里云上使用自建的MySQL or SQL Server数据库,对了,还有Oracle or PostgreSQL数据库. 云数据库 RDS(Relational Database Service)是一种稳定可靠.可弹性伸缩的在线数据库服务.基于飞天分布式系统和全SSD盘高性能存储,支持MySQL.SQL Server.PostgreSQL和PPAS(高度兼容Oracle)引擎,默认部署主备架构且提供了容灾.备份.恢复.监控.迁移等方面的全套解决方案. 当然,并不是指所有用户

.net 连接阿里云上的mysql数据库一直报错

问题描述 .net 连接阿里云上的mysql数据库一直报错 代码如下: using MySql.Data; using MySql.Data.MySqlClient; static void Main(string[] args) { string str = "Database=chu;Data Source=rdsja29d3bs0j0z1jg55.mysql.rds.aliyuncs.com;Port=3306;User Id=XXX;Password=XXX;Charset=utf8&q

我们是如何在阿里云上搭建人全基因组数据分析与解读流程

本文正在参加"最佳上云实践"评选,来给我们投票吧:https://yq.aliyun.com/activity/158(编号14) 公司成立于2014年,取名基云惠康,立志通过基因来惠及大众健康,公司的口号是知基因,惠健康.惠健康的第一步就是要知基因,知基因就要对基因数据进行分析与解读.要知道人全基因组测序的原始数据一般在300G左右,压缩为fastq格式也要60G左右,怎么快速低成本的分析这些数据是一个比较棘手的问题. 公司成立之初,原打算是自己购买服务器搭集群,后来由于种种原mei

上云培训课程:在阿里云上进行通用架构设计

课程名称:在阿里云上进行通用架构设计   课程代码:ACA21201   课程介绍:云平台架构是指将ECS / SLB / RDS  / OSS / OCS / OTS / ODPS / CDN等云平台服务按照业务场景对不同资源类型的需求以合理的关联关系组合在一起.而架构设计是指按照业务需求选择最优的云平台服务部署对应的系统或存储对应的资源,并结合各个云平台的服务特性设计出高性能.高可用的组合方案,以最终满足业务系统运行的需求.本课程从理论.产品.技术.实践多角度结合,深入讲解如何在阿里云上进行

如何在阿里云上构建高可用的跨AZ部署方案

引言: 针对企业而言,不管业务是不是在云上,服务的稳定和连续性总归是无法回避的话题,为了降低不可抗力因素对服务提供造成的影响,我们有了高可用性和容灾的概念.虽然我们的产品已有很高的可用性,我们仍不能忽视构建服务高可用性和容灾的重要性. 针对一般企业而言,主要会用到ECS, SLB, RDS, OSS 产品介绍: ECS 云服务器.相当于阿里云上的虚拟机,本身没有高可用性和容灾,需要通过架构来实现. SLB 负载均衡,高可用性和容灾可以从两点来阐述: 1. 负载均衡的服务提供是基于集群部署的,各集

基于阿里云上实现全站https的正确姿势(一)

一些重要的互联网资源参考: 强烈建议通读一下Jerry Qu的关于https, http/2, nginx的blog, 这是我目前发现的在国内的技术文章中, 关于上述的几个知识点讲解的最为全面透彻的文章. 传送门: https://imququ.com/ 为什么我们需要实现全站https? 目前主流大厂的网站和服务都已经实现了全站https, 例如: baidu, taobao, jd等. 关于这方面的好处和优势, 互联网上太多文章在进行介绍. 例如: 为什么我们应该尽快升级到 HTTPS? 对

阿里云上的新发现:又一种与虚拟内存有关的CPU波动情

在云上真是无奇不有,昨天偶然间发现在IIS的应用程序池回收设置中,仅仅设置了一下基于虚拟内存限制的回收,就引发了CPU有规律的波动.在这篇博文中,我们将向大家汇报一下云计算之路上的这个小发现. 在之前我们使用阿里云云服务器(虚拟机)遇到一个左右为难的情况: 如果开启虚拟内存页面交换文件,会造成CPU占用高,在高并发情况下会引发CPU 100%.系统无响应的故障,详见云计算之路-阿里云上:启用Windows虚拟内存引发的CPU 100%故障. 如果关闭虚拟内存页面交换文件,在某种因素引起的短时间虚

DockerCon 2016 深度解读:在阿里云上体验Docker 1.12内置的编排能力

昨天才从DockerCon大会归来,阿里云容器服务团队将为大家奉献一系列深入学习的文章来帮助大家了解Docker 1.12的最新动态. 第一部分:在阿里云上体验Docker 1.12内置的编排能力 (本文) 第二部分:在阿里云上体验Docker 1.12的路由能力和容器应用分发部署 在DockerCon第一天的Keynote里面,Docker CTO Solomon Hykes宣布Docker将提供内置的编排(Orchestration)能力,从而能使得Docker Engine原生支持集群管理

阿里云上Docker企业版之旅

阿里云上Docker企业版之旅 6月9号,Docker中国网站正式发布.在Docker中国官方镜像加速上线的同时,Docker企业版也可以从阿里云的云市场在线购买和试用了. Docker企业版基于社区版增加了面向企业的管理和安全能力,Docker企业版在国内由阿里云和Docker联合提供技术支持,为企业客户提供稳定.安全.可以信赖的容器应用平台.本文将介绍如何在阿里云上试用原汁原味的Docker企业版. 购买Docker企业版试用授权 首先访问阿里云云市场中Docker 企业版售卖页: http