云计算之路-阿里云上:踩着RDS的2个坑
2013-09-01 13:02
155 查看
最近发现阿里云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左右被填平。
相关文章推荐
- 云计算之路-阿里云-分享:通过RDS备份文件恢复SQL Server数据库
- 云计算之路-阿里云上:RDS数据库连接数过万引发故障,主备库切换后恢复正常
- 云计算之路-阿里云上:13:43-13:44之间RDS故障影响了全站的正常访问
- 云计算之路-阿里云上:数据库连接数过万的真相,从阿里云RDS到微软.NET Core
- 云计算之路-阿里云上:RDS用户的烦恼
- 阿里云RDS文档概述——性能优化
- 如何把超大sql文件导入阿里云RDS数据库
- 专访阿里云RDS团队:WebScaleSQL是一个怎么样的数据库?
- 云计算之路-阿里云上:docker swarm 集群故障与异常
- 一次血的教训,阿里云rds mysql 数据库,本地化并日志恢复已删除的两天数据
- 基于阿里云RDS数据误删除的回滚方案
- 阿里云RDS上用mysqldump导入导出
- 云计算之路-阿里云上-容器难容:自建docker swarm集群遭遇无法解决的问题
- 阿里云云数据库RDS秒级监控功能解锁,通宵加班找故障将成为过去式
- 阿里云学习三 - 关系型数据库 RDS
- 云计算之路-阿里云上:Web服务器遭遇奇怪的“黑色30秒”问题
- 云计算之路-阿里云上:“黑色30秒”走了,“黑色1秒”来了,真相也许大白了
- 云计算之路-阿里云上:消灭“黑色n秒”第三招——禁用网卡的TCP/IP Offload
- 云计算之路-阿里云上:Web服务器请求到达量突降
- 云计算之路-阿里云上:2014年6月11日17点遇到的CPU 100%状况