SlideShare a Scribd company logo
1 of 38
Download to read offline
基亍MySQL的分布式实践


              杨海朝
   Senior MySQL DBA@SINA
     jackbillow@gmail.com


       DTCC 2011
          2011.4.15
业务增长




       usage
议题

• Sharding策略
• Cache应用
• NoSQL应用
• 多IDC部署
Database Sharding

what drives the need for database sharding?




         http://www.codefutures.com/database-sharding/
Database Sharding

what is database sharding?




           http://www.codefutures.com/database-sharding/
前期

• 一开始就考虑CAP & BASE理论
• 异步所有能异步的操作
• 避免分布式事务
前期

按功能分割:
• 不同的业务不同的DB
• Master/Slaves
• MPSM
• 多个DB一个port
前期

水平切分:
• 索引和数据在不同的DB
• Table partitioning(256张tables)
Scaling实践#1

• SPSM
• 提高slave数量
Scaling实践#2

• 索引和数据物理分开
• 一个DB一个端口
Scaling实践#3

提高单机的性能:
• SSD
• IODrive
• Cachecade
• Flashcache
Scaling实践#4.1

Master不拆分Slave分成多组
Scaling实践#4.2

以表对象进行拆分
Scaling实践#4.3

按不同partitioning key进行拆分
Scaling实践#5

时间维度来分,持续归档
Scaling实践#6

中间件来减少开发和运维的成本
Sharding原则

• 一开始就关注架构设计
• Scale-up  Scale-out  Scale-up
• 成本可控下硬件是首选
• 逐步解决拆分中成本问题
挑战

• 如何减少TCO?
• 如何权衡业务后期的功能扩展?
• 故障率如何降低?
• 大批量的快速部署?
Caching




Everything runs from memory in Web 2.0
 --Evan Weaver
Caching

• Delay is the fault
  --Me


DB的延时越来越不可以接受,进行了并发
 复制的开发,降低响应时间还是没有解决
Caching

第一阶段: MySQL + Memcached
                  Memcache
                   Server




  Client




                  Database
Caching

第二阶段: MySQL + UDF
Caching

第三阶段: 按冷热度分层




http://natishalom.typepad.com/nati_shaloms_blog/2010/10/nocap.html
Caching原则

• 采用一致性Hash部署
• Cache按照冷热分层
• 所有热数据都放入Cache
• 双写来避免雪崩问题
• 队列方式持久化落入MySQL
挑战

• 双写导致应用复杂?
• 实现locality RAM?
• 多IDC部署Cache的复杂度问题?
NoSQL

• No use only MySQL
• 高性能
• 丰富的数据类型
NoSQL

独立redis:
• 关系
• 计数
• 通知
……
NoSQL

MySQL  Redis复制
• 通过RBR解析BINLOG同步到redis
• Redis提供特定数据结构的读访问
• 实现关系型数据转变成队列数据
NoSQL

Redis  MySQL复制
• Redis提供特定数据结构的读写
• 通过replication接口同时写入到MySQL
NoSQL

对redis进行完善
• 解决replicaton问题(rdb+aof)
• 容灾问题(加入position思想)
挑战

• 如何批量管理?
• 后期容量扩展?
• 复杂数据的load速度问题?
多IDC部署

Federated table
多IDC部署

Master/Master
多IDC部署

开发多主复制
多IDC部署

Pub/sub + MySQL replication




    http://www.codeproject.com/KB/WCF/ASENS.aspx?msg=2937455
挑战

• 延时带来的应用时序问题?
• 部署datacenter的数量有限?
总结

• 持续的database sharding
• 硬件解决是首选
• 数据库简化为存储
• 关系型和非关系结合
• 谨慎考虑多机房部署
Thank you for coming!
    @jackbillow
jackbillow@gmail.com
       Q&A
长期招聘,欢迎加入!

More Related Content

Viewers also liked

Viewers also liked (8)

数据库Sharding专题
数据库Sharding专题数据库Sharding专题
数据库Sharding专题
 
大型电商的数据服务的要点和难点
大型电商的数据服务的要点和难点 大型电商的数据服务的要点和难点
大型电商的数据服务的要点和难点
 
Modern Database Development Oow2008 Lucas Jellema
Modern Database Development Oow2008 Lucas JellemaModern Database Development Oow2008 Lucas Jellema
Modern Database Development Oow2008 Lucas Jellema
 
Chap02: The database Development process
Chap02: The database Development processChap02: The database Development process
Chap02: The database Development process
 
唯品会大数据实践 Sacc pub
唯品会大数据实践 Sacc pub唯品会大数据实践 Sacc pub
唯品会大数据实践 Sacc pub
 
豆瓣数据架构实践
豆瓣数据架构实践豆瓣数据架构实践
豆瓣数据架构实践
 
MySQL数据库设计、优化
MySQL数据库设计、优化MySQL数据库设计、优化
MySQL数据库设计、优化
 
MySQL技术分享:一步到位实现mysql优化
MySQL技术分享:一步到位实现mysql优化MySQL技术分享:一步到位实现mysql优化
MySQL技术分享:一步到位实现mysql优化
 

