周金可,就任于听云,维护MySQL和GreenPlum的正常运行,以及调研适合听云业务场景的数据库技术方案。sql
听云周金可shell
9月24日,周金可将参加在北京举办的线下活动,并作主题为《GreenPlum在听云大数据实时分析的实践》的分享。值此,他分享了PG、工做上的一些经历和经验。数据库
免费报名连接:http://click.aliyun.com/m/6101/编程
正文:json
周金可刚参加工做时是作系统运维的,后来慢慢接触了各类数据库,开始对数据库感兴趣,通过一段时间的积累后转向了DBA。后端
“在我加入听云时,刚好是业务快速增加的阶段,后端咱们的应用以及数据库经受了比较大的考验。去年大多数时间是在作扩容,咱们的MySQL集群由最开始的数台实例扩展到如今的数百台实例。”他经历了听云业务量的爆发式增加。架构
而正是这种增加,让周金可和PG有了亲密接触:“某个模块的单表数据量达百亿级,MySQL Shared方式已经没法保证查询性能,因此又采用了GreenPlum MPP的方案来解决性能问题。”并发
“整个过程当中分拆扩容的工做量是比较大的。并且在数据量巨大的状况下,MySQL Shared形成的数据倾斜问题给咱们形成了比较大的困扰。目前咱们对MySQL的中间件作了一次定制,支持将指定的某个用户的数据路由到一个单独的实例上,而后垂直扩展该实例的配置。但如今咱们更倾向于Greenplum的方案,合理的涉及distribution key是能够彻底避免数据倾斜的问题。”框架
所以,他本次分享的就是GreenPlum在听云大数据实时分析的实践,内容涉及具体应用场景GreenPlum选型,以及迁移至GreenPlum架构后与原来MySQL架构的性能对比。运维
除此以外,周金可也谈了本身为何喜欢Golang的编程风格、听云内部的数据库管理平台的经历,以及对上段时间Uber从PG切换为MySQL一事的见解。
更为具体的内容,请查看如下完整采访:
云栖社区:请介绍下你以及所从事的工做。
周金可:我叫周金可,目前就任于听云。听云是一家在APM领域深耕10年的公司。我是在15年初加入听云,有幸经历了听云业务量的爆发式增加。
听云后端当前的数据库架构主要是MySQL分布式集群,也有一部分数据是采用GreenPlum的方案。而咱们即将发布的CDN Controller产品后端,则采用的是Postgresql+Citus分布式方案。
目前主要的工做内容就是维护MySQL和GreenPlum的正常运行,以及调研适合听云业务场景的数据库技术方案。
云栖社区:你是怎么走上DBA道路的?目前工做中有哪些亮点?
周金可:刚参加工做的时候是作系统运维的,后来慢慢的接触了各类数据库,开始对数据库感兴趣,通过一段时间的积累后转向了DBA。
在我加入听云时,刚好是听云的业务快速增加的阶段,后端咱们的应用以及数据库经受了比较大的考验,去年大多数时间是在作扩容,咱们的MySQL集群由最开始的数台实例扩展到如今的数百台实例。
今年咱们主要是作了一些优化的工做,好比使用ToKuDB存储引擎替换线上MySQL实例的InnoDB实例,大幅压缩数据并提高性能。将原来放在MySQL上的一部分业务数据迁移到Greenplum上,查询性能提高几百倍。固然这只是在咱们的场景中,单节点MySQL跟Greenplum集群的对比,MySQL仍是很优秀的DB。
云栖社区:你提到,比较喜欢Golang的编程风格,能聊下缘由吗?你还使用Golang开发了听云内部的数据库管理平台,请介绍下这个平台,以及开发中一些记忆犹新的事吧。
周金可:Golang语法比Python简单,编程风格趋于脚本化但功能比shell强大不少,原生的并发变成模型和跨平台特性让我以为Golang能够做为平常运维工做中的一把利剑。
数据库集群规模比较大,不可能天天对数百节点作人肉巡检,后来接触到了Golang的Web框架Beego,因此决定写一个数据库管理平台。这个平台会对MySQL集群中数百节点的数据量、qps、tps、慢sql等指标进行收集,而后在页面上以曲线图的形式展示,还会有一些汇总的报表数据,好比每个月每一个业务库的数据增量状况以及天天慢sql数量top12的实例列表。对慢sql作分析汇总,支持查看慢sql执行计划。
数据查询提取的窗口,支持数据的查询并以excel格式导出。还有一些咱们自动维护表分区的一些监控。
云栖社区:做为国内较大的应用性能检测平台,听云在数据库上的演变过程是什么样的?都遇到哪些挑战,以及怎么解决的?
周金可:听云数据库经历了由MySQL单机到MySQL分库分表分布式架构的演变,后来数据量继续膨胀,又使用压缩引擎对数据进行压缩。某个模块的单表数据量达百亿级,MySQL Shared方式已经没法保证查询性能,因此又采用了GreenPlum MPP的方案来解决性能问题。
整个过程当中分拆扩容的工做量是比较大的。并且在数据量巨大的状况下,MySQL Shared形成的数据倾斜问题给咱们形成了比较大的困扰。目前咱们对MySQL的中间件作了一次定制,支持将指定的某个用户的数据路由到一个单独的实例上,而后垂直扩展该实例的配置。但如今咱们更倾向于Greenplum的方案,合理的涉及distribution key是能够彻底避免数据倾斜的问题。
云栖社区:你是何时接触GreenPlum方案和PG的?目前在应用上积累了哪些经验?
周金可:接触Greenplum和PG有几个月的时间了,目前GreenPlum刚刚上生产,在前期调研的时候积累了一些使用场景的经验,对于GPDB维护上的经验,正在积累的过程当中。
云栖社区:接下来,你还将如何拥抱PG?
周金可:咱们一个新产品后端DB使用到postgresql新版本的jsonb特性,兼顾性能和运维的成本考虑。目前来看,除了PG暂时没有可替代的方案,因此咱们到时候会采用citus+postgresql的方案。
云栖社区:在本期线下沙龙,你分享的内容将包括哪些内容?做为一个刚接触PG的技术人,你对与会者有什么寄语吗?
周金可:主要分享的是GreenPlum在听云大数据实时分析的实践,会从分享一下咱们具体应用场景GreenPlum选型,以及迁移至GreenPlum架构后与原来MySQL架构的性能对比。
Postgresql发展仍是挺迅速的,并且国内愈来愈多的公司也开始尝试使用Postgresql。PG的一些特性也确实不少吸引力,但愿愈来愈多的使用者分享使用经验,让PG社区变得愈来愈好。
云栖社区:最后:做为一个MySQL DBA,你对上段时间Uber从PG切换为MySQL一事怎么看?
周金可:Uber的作法可能会对大众在DB的选型上产生一些误导,互联网公司在不一样的阶段随着架构的演变会有技术的迭代,每每都会寻求新的技术方案来解决当下的一些痛点问题,因此仍是那句话适合本身的就是最好的。
MySQL有可能更适合Uber现阶段的业务场景,听说Uber以前曾从MySQL迁移到PG,因此也很难说不是Uber DBA的我的情怀。
但这篇文章带来的影响仍是很糟糕的。
周可金将在9月24日在开源数据库企业应用实践的会议上与你们面对面交流Greenplum技术,欢迎你们免费报名参会、