SlideShare ist ein Scribd-Unternehmen logo
1 von 28
低成本和高性能
MySQL 云架构探索
关于我

   淘宝核心系统资深技术专家 余锋
   超过 15 年互联网行业的网络、内核以及底层软件开发经验
   专注于高性能分布式服务器的研究和实现
   擅长构建大规模集群服务器
   对数据库系统和分布式文件存储有深入的研究
平台挑战和设计原则
平台架构
平台核心部件
讨论
MySQL 运维面临的问题

   易用性偏差
   性能
    –    软硬件未经优化,处于原始阶段
    –    不同阶段的软硬件性能相差巨大

   集群
    –    主备不完全同步和备机利用率低
    –    以业务划分,集群分散管理,运维成本高
MySQL 平台化要解决什么 ?

   高效 MySQL 数据库服务支持,自动化运维


   提高资源利用率,降低平台成本


   7*24 长期运行,屏蔽软硬件的变化
MySQL 平台设计原则

   平台对外保持单一入口,对内维护单一的资源池。


   保证服务的高可用性,消除单点故障


   保证系统是弹性可伸缩的,可以动态的增加、删减计算与存储节点。


   保证分配给用户的资源也是弹性可伸缩的,资源之间相互隔离。
平台挑战和设计原则
平台架构
平台核心部件
讨论
平台架构第一版
第一版的经验和教训

   经验
    –    采用开放成熟的第三方部件的好处
    –    开放的平台,方便用户扩展
    –    热部署和升级对不停机维护的意义
    –    容错系统设计的重要性

   教训
    –    保持和 MySQL 的绝对兼容的重要性
    –    数据访问主路径必须短且稳定
    –    proxy 性能、稳定性和成本的关系
    –    日志实时收集和处理的难度
    –    系统各部件部署的粒度,减少系统升级带来不良影响
平台架构第二版
平台特性

   平台足够稳定,支持热升级
   支持几千台物理机规模,
   以对用户透明的形式提供主从热备、数据备份、迁移、容灾、读写分离、分库分表功能
   资源隔离,按需分配和限制 CPU 、内存和 IO 资源
   不影响提供数据服务的前提下根据用户业务的发展动态的扩容和缩容
   屏蔽数据节点不同的软硬件差异
平台概况

   稳定性生产系统验证过
   依赖的开源组件: Mnesia 、 Lvs 、 RabbitMQ 、 ZooKeeper
   代码规模
     –   核心使用以高性能、健壮以及可伸缩性出名的 Erlang 语言开发
     –   5 万行 Erlang 代码, 3 万 c 代码, 2 万其他代码
     –   六人团队,历时 1 年
为什么要用 Erlang 实现

   高并发 , 高性能 , 集群易扩展
   时间检验的高可靠
   强大的管理功能 , 方便的问题定位支持
   强大的交互性 , 与其他系统整合能力
平台挑战和设计原则
平台架构
平台核心部件
讨论
创建数据库实例流程
数据主路径流程
LVS

   安全隔离
   L4 流量切割,实现负载均衡
   Proxy 故障自动转移
ZooKeeper


   作为配置服务器
   提供分布式锁
   MySQL 插件监控所有实例的可用性
RabbitMQ

   Erlang 消息机制与 AMQP 极度吻合
   系统中各节点间的可靠通信(不包括 SQL 查询、日志等大数据流的传输)
   系统各部件广播服务
   标准的 AMQP 协议,方便第三方对接和扩展
   工作流方式消息流动,方便监控
Mnesia 分布式数据库

   MySQL NDB 出自同门,可靠性长时间验证过
   Mnesia 支持分布式事务,也支持脏读写
   无中心点,带持久内存数据库,数据存取软实时
   核心元数据全集群可见
分库分表

   对用户半透明,需要用户协助写 Hint
   目前支持 Range 和取模二种规则,后端兼容愚公系统
   目前支持四种 DML 语句的基本形式, order by 和 group by
   从性能考虑, SQL 解释、重写、结果集重构用纯 C 实现。
容灾

   对用户透明的故障恢复过程

   数据服务容灾
    –   数据库主从库的复制置成 Dual Master 结构
    –   proxy 通过捕捉错误,延迟重试的方法屏蔽故障

   平台服务容灾
    –   无单点设计,服务冗余
    –   ZooKeeper 提供的分布式锁算法选举出一个 leader ,负责调度和监控各种系统任务
    –   任务中间状态持久化,保证任务可断点续做
读写分离

   写操作发送到主库,读操作负载均衡到从库,提高从库的利用率
   何时分离
    –   透过主从是否同步状态判断
    –   时间维度
资源隔离

   过 CGroup 的 cpuset 、 memcg 以及 blkio 子模块分别限制用户的 MySQL 进程最大可以使用的 CP
    U 使用率、内存和 IOPS
   对用户 SQL 执行过程中索引使用情况、 IO 操作数量等进行分析,指导 Proxy 增加延迟的方法去限
    制用户的 QPS ,达到了减小该用户消耗的系统资源的目的
资源调度

   用户级别的 QOS 保证
   系统自动迁移,倒腾闲置资源
数据安全

   支持 SSL 连接


   通过白名单来设置允许访问数据库的 IP 地址列表


   Proxy 会把用户所有的数据库操作记录到日志分析服务器,扫描检查安全漏洞


   Proxy 可以根据安全部门的要求拦截各种类型的 SQL 语句


   误操作删除数据又没有备份的情况可以通过 Flashback 工具恢复数据


   …
下一阶段重点

   提高各部件特别是 proxy 的效率,降低平台自身的成本消耗


   资源隔离和调度完善 , 进一步降低成本


   和已有系统的融合,提高易用性
Q&A
 http://yufeng.info


新浪微博: @ 淘宝褚霸

Weitere ähnliche Inhalte

Was ist angesagt?

MySQL和IO(下)
MySQL和IO(下)MySQL和IO(下)
MySQL和IO(下)Feng Yu
 
美团点评技术沙龙010-点评RDS系统介绍
美团点评技术沙龙010-点评RDS系统介绍美团点评技术沙龙010-点评RDS系统介绍
美团点评技术沙龙010-点评RDS系统介绍美团点评技术团队
 
Flash存储设备在淘宝的应用实践
Flash存储设备在淘宝的应用实践Flash存储设备在淘宝的应用实践
Flash存储设备在淘宝的应用实践Feng Yu
 
众行业公司系统架构案例介绍
众行业公司系统架构案例介绍众行业公司系统架构案例介绍
众行业公司系统架构案例介绍mysqlops
 
美团点评技术沙龙14:美团云对象存储系统
美团点评技术沙龙14:美团云对象存储系统美团点评技术沙龙14:美团云对象存储系统
美团点评技术沙龙14:美团云对象存储系统美团点评技术团队
 
利用新硬件提升数据库性能
利用新硬件提升数据库性能利用新硬件提升数据库性能
利用新硬件提升数据库性能Feng Yu
 
新浪微博分布式缓存与队列-2013版
新浪微博分布式缓存与队列-2013版新浪微博分布式缓存与队列-2013版
新浪微博分布式缓存与队列-2013版XiaoJun Hong
 
大型系统的缓存标准化之路—从主从多级重client到一体化
大型系统的缓存标准化之路—从主从多级重client到一体化大型系统的缓存标准化之路—从主从多级重client到一体化
大型系统的缓存标准化之路—从主从多级重client到一体化XiaoJun Hong
 
基于MySQL的分布式数据库实践
基于MySQL的分布式数据库实践基于MySQL的分布式数据库实践
基于MySQL的分布式数据库实践jackbillow
 
“云存储系统”赏析系列分享三:Sql与nosql
“云存储系统”赏析系列分享三:Sql与nosql“云存储系统”赏析系列分享三:Sql与nosql
“云存储系统”赏析系列分享三:Sql与nosqlknuthocean
 
豆瓣网技术架构变迁
豆瓣网技术架构变迁豆瓣网技术架构变迁
豆瓣网技术架构变迁reinhardx
 
高性能队列Fqueue的设计和使用实践
高性能队列Fqueue的设计和使用实践高性能队列Fqueue的设计和使用实践
高性能队列Fqueue的设计和使用实践孙立
 
分布式缓存与队列
分布式缓存与队列分布式缓存与队列
分布式缓存与队列XiaoJun Hong
 
