专访阿里RDS首席产品架构师何云飞:阿里云数据库的架构演进之路
原文作者:pipihappy8888 http://www.itpub.net/thread-1887486-1-1.html
如果说淘宝革了零售的命,那么DT革了企业IT消费的命。
【大数据】 【架构】 【NOSQL】 【mysql】 【RDS】 【SQL】 【高可用】 …
下面的一段对话取自于和用户的一段旺旺聊天记录,在征得用户的同意后,放到我的blog中,希望更多的人能够看见,分享是一件快乐的事情;同时也想借此来说明一些问题,有时候试图用一条sql完成所有的业务逻辑可能会遇到麻烦,需要对复杂的sql进行一些拆分,可能会得到更好的效果,好吧,废话少说,进入正题:
RDS用户:(17:06:28):
EXPLAIN SELECT COUNT(DISTINCT mobile) AS clientcount ,
COUNT(aliww) AS aliwwcount , COUNT(DISTINCT email) AS emailcount
FROM users_260030441 WHERE sid = 260030441
这sql怎么优化啊 表中有85W数据
Me~:(17:14:21):
优化这种sql 首先需要会explain 能够看懂explain的内容 explain的内容贴出来
RDS用户:(17:16:02):
Me~:(17:16:51):
…
在日常和客户沟通的过程中发现,他们在做mysql ddl变更的时候由于MySql本身的缺陷不支持online ddl,导致他们的业务不得不hang住一会儿,表越大,时间影响越长,所以期待有更好的解决方法;有些用户也想了一些方法,比如通过主备切换的方法,先在备库进行ddl,然后在通过主备切换到原主库进行ddl,但由于RDS对外提供给用户的是一个dns加port,所以后端的主备对用户是透明的,此方法行不通。其实在开源社区中已经有比较成熟的方法,那就是percona的pt-online-schema-change工具是其中之一,下面通过测试主要了解该工具的可靠性以及存在的问题,是否在RDS上支持。
原理:
在线修改表结构的工具,基本处理方式类似,以下对pt-online-schema-change工具的工作原理进行分析:
…
在用户的日常迁移中常常采用以下的方法来完成迁移(以MYSQL为例):
该方案比较简单,易于维持数据一致性,但当用户的数据量达到一个数量级别后(假设以50G数据为标准),逻辑迁移的速度已经明显的不能满足用户的要求,影响了所有用户的写入,并且时间过长。
那么如何能够做到对客户应用的透明,实现在线迁移喃?常用的手段可以通过日志同步的方法:
相信大部分用户在将自己本地的数据库迁移到RDS的时候都会遇到各种各样的问题,这里总结一下在迁移过程中常见的问题,包括将本地数据库(客户数据库)导出成可执行的SQL文件—–>导入到远端的RDS数据库—->测试验证.
案例一:用户迁移到RDS,遇到视图依赖的问题(MSSQL数据库)
用户在将本地数据库(mssql)导出成可执行的sql文件,然后在远处导入到RDS数据库的时候,发现视图依赖的问题而导致部分视图没有导入成功,例如:
视图view_0依赖—->视图view2_dep_view_1;视图view2_dep_view_1依赖—–>视图view_1;视图view_1依赖—–>表data:
…
[获取更多]RDS最近将会支持数据库的job功能,包括mysql的events和mssql的job. RDS在开放一个服务给用户使用的时候,需要考虑非常的多因素,比如:
所以我们会不断的问自己一些问题,然后自己再去解答它:
(1).主库上建立一个job,备库上会不会也会创建一个job?
答: