登录 / 注册
IT168技术开发频道
IT168首页 > 技术开发 > 技术开发评论 > 正文

Facebook工程师谈MyRocks生产部署实践!

2017-05-12 18:26    it168网站原创  作者: zyy 编辑: 覃里

  【IT168 评论】各大数据库排行榜上,MySQL都处于一个非常不错的位置,近几年更是广泛应用于各种业务场景中。在Facebook,MySQL主要应用于存储社交图片、大规模碎片处理、纯Flash存储等。RocksDB是facebook基于LevelDB实现的,RocksDB为MySQL的一个存储引擎移植到MySQL,称之为MyRocks。近几年,MyRocks有了不错的发展,在本届DTCC大会第二天的主会场,Facebook工程师Yoshinori Matsunobu讲述了Facebook的MySQL数据库从InnoDB迁移到MyRocks的故事!

Facebook工程师谈MyRocks生产部署实践!
Yoshinori Matsunobu

  MyRocks的特点——Facebook为什么选择迁移呢?

  Yoshi表示,从集群索引来看,MyRocks与InnoDB相同,并没有明显的优势。但其具有更快的数据加载、删除和复制速度,动态选项、TTL、使用XA的碰撞安全、在线逻辑和二进制备份、bloom filter、更多并发写(计划中)、直接IO以及优雅的sst文件删除等特点。

  虽然其具有非常不错的性能,但要想从InnoDB迁移到MyRocks还面临着十分严峻的技术挑战。

  MyRocks迁移——技术挑战及解决方案

  在整个迁移过程中,Yoshi表示Facebook面临着定义MyRocks优化架构、找出最佳Column Family选项、在不停机的情况下创建MyRocks实例、在合理的时间载入MyRocks表格、验证InnoDB和MyRocks之间的数据一致性等问题,同时,为了保证系统的具体业务不受影响,还需要对其进行连续监测,实时了解计算资源的使用情况,比如空间、iops、cpu和内存等,查询异常值,并具备一定的系统恢复能力。

  当在主机上运行MyRocks时,还需要考虑RBR、移除InnoDB Gap Lock上的查询依赖,同时保证具备完美的XA支持(binlog和RocksDB)。既然面临各种技术挑战,自然是要寻找对应的解决方案。

  Yoshi也在分享中给出了一些问题的相应解决方案,比如如何在不影响服务的情况下创建一个MyRocks实例,可以选择一个InnoDB从站示例,启动逻辑转储和恢复(停止一个从站不会影响服务),Facebook的MySQL复制环境是单主多从的方式,从站分布较远,Facebook的实例中包含多个数据库(多线程从库有助于减少滞后)。整体的迁移步骤大致如下:

Facebook工程师谈MyRocks生产部署实践!

  目前国际上公开在生产环境使用MyRocks存储引擎的只有Facebook和阿里巴巴,Yoshi表示,目前的MyRocks/RocksDB还是一个比较新的数据库技术,与强大的InnoDB相比可能会有更多bug,因此确保数据一致性有助于避免一些可能会出现的冲突。在这之中,有效测试就显得至关重要。Facebook也有一套相对完整严谨的测试体系,其拥有一个shadow测试框架,可从生产实例捕获读或写查询,将它们重新映射到shadow主实例中。

  针对测试、故障处理或生产环境部署中可能存在的问题,Facebook也将在开源社区进行一些具体的方案解答和技术交流。回顾整个迁移过程,Yoshi表示,当初的主要动机是为了节省空间,迁移中建议使用在线数据正确性检查工具,有助于发现大量数据完整性错误,并阻止在生产中部署不一致的实例,采用批量装载和快速索引的方式可有效优化压缩过程,同时一定要具备完善的错误恢复机制。

  Yoshi也表示,在平时的工作中会时刻关注中国相关领域的技术趋势和变化,也曾与国内一些互联网公司有过一些技术交流,未来,他也希望可以与中国的技术人士有更深入的交流。

标签: mysql , Facebook , DTCC
相关文章
  • IT168企业级IT168企业级
  • IT168文库IT168文库

扫码送文库金币

实时热点
编辑推荐
系统架构师大会
系统架构师大会
点击或扫描关注
IT168企业级微信关注送礼
IT168企业级微信关注送礼
扫描关注
首页 评论 返回顶部