Similar to 基于MySQL的分布式数据库实践

基于My sql的分布式数据库实践 公开
基于My sql的分布式数据库实践 公开基于My sql的分布式数据库实践 公开
基于My sql的分布式数据库实践 公开
YANGL *
 
大型网站架构的发展
大型网站架构的发展大型网站架构的发展
大型网站架构的发展
drewz lin
 
大型网站架构的发展
大型网站架构的发展大型网站架构的发展
大型网站架构的发展
Hesey
 
Bypat博客出品-服务器运维集群方法总结
Bypat博客出品-服务器运维集群方法总结Bypat博客出品-服务器运维集群方法总结
Bypat博客出品-服务器运维集群方法总结
redhat9
 
Exadata那点事
Exadata那点事Exadata那点事
Exadata那点事
freezr
 
有道云笔记架构简介
有道云笔记架构简介有道云笔记架构简介
有道云笔记架构简介
drewz lin
 
Bypat博客出品-服务器运维集群方法总结3
Bypat博客出品-服务器运维集群方法总结3Bypat博客出品-服务器运维集群方法总结3
Bypat博客出品-服务器运维集群方法总结3
redhat9
 
浅谈 My sql 性能调优
浅谈 My sql 性能调优浅谈 My sql 性能调优
浅谈 My sql 性能调优
thinkinlamp
 
4.陈群-唯品会大规模Redis集群存储架构演进.pdf
4.陈群-唯品会大规模Redis集群存储架构演进.pdf4.陈群-唯品会大规模Redis集群存储架构演进.pdf
4.陈群-唯品会大规模Redis集群存储架构演进.pdf
StevenShing
 
大规模网站架构
大规模网站架构大规模网站架构
大规模网站架构
drewz lin
 

Similar to 基于MySQL的分布式数据库实践 (20)

基于My sql的分布式数据库实践 公开
基于My sql的分布式数据库实践 公开基于My sql的分布式数据库实践 公开
基于My sql的分布式数据库实践 公开
 
浅谈电商网站数据访问层(DAL)与 ORM 之适用性
浅谈电商网站数据访问层(DAL)与 ORM 之适用性浅谈电商网站数据访问层(DAL)与 ORM 之适用性
浅谈电商网站数据访问层(DAL)与 ORM 之适用性
 
NoSQL误用和常见陷阱分析
NoSQL误用和常见陷阱分析NoSQL误用和常见陷阱分析
NoSQL误用和常见陷阱分析
 
Bypat博客出品-服务器运维集群方法总结2
Bypat博客出品-服务器运维集群方法总结2Bypat博客出品-服务器运维集群方法总结2
Bypat博客出品-服务器运维集群方法总结2
 
内存数据库[1]
内存数据库[1]内存数据库[1]
内存数据库[1]
 
MySQL设计、优化、运维
MySQL设计、优化、运维MySQL设计、优化、运维
MySQL设计、优化、运维
 
大型网站架构的发展
大型网站架构的发展大型网站架构的发展
大型网站架构的发展
 
大型网站架构的发展
大型网站架构的发展大型网站架构的发展
大型网站架构的发展
 
数据架构方面的一些探讨
数据架构方面的一些探讨数据架构方面的一些探讨
数据架构方面的一些探讨
 
Bypat博客出品-服务器运维集群方法总结
Bypat博客出品-服务器运维集群方法总结Bypat博客出品-服务器运维集群方法总结
Bypat博客出品-服务器运维集群方法总结
 
Exadata那点事
Exadata那点事Exadata那点事
Exadata那点事
 
有道云笔记架构简介
有道云笔记架构简介有道云笔记架构简介
有道云笔记架构简介
 
Bypat博客出品-服务器运维集群方法总结3
Bypat博客出品-服务器运维集群方法总结3Bypat博客出品-服务器运维集群方法总结3
Bypat博客出品-服务器运维集群方法总结3
 
基于MySQL可扩展架构设计
基于MySQL可扩展架构设计基于MySQL可扩展架构设计
基于MySQL可扩展架构设计
 
浅谈 My sql 性能调优
浅谈 My sql 性能调优浅谈 My sql 性能调优
浅谈 My sql 性能调优
 
MySQL应用优化实践
MySQL应用优化实践MySQL应用优化实践
MySQL应用优化实践
 
4.陈群-唯品会大规模Redis集群存储架构演进.pdf
4.陈群-唯品会大规模Redis集群存储架构演进.pdf4.陈群-唯品会大规模Redis集群存储架构演进.pdf
4.陈群-唯品会大规模Redis集群存储架构演进.pdf
 
豆瓣网技术架构变迁
豆瓣网技术架构变迁豆瓣网技术架构变迁
豆瓣网技术架构变迁
 
大规模网站架构
大规模网站架构大规模网站架构
大规模网站架构
 
新浪微博Feed服务架构
新浪微博Feed服务架构新浪微博Feed服务架构
新浪微博Feed服务架构
 

基于MySQL的分布式数据库实践