基亍MySQL的分布式实践              杨海朝   Senior MySQL DBA@SINA     jackbillow@gmail.com       DTCC 2011          2011.4.15
业务增长       usage
议题• Sharding策略• Cache应用• NoSQL应用• 多IDC部署
Database Shardingwhat drives the need for database sharding?         http://www.codefutures.com/database-sharding/
Database Shardingwhat 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.1Master不拆分Slave分成多组
Scaling实践#4.2以表对象进行拆分
Scaling实践#4.3按不同partitioning key进行拆分
Scaling实践#5时间维度来分,持续归档
Scaling实践#6中间件来减少开发和运维的成本
Sharding原则• 一开始就关注架构设计• Scale-up  Scale-out  Scale-up• 成本可控下硬件是首选• 逐步解决拆分中成本问题
挑战• 如何减少TCO?• 如何权衡业务后期的功能扩展?• 故障率如何降低?• 大批量的快速部署?
CachingEverything runs from memory in Web 2.0 --Evan Weaver
Caching• Delay is the fault  --MeDB的延时越来越不可以接受,进行了并发 复制的开发,降低响应时间还是没有解决
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:• 关系• 计数• 通知……
NoSQLMySQL  Redis复制• 通过RBR解析BINLOG同步到redis• Redis提供特定数据结构的读访问• 实现关系型数据转变成队列数据
NoSQLRedis  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!    @jackbillowjackbillow@gmail.com       Q&A长期招聘,欢迎加入!
Upcoming SlideShare
Loading in...5
×

基于My sql的分布式数据库实践

827

Published on

Published in: Education
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
827
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
13
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

基于My sql的分布式数据库实践

  1. 1. 基亍MySQL的分布式实践 杨海朝 Senior MySQL DBA@SINA jackbillow@gmail.com DTCC 2011 2011.4.15
  2. 2. 业务增长 usage
  3. 3. 议题• Sharding策略• Cache应用• NoSQL应用• 多IDC部署
  4. 4. Database Shardingwhat drives the need for database sharding? http://www.codefutures.com/database-sharding/
  5. 5. Database Shardingwhat is database sharding? http://www.codefutures.com/database-sharding/
  6. 6. 前期• 一开始就考虑CAP & BASE理论• 异步所有能异步的操作• 避免分布式事务
  7. 7. 前期按功能分割:• 不同的业务不同的DB• Master/Slaves• MPSM• 多个DB一个port
  8. 8. 前期水平切分:• 索引和数据在不同的DB• Table partitioning(256张tables)
  9. 9. Scaling实践#1• SPSM• 提高slave数量
  10. 10. Scaling实践#2• 索引和数据物理分开• 一个DB一个端口
  11. 11. Scaling实践#3提高单机的性能:• SSD• IODrive• Cachecade• Flashcache
  12. 12. Scaling实践#4.1Master不拆分Slave分成多组
  13. 13. Scaling实践#4.2以表对象进行拆分
  14. 14. Scaling实践#4.3按不同partitioning key进行拆分
  15. 15. Scaling实践#5时间维度来分,持续归档
  16. 16. Scaling实践#6中间件来减少开发和运维的成本
  17. 17. Sharding原则• 一开始就关注架构设计• Scale-up  Scale-out  Scale-up• 成本可控下硬件是首选• 逐步解决拆分中成本问题
  18. 18. 挑战• 如何减少TCO?• 如何权衡业务后期的功能扩展?• 故障率如何降低?• 大批量的快速部署?
  19. 19. CachingEverything runs from memory in Web 2.0 --Evan Weaver
  20. 20. Caching• Delay is the fault --MeDB的延时越来越不可以接受,进行了并发 复制的开发,降低响应时间还是没有解决
  21. 21. Caching第一阶段: MySQL + Memcached Memcache Server Client Database
  22. 22. Caching第二阶段: MySQL + UDF
  23. 23. Caching第三阶段: 按冷热度分层http://natishalom.typepad.com/nati_shaloms_blog/2010/10/nocap.html
  24. 24. Caching原则• 采用一致性Hash部署• Cache按照冷热分层• 所有热数据都放入Cache• 双写来避免雪崩问题• 队列方式持久化落入MySQL
  25. 25. 挑战• 双写导致应用复杂?• 实现locality RAM?• 多IDC部署Cache的复杂度问题?
  26. 26. NoSQL• No use only MySQL• 高性能• 丰富的数据类型
  27. 27. NoSQL独立redis:• 关系• 计数• 通知……
  28. 28. NoSQLMySQL  Redis复制• 通过RBR解析BINLOG同步到redis• Redis提供特定数据结构的读访问• 实现关系型数据转变成队列数据
  29. 29. NoSQLRedis  MySQL复制• Redis提供特定数据结构的读写• 通过replication接口同时写入到MySQL
  30. 30. NoSQL对redis进行完善• 解决replicaton问题(rdb+aof)• 容灾问题(加入position思想)
  31. 31. 挑战• 如何批量管理?• 后期容量扩展?• 复杂数据的load速度问题?
  32. 32. 多IDC部署Federated table
  33. 33. 多IDC部署Master/Master
  34. 34. 多IDC部署开发多主复制
  35. 35. 多IDC部署Pub/sub + MySQL replication http://www.codeproject.com/KB/WCF/ASENS.aspx?msg=2937455
  36. 36. 挑战• 延时带来的应用时序问题?• 部署datacenter的数量有限?
  37. 37. 总结• 持续的database sharding• 硬件解决是首选• 数据库简化为存储• 关系型和非关系结合• 谨慎考虑多机房部署
  38. 38. Thank you for coming! @jackbillowjackbillow@gmail.com Q&A长期招聘,欢迎加入!
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×