MySQL的并发线程性能问题
MySQL的并发线程性能问题MySQL的并发线程性能问题
MySQL的并发线程性能问题Hui Liu
 
美团技术沙龙04 - Kv Tair best practise
美团技术沙龙04 - Kv Tair best practise 美团技术沙龙04 - Kv Tair best practise
美团技术沙龙04 - Kv Tair best practise 美团点评技术团队
 
新浪微博Feed服务架构
新浪微博Feed服务架构新浪微博Feed服务架构
新浪微博Feed服务架构XiaoJun Hong
 
SSD在淘宝的应用实践
SSD在淘宝的应用实践SSD在淘宝的应用实践
SSD在淘宝的应用实践Feng Yu
 
大规模数据库存储方案
大规模数据库存储方案大规模数据库存储方案
大规模数据库存储方案XiaoJun Hong
 

Was ist angesagt? (20)

MySQL和IO(下)
MySQL和IO(下)MySQL和IO(下)
MySQL和IO(下)
 
美团点评技术沙龙010-点评RDS系统介绍
美团点评技术沙龙010-点评RDS系统介绍美团点评技术沙龙010-点评RDS系统介绍
美团点评技术沙龙010-点评RDS系统介绍
 
Flash存储设备在淘宝的应用实践
Flash存储设备在淘宝的应用实践Flash存储设备在淘宝的应用实践
Flash存储设备在淘宝的应用实践
 
众行业公司系统架构案例介绍
众行业公司系统架构案例介绍众行业公司系统架构案例介绍
众行业公司系统架构案例介绍
 
美团点评技术沙龙14:美团云对象存储系统
美团点评技术沙龙14:美团云对象存储系统美团点评技术沙龙14:美团云对象存储系统
美团点评技术沙龙14:美团云对象存储系统
 
利用新硬件提升数据库性能
利用新硬件提升数据库性能利用新硬件提升数据库性能
利用新硬件提升数据库性能
 
新浪微博分布式缓存与队列-2013版
新浪微博分布式缓存与队列-2013版新浪微博分布式缓存与队列-2013版
新浪微博分布式缓存与队列-2013版
 
大型系统的缓存标准化之路—从主从多级重client到一体化
大型系统的缓存标准化之路—从主从多级重client到一体化大型系统的缓存标准化之路—从主从多级重client到一体化
大型系统的缓存标准化之路—从主从多级重client到一体化
 
基于MySQL的分布式数据库实践
基于MySQL的分布式数据库实践基于MySQL的分布式数据库实践
基于MySQL的分布式数据库实践
 
“云存储系统”赏析系列分享三:Sql与nosql
“云存储系统”赏析系列分享三:Sql与nosql“云存储系统”赏析系列分享三:Sql与nosql
“云存储系统”赏析系列分享三:Sql与nosql
 
豆瓣网技术架构变迁
豆瓣网技术架构变迁豆瓣网技术架构变迁
豆瓣网技术架构变迁
 
高性能队列Fqueue的设计和使用实践
高性能队列Fqueue的设计和使用实践高性能队列Fqueue的设计和使用实践
高性能队列Fqueue的设计和使用实践
 
分布式缓存与队列
分布式缓存与队列分布式缓存与队列
分布式缓存与队列
 
MySQL的并发线程性能问题
MySQL的并发线程性能问题MySQL的并发线程性能问题
MySQL的并发线程性能问题
 
美团技术沙龙04 - Kv Tair best practise
美团技术沙龙04 - Kv Tair best practise 美团技术沙龙04 - Kv Tair best practise
美团技术沙龙04 - Kv Tair best practise
 
内存数据库[1]
内存数据库[1]内存数据库[1]
内存数据库[1]
 
新浪微博Feed服务架构
新浪微博Feed服务架构新浪微博Feed服务架构
新浪微博Feed服务架构
 
SSD在淘宝的应用实践
SSD在淘宝的应用实践SSD在淘宝的应用实践
SSD在淘宝的应用实践
 
大规模数据库存储方案
大规模数据库存储方案大规模数据库存储方案
大规模数据库存储方案
 
mercury
mercurymercury
mercury
 

