Alibaba数据库运维最佳实践

4,969 views
4,807 views

Published on

velocity 2010 beijing

Published in: Technology
2 Comments
19 Likes
Statistics
Notes
No Downloads
Views
Total views
4,969
On SlideShare
0
From Embeds
0
Number of Embeds
1,727
Actions
Shares
0
Downloads
137
Comments
2
Likes
19
Embeds 0
No embeds

No notes for slide

Alibaba数据库运维最佳实践

  1. 1. Alibaba 数据库运维最佳实践 张瑞 @ Alibaba 运维部
  2. 2. Alibaba 数据库发展历程 <ul><li>成长的烦恼 </li></ul><ul><ul><li>从 PC 服务器到小型机 </li></ul></ul><ul><ul><li>集中式 ORACLE 数据库 </li></ul></ul><ul><ul><li>可用性依赖高端硬件 </li></ul></ul><ul><ul><li>性能无法线性扩展 </li></ul></ul><ul><li>解决方案 </li></ul><ul><ul><li>扩展性与高可用 </li></ul></ul><ul><ul><ul><li>分布式 MySQL 数据库集群  </li></ul></ul></ul><ul><ul><li>数据同步解决方案 </li></ul></ul><ul><ul><ul><li>基于日志解析的数据同步 </li></ul></ul></ul><ul><ul><li>提升数据库性能 </li></ul></ul><ul><ul><ul><li>SSD 高性能数据库集群 </li></ul></ul></ul>
  3. 3. <ul><li>Alibaba 分布式数据库 </li></ul>
  4. 4. 分布式数据库架构 <ul><li>概述 </li></ul><ul><ul><li>MySQL 数据库 </li></ul></ul><ul><ul><li>应用透明访问 </li></ul></ul><ul><ul><li>DB Proxy </li></ul></ul><ul><ul><li>功能分区 </li></ul></ul><ul><ul><li>数据分片 </li></ul></ul><ul><ul><li>高可用,可扩展 </li></ul></ul><ul><ul><li>性能与运维 </li></ul></ul><ul><li>缺点分析 </li></ul><ul><ul><li>应用受限 </li></ul></ul><ul><ul><li>关系型弱化 </li></ul></ul><ul><ul><li>不支持事务 </li></ul></ul><ul><li>功能增强 </li></ul><ul><ul><li>跨节点 Join </li></ul></ul><ul><ul><li>排序分页 </li></ul></ul>
  5. 5. 数据切分策略 -Virtual Partition Hash Virtual partition Virtual partition Virtual partition Virtual partition Virtual partition Virtual partition Physical node Virtual partition Virtual partition Virtual partition Virtual partition Virtual partition Virtual partition Physical node Virtual partition Virtual partition Virtual partition Virtual partition Virtual partition Virtual partition Physical node Virtual partition Virtual partition Virtual partition Virtual partition Virtual partition Virtual partition Physical node Virtual partition Virtual partition Virtual partition Virtual partition Virtual partition Virtual partition Virtual partition Virtual partition Physical node Physical node Virtual partition Virtual partition Virtual partition Virtual partition Virtual partition Virtual partition Virtual partition Virtual partition
  6. 6. MySQL 高可用方案 <ul><li>基于 MySQL 复制 </li></ul><ul><li>应用透明访问 </li></ul><ul><li>探测机制简单 </li></ul><ul><li>切换快,影响小 </li></ul><ul><li>配置灵活,节省资源 </li></ul><ul><li>DRBD+Heartbeat ? </li></ul>Master database Master database Heartbeat DB Proxy App Replication Heartbeat Connection pool
  7. 7. 数据库高可用与硬件选型策略 <ul><li>ORACLE </li></ul><ul><ul><li>集中式架构 </li></ul></ul><ul><ul><li>Shared-disk  </li></ul></ul><ul><ul><li>HA 方案:商业软件 </li></ul></ul><ul><ul><li>硬件选型策略 </li></ul></ul><ul><ul><ul><li>小型机, 4 路高性能 PC </li></ul></ul></ul><ul><ul><ul><li>性能,扩展性,可用性 </li></ul></ul></ul><ul><ul><ul><li>外接存储设备 </li></ul></ul></ul><ul><li>MySQL </li></ul><ul><ul><li>分布式架构 </li></ul></ul><ul><ul><li>Shared-nothing </li></ul></ul><ul><ul><li>HA 方案: DB Proxy </li></ul></ul><ul><ul><li>硬件选型策略 </li></ul></ul><ul><ul><ul><li>2 路 PC 服务器 </li></ul></ul></ul><ul><ul><ul><li>处理能力与 IO 均衡 </li></ul></ul></ul><ul><ul><ul><li>SAS+SSD 混插 </li></ul></ul></ul>
  8. 8. <ul><li>数据同步解决方案 </li></ul>
  9. 9. 数据同步方案分析 <ul><li>为什么需要数据同步? </li></ul><ul><ul><li>多数据中心架构 </li></ul></ul><ul><ul><li>系统之间的数据交互 </li></ul></ul><ul><ul><li>跨平台数据库同步 </li></ul></ul><ul><ul><li>数据库扩展性问题 </li></ul></ul><ul><li>现有解决方案 </li></ul><ul><ul><li>数据库触发器记录变化 </li></ul></ul><ul><ul><li>系统之间数据交互 </li></ul></ul><ul><ul><ul><li>DBLink </li></ul></ul></ul><ul><ul><ul><li>外部文件 </li></ul></ul></ul><ul><li>商业产品分析 </li></ul><ul><ul><li>ORACLE Dataguard , MySQL Replication </li></ul></ul><ul><ul><li>Shareplex , Goldengate </li></ul></ul>
  10. 10. 基于日志解析的数据同步方案 <ul><li>概述 </li></ul><ul><ul><li>替代触发器 </li></ul></ul><ul><ul><li>实时解析,延迟小 </li></ul></ul><ul><ul><li>对数据库性能影响小 </li></ul></ul><ul><ul><li>数据库,文件,图片一致性  </li></ul></ul><ul><ul><li>ORACLE,MySQL 统一解决方案 </li></ul></ul><ul><ul><li>解析主键,实时抽取  </li></ul></ul><ul><ul><li>支持多种目标端 </li></ul></ul><ul><li>功能增强 </li></ul><ul><ul><li>解析字段 </li></ul></ul><ul><ul><li>并行应用 </li></ul></ul>提取,打包 解包,应用 日志数据库 目标数据库 外部文件 索引 Cache 源数据库 日志解析
  11. 11. 搜索引擎实时更新 <ul><li>数据库日志实时解析 </li></ul><ul><li>搜索引擎实时更新 </li></ul><ul><li>解决搜索延迟的问题 </li></ul><ul><li>提升数据库处理能力 </li></ul><ul><li>读写分离架构 </li></ul>应用 搜索引擎 数据库 日志解析 消息通知 更新索引 查询索引 查询详细信息 数据库变化 写操作
  12. 12. <ul><li>SSD 高性能数据库 </li></ul>
  13. 13. SSD 性能特点分析 <ul><li>SSD vs Hard Disk </li></ul><ul><ul><li>SSD : </li></ul></ul><ul><ul><ul><li>IOPS : 8K read 10000+ , 8K write 2000+ </li></ul></ul></ul><ul><ul><ul><li>吞吐: 1M read 200M , 1M write 170M </li></ul></ul></ul><ul><ul><li>Hard Disk : </li></ul></ul><ul><ul><ul><li>IOPS : 8K read 150 , 8K write 150 </li></ul></ul></ul><ul><ul><ul><li>吞吐: 1M read 170M , 1M write 130M </li></ul></ul></ul><ul><ul><li>SSD 随机读非常好,随机写比较好,连续读写无优势 </li></ul></ul><ul><li>SSD 的性能特点 </li></ul><ul><ul><li>改写 = 读取 + 擦除 + 写入 </li></ul></ul><ul><ul><li>随机写性能下降 </li></ul></ul><ul><ul><li>损耗均衡算法 </li></ul></ul><ul><ul><ul><li>均衡写磨损 </li></ul></ul></ul><ul><ul><ul><li>异步擦除 </li></ul></ul></ul><ul><ul><ul><li>提升写性能 </li></ul></ul></ul>
  14. 14. 数据库 IO 特点分析 <ul><li>数据库基于磁盘设计 </li></ul><ul><ul><li>Sequential logging </li></ul></ul><ul><ul><li>In-place update </li></ul></ul><ul><li>日志文件顺序写 </li></ul><ul><ul><li>同步写入,响应延迟低 </li></ul></ul><ul><ul><li>连续位置的随机写 IO </li></ul></ul><ul><li>数据文件随机写 </li></ul><ul><ul><li>异步写入 </li></ul></ul><ul><ul><li>大量的随机写 IO </li></ul></ul><ul><li>瓶颈分析 </li></ul><ul><ul><li>IOPS : </li></ul></ul><ul><ul><ul><li>小 IO ,数据文件随机读,随机写,日志文件写 </li></ul></ul></ul><ul><ul><li>吞吐量: </li></ul></ul><ul><ul><ul><li>大 IO ,数据文件连续读 </li></ul></ul></ul>
  15. 15. 基于 SSD 的数据库性能优化 <ul><li>为什么要使用 SSD ? </li></ul><ul><ul><li>CPU 与 IO 性能不均衡 </li></ul></ul><ul><ul><li>提升单机性能 </li></ul></ul><ul><ul><li>减小集群规模 </li></ul></ul><ul><ul><li>RAM or SSD ? </li></ul></ul><ul><li>提升写性能 </li></ul><ul><ul><li>增加 SSD 保留空间 </li></ul></ul><ul><li>SSD-based database </li></ul><ul><ul><li>减少擦除带来的影响 </li></ul></ul><ul><ul><li>IPL(In-page logging) </li></ul></ul><ul><ul><li>缓存写回机制 </li></ul></ul><ul><li>Flashcache 方案 </li></ul><ul><ul><li>操作系统设备层实现 </li></ul></ul><ul><ul><li>数据库存储引擎实现 </li></ul></ul><ul><ul><li>WB vs WT </li></ul></ul>
  16. 16. SSD 应用场景分析 <ul><li>SSD 作为数据库主存储 </li></ul><ul><ul><li>依赖硬件层的损耗均衡算法 </li></ul></ul><ul><ul><li>可靠性的问题 </li></ul></ul><ul><ul><ul><li>硬件 RAID vs 软件 RAID ? </li></ul></ul></ul><ul><ul><ul><li>RAID 5 vs RAID 10 ? </li></ul></ul></ul><ul><ul><ul><li>SLC vs MLC ? </li></ul></ul></ul><ul><ul><li>性价比较低 </li></ul></ul><ul><li>SSD 存放日志文件 </li></ul><ul><ul><li>提升日志响应延迟 </li></ul></ul><ul><ul><li>HDD 更合理 ? </li></ul></ul><ul><li>SSD 存放热点数据 </li></ul><ul><ul><li>提升随机查询性能 </li></ul></ul><ul><ul><li>性能高,不灵活 </li></ul></ul><ul><li>SSD 作为 Flashcache </li></ul><ul><ul><li>性价比高 </li></ul></ul><ul><ul><li>复杂,有待实践考验 </li></ul></ul>
  17. 17. Alibaba 使用 SSD 现状与发展 <ul><li>使用现状 </li></ul><ul><ul><li>2009 年在数据库上使用 SSD </li></ul></ul><ul><ul><li>RAID 5 + BBU </li></ul></ul><ul><ul><li>基于 SSD 的 MySQL 集群 </li></ul></ul><ul><ul><li>异构 SAS 磁盘备用集群 </li></ul></ul><ul><ul><li>利用 SSD 存放热点数据 </li></ul></ul><ul><ul><li>大幅度减小集群规模,降低成本 </li></ul></ul><ul><li>发展方向 </li></ul><ul><ul><li>MLC 替换 SLC ? </li></ul></ul><ul><ul><li>Intel SSD vs Fusion-IO </li></ul></ul><ul><ul><li>Flashcache </li></ul></ul><ul><ul><ul><li>MySQL 替换 SAS 集群 </li></ul></ul></ul><ul><ul><li>SSD-based database </li></ul></ul>
  18. 18. Alibaba 数据存储策略 <ul><li>ORACLE </li></ul><ul><ul><li>强一致性,复杂查询 </li></ul></ul><ul><ul><li>降低开发和管理成本 </li></ul></ul><ul><ul><li>ORACLE+ 数据同步 +Cache </li></ul></ul><ul><li>MySQL </li></ul><ul><ul><li>Sharding ,去关系型 </li></ul></ul><ul><ul><li>分布式,可扩展 </li></ul></ul><ul><ul><li>MySQL+Flashcache </li></ul></ul><ul><li>KV store </li></ul><ul><ul><li>场景优先 </li></ul></ul><ul><ul><li>自主研发 </li></ul></ul>
  19. 19. <ul><li>Q & A </li></ul><ul><li>Thanks ! </li></ul><ul><li>Email: freezr@gmail.com </li></ul><ul><li>Blog: www.hellodba.net </li></ul><ul><li>Twitter: hellodba </li></ul>

×