【直击DTCC】Facebook工程师谈MyRocks生产部署实践!

【IT168 评论】各大数据库排行榜上,MySQL都处于一个非常不错的位置,近几年更是广泛应用于各种业务场景中。在Facebook,MySQL主要应用于存储社交图片、大规模碎片处理、纯Flash存储等。RocksDB是facebook基于LevelDB实现的,RocksDB为MySQL的一个存储引擎移植到MySQL,称之为MyRocks。近几年,MyRocks有了不错的发展,在本届DTCC大会第二天的主会场,Facebook工程师Yoshinori Matsunobu讲述了Facebook的MySQL数据库从InnoDB迁移到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的实例中包含多个数据库(多线程从库有助于减少滞后)。整体的迁移步骤大致如下:


  

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

  

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

  

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值