Andere mochten auch

了解网络
了解网络了解网络
了解网络Feng Yu
 
高性能集群服务器(Erlang解决方案)
高性能集群服务器(Erlang解决方案)高性能集群服务器(Erlang解决方案)
高性能集群服务器(Erlang解决方案)Feng Yu
 
mnesia脑裂问题综述
mnesia脑裂问题综述mnesia脑裂问题综述
mnesia脑裂问题综述Feng Yu
 
了解IO协议栈
了解IO协议栈了解IO协议栈
了解IO协议栈Feng Yu
 
了解IO设备
了解IO设备了解IO设备
了解IO设备Feng Yu
 
MySQL和IO(上)
MySQL和IO(上)MySQL和IO(上)
MySQL和IO(上)Feng Yu
 
了解内存
了解内存了解内存
了解内存Feng Yu
 
Rethink db&tokudb调研测试报告
Rethink db&tokudb调研测试报告Rethink db&tokudb调研测试报告
Rethink db&tokudb调研测试报告Feng Yu
 

Andere mochten auch (8)

了解网络
了解网络了解网络
了解网络
 
高性能集群服务器(Erlang解决方案)
高性能集群服务器(Erlang解决方案)高性能集群服务器(Erlang解决方案)
高性能集群服务器(Erlang解决方案)
 
mnesia脑裂问题综述
mnesia脑裂问题综述mnesia脑裂问题综述
mnesia脑裂问题综述
 
了解IO协议栈
了解IO协议栈了解IO协议栈
了解IO协议栈
 
了解IO设备
了解IO设备了解IO设备
了解IO设备
 
MySQL和IO(上)
MySQL和IO(上)MySQL和IO(上)
MySQL和IO(上)
 
了解内存
了解内存了解内存
了解内存
 
Rethink db&tokudb调研测试报告
Rethink db&tokudb调研测试报告Rethink db&tokudb调研测试报告
Rethink db&tokudb调研测试报告
 

Ähnlich wie 低成本和高性能MySQL云架构探索

王龙:百度数据库架构演变与设计
王龙:百度数据库架构演变与设计王龙:百度数据库架构演变与设计
王龙:百度数据库架构演变与设计YANGL *
 
Accelerate Database as a Service(DBaaS) in Cloud era
Accelerate Database as a Service(DBaaS) in Cloud eraAccelerate Database as a Service(DBaaS) in Cloud era
Accelerate Database as a Service(DBaaS) in Cloud eraJunchi Zhang
 
云计算与开源 刘黎明 世纪互联
云计算与开源  刘黎明  世纪互联云计算与开源  刘黎明  世纪互联
云计算与开源 刘黎明 世纪互联Liming Liu
 
MySQL5.6&5.7 Cluster 7.3 Review
MySQL5.6&5.7 Cluster 7.3 ReviewMySQL5.6&5.7 Cluster 7.3 Review
MySQL5.6&5.7 Cluster 7.3 Review郁萍 王
 
淘宝网架构变迁和挑战(Oracle架构师日)
淘宝网架构变迁和挑战(Oracle架构师日)淘宝网架构变迁和挑战(Oracle架构师日)
淘宝网架构变迁和挑战(Oracle架构师日)vanadies10
 
云计算可信评估方法研究
云计算可信评估方法研究云计算可信评估方法研究
云计算可信评估方法研究iamafan
 
天涯论坛的技术进化史-Qcon2011
天涯论坛的技术进化史-Qcon2011天涯论坛的技术进化史-Qcon2011
天涯论坛的技术进化史-Qcon2011Yiwei Ma
 
Top100summit 高楼-7点测试-zee-性能测试案例分享
Top100summit 高楼-7点测试-zee-性能测试案例分享Top100summit 高楼-7点测试-zee-性能测试案例分享
Top100summit 高楼-7点测试-zee-性能测试案例分享drewz lin
 
Sina my sq概述及优化
Sina my sq概述及优化Sina my sq概述及优化
Sina my sq概述及优化pigso
 
MySQL 網路參考架構
MySQL 網路參考架構MySQL 網路參考架構
MySQL 網路參考架構郁萍 王
 
Pegasus KV Storage, Let the Users focus on their work (2018/07)
Pegasus KV Storage, Let the Users focus on their work (2018/07)Pegasus KV Storage, Let the Users focus on their work (2018/07)
Pegasus KV Storage, Let the Users focus on their work (2018/07)涛 吴
 
腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验
腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验
腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验colderboy17
 
腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验
腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验
腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验guiyingshenxia
 
欢迎使用SQL Anywhere 11
欢迎使用SQL Anywhere 11欢迎使用SQL Anywhere 11
欢迎使用SQL Anywhere 11zc_ncepu
 
章文嵩:使用Lvs集群架设高可扩展的网络服务
章文嵩:使用Lvs集群架设高可扩展的网络服务章文嵩:使用Lvs集群架设高可扩展的网络服务
章文嵩:使用Lvs集群架设高可扩展的网络服务drewz lin
 
使用LVS集群架设高可扩展的网络服务
使用LVS集群架设高可扩展的网络服务使用LVS集群架设高可扩展的网络服务
使用LVS集群架设高可扩展的网络服务Wensong Zhang
 
新浪微博平台与安全架构
新浪微博平台与安全架构新浪微博平台与安全架构
新浪微博平台与安全架构n716
 

Ähnlich wie 低成本和高性能MySQL云架构探索 (20)

王龙:百度数据库架构演变与设计
王龙:百度数据库架构演变与设计王龙:百度数据库架构演变与设计
王龙:百度数据库架构演变与设计
 
Accelerate Database as a Service(DBaaS) in Cloud era
Accelerate Database as a Service(DBaaS) in Cloud eraAccelerate Database as a Service(DBaaS) in Cloud era
Accelerate Database as a Service(DBaaS) in Cloud era
 
云计算与开源 刘黎明 世纪互联
云计算与开源  刘黎明  世纪互联云计算与开源  刘黎明  世纪互联
云计算与开源 刘黎明 世纪互联
 
MySQL5.6&5.7 Cluster 7.3 Review
MySQL5.6&5.7 Cluster 7.3 ReviewMySQL5.6&5.7 Cluster 7.3 Review
MySQL5.6&5.7 Cluster 7.3 Review
 
淘宝网架构变迁和挑战(Oracle架构师日)
淘宝网架构变迁和挑战(Oracle架构师日)淘宝网架构变迁和挑战(Oracle架构师日)
淘宝网架构变迁和挑战(Oracle架构师日)
 
SWsoft_Prim@Telecom
SWsoft_Prim@TelecomSWsoft_Prim@Telecom
SWsoft_Prim@Telecom
 
Java@taobao
Java@taobaoJava@taobao
Java@taobao
 
云计算可信评估方法研究
云计算可信评估方法研究云计算可信评估方法研究
云计算可信评估方法研究
 
天涯论坛的技术进化史-Qcon2011
天涯论坛的技术进化史-Qcon2011天涯论坛的技术进化史-Qcon2011
天涯论坛的技术进化史-Qcon2011
 
Top100summit 高楼-7点测试-zee-性能测试案例分享
Top100summit 高楼-7点测试-zee-性能测试案例分享Top100summit 高楼-7点测试-zee-性能测试案例分享
Top100summit 高楼-7点测试-zee-性能测试案例分享
 
Sina my sq概述及优化
Sina my sq概述及优化Sina my sq概述及优化
Sina my sq概述及优化
 
MySQL 網路參考架構
MySQL 網路參考架構MySQL 網路參考架構
MySQL 網路參考架構
 
Pegasus KV Storage, Let the Users focus on their work (2018/07)
Pegasus KV Storage, Let the Users focus on their work (2018/07)Pegasus KV Storage, Let the Users focus on their work (2018/07)
Pegasus KV Storage, Let the Users focus on their work (2018/07)
 
腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验
腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验
腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验
 
腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验
腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验
腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验
 
欢迎使用SQL Anywhere 11
欢迎使用SQL Anywhere 11欢迎使用SQL Anywhere 11
欢迎使用SQL Anywhere 11
 
章文嵩:使用Lvs集群架设高可扩展的网络服务
章文嵩:使用Lvs集群架设高可扩展的网络服务章文嵩:使用Lvs集群架设高可扩展的网络服务
章文嵩:使用Lvs集群架设高可扩展的网络服务
 
LVS
LVSLVS
LVS
 
使用LVS集群架设高可扩展的网络服务
使用LVS集群架设高可扩展的网络服务使用LVS集群架设高可扩展的网络服务
使用LVS集群架设高可扩展的网络服务
 
新浪微博平台与安全架构
新浪微博平台与安全架构新浪微博平台与安全架构
新浪微博平台与安全架构
 

Mehr von Feng Yu

Cpu高效编程技术
Cpu高效编程技术Cpu高效编程技术
Cpu高效编程技术Feng Yu
 
了解Cpu
了解Cpu了解Cpu
了解CpuFeng Yu
 
开源混合存储方案(Flashcache)
开源混合存储方案(Flashcache)开源混合存储方案(Flashcache)
开源混合存储方案(Flashcache)Feng Yu
 
Erlang low cost_clound_computing
Erlang low cost_clound_computingErlang low cost_clound_computing
Erlang low cost_clound_computingFeng Yu
 
Systemtap
SystemtapSystemtap
SystemtapFeng Yu
 
Oprofile linux
Oprofile linuxOprofile linux
Oprofile linuxFeng Yu
 
C1000K高性能服务器构建技术
C1000K高性能服务器构建技术C1000K高性能服务器构建技术
C1000K高性能服务器构建技术Feng Yu
 
Erlang全接触
Erlang全接触Erlang全接触
Erlang全接触Feng Yu
 
Tsung 压力测试工具
Tsung 压力测试工具Tsung 压力测试工具
Tsung 压力测试工具Feng Yu
 
Inside Erlang Vm II
Inside Erlang Vm IIInside Erlang Vm II
Inside Erlang Vm IIFeng Yu
 

Mehr von Feng Yu (12)

Cpu高效编程技术
Cpu高效编程技术Cpu高效编程技术
Cpu高效编程技术
 
了解Cpu
了解Cpu了解Cpu
了解Cpu
 
开源混合存储方案(Flashcache)
开源混合存储方案(Flashcache)开源混合存储方案(Flashcache)
开源混合存储方案(Flashcache)
 
Erlang low cost_clound_computing
Erlang low cost_clound_computingErlang low cost_clound_computing
Erlang low cost_clound_computing
 
Systemtap
SystemtapSystemtap
Systemtap
 
Oprofile linux
Oprofile linuxOprofile linux
Oprofile linux
 
Go
GoGo
Go
 
C1000K高性能服务器构建技术
C1000K高性能服务器构建技术C1000K高性能服务器构建技术
C1000K高性能服务器构建技术
 
Erlang全接触
Erlang全接触Erlang全接触
Erlang全接触
 
Tsung 压力测试工具
Tsung 压力测试工具Tsung 压力测试工具
Tsung 压力测试工具
 
Inside Erlang Vm II
Inside Erlang Vm IIInside Erlang Vm II
Inside Erlang Vm II
 
Go Lang
Go LangGo Lang
Go Lang
 

低成本和高性能MySQL云架构探索

  • 2. 关于我  淘宝核心系统资深技术专家 余锋  超过 15 年互联网行业的网络、内核以及底层软件开发经验  专注于高性能分布式服务器的研究和实现  擅长构建大规模集群服务器  对数据库系统和分布式文件存储有深入的研究
  • 4. MySQL 运维面临的问题  易用性偏差  性能 – 软硬件未经优化,处于原始阶段 – 不同阶段的软硬件性能相差巨大  集群 – 主备不完全同步和备机利用率低 – 以业务划分,集群分散管理,运维成本高
  • 5. MySQL 平台化要解决什么 ?  高效 MySQL 数据库服务支持,自动化运维  提高资源利用率,降低平台成本  7*24 长期运行,屏蔽软硬件的变化
  • 6. MySQL 平台设计原则  平台对外保持单一入口,对内维护单一的资源池。  保证服务的高可用性,消除单点故障  保证系统是弹性可伸缩的,可以动态的增加、删减计算与存储节点。  保证分配给用户的资源也是弹性可伸缩的,资源之间相互隔离。
  • 9. 第一版的经验和教训  经验 – 采用开放成熟的第三方部件的好处 – 开放的平台,方便用户扩展 – 热部署和升级对不停机维护的意义 – 容错系统设计的重要性  教训 – 保持和 MySQL 的绝对兼容的重要性 – 数据访问主路径必须短且稳定 – proxy 性能、稳定性和成本的关系 – 日志实时收集和处理的难度 – 系统各部件部署的粒度,减少系统升级带来不良影响
  • 11. 平台特性  平台足够稳定,支持热升级  支持几千台物理机规模,  以对用户透明的形式提供主从热备、数据备份、迁移、容灾、读写分离、分库分表功能  资源隔离,按需分配和限制 CPU 、内存和 IO 资源  不影响提供数据服务的前提下根据用户业务的发展动态的扩容和缩容  屏蔽数据节点不同的软硬件差异
  • 12. 平台概况  稳定性生产系统验证过  依赖的开源组件: Mnesia 、 Lvs 、 RabbitMQ 、 ZooKeeper  代码规模 – 核心使用以高性能、健壮以及可伸缩性出名的 Erlang 语言开发 – 5 万行 Erlang 代码, 3 万 c 代码, 2 万其他代码 – 六人团队,历时 1 年
  • 13. 为什么要用 Erlang 实现  高并发 , 高性能 , 集群易扩展  时间检验的高可靠  强大的管理功能 , 方便的问题定位支持  强大的交互性 , 与其他系统整合能力
  • 17. LVS  安全隔离  L4 流量切割,实现负载均衡  Proxy 故障自动转移
  • 18. ZooKeeper  作为配置服务器  提供分布式锁  MySQL 插件监控所有实例的可用性
  • 19. RabbitMQ  Erlang 消息机制与 AMQP 极度吻合  系统中各节点间的可靠通信(不包括 SQL 查询、日志等大数据流的传输)  系统各部件广播服务  标准的 AMQP 协议,方便第三方对接和扩展  工作流方式消息流动,方便监控
  • 20. Mnesia 分布式数据库  MySQL NDB 出自同门,可靠性长时间验证过  Mnesia 支持分布式事务,也支持脏读写  无中心点,带持久内存数据库,数据存取软实时  核心元数据全集群可见
  • 21. 分库分表  对用户半透明,需要用户协助写 Hint  目前支持 Range 和取模二种规则,后端兼容愚公系统  目前支持四种 DML 语句的基本形式, order by 和 group by  从性能考虑, SQL 解释、重写、结果集重构用纯 C 实现。
  • 22. 容灾  对用户透明的故障恢复过程  数据服务容灾 – 数据库主从库的复制置成 Dual Master 结构 – proxy 通过捕捉错误,延迟重试的方法屏蔽故障  平台服务容灾 – 无单点设计,服务冗余 – ZooKeeper 提供的分布式锁算法选举出一个 leader ,负责调度和监控各种系统任务 – 任务中间状态持久化,保证任务可断点续做
  • 23. 读写分离  写操作发送到主库,读操作负载均衡到从库,提高从库的利用率  何时分离 – 透过主从是否同步状态判断 – 时间维度
  • 24. 资源隔离  过 CGroup 的 cpuset 、 memcg 以及 blkio 子模块分别限制用户的 MySQL 进程最大可以使用的 CP U 使用率、内存和 IOPS  对用户 SQL 执行过程中索引使用情况、 IO 操作数量等进行分析,指导 Proxy 增加延迟的方法去限 制用户的 QPS ,达到了减小该用户消耗的系统资源的目的
  • 25. 资源调度  用户级别的 QOS 保证  系统自动迁移,倒腾闲置资源
  • 26. 数据安全  支持 SSL 连接  通过白名单来设置允许访问数据库的 IP 地址列表  Proxy 会把用户所有的数据库操作记录到日志分析服务器,扫描检查安全漏洞  Proxy 可以根据安全部门的要求拦截各种类型的 SQL 语句  误操作删除数据又没有备份的情况可以通过 Flashback 工具恢复数据  …
  • 27. 下一阶段重点  提高各部件特别是 proxy 的效率,降低平台自身的成本消耗  资源隔离和调度完善 , 进一步降低成本  和已有系统的融合,提高易用性