口袋数码E族

Facebook工程师亲临!关于MyRocks生产部署实践!

2017-5-12 20:18| 发布者: admin| 查看: 831| 评论: 0

摘要: 各大数据库排行榜上,MySQL都处于一个非常不错的位置,近几年更是广泛应用于各种业务场景中。在Facebook,MySQL主要应用于存储社交图片、大规模碎片处理、纯Flash存储等。RocksDB是facebook基于LevelDB实现的,Rocks ...

各大数据库排行榜上,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相比可能会有更多bugs,因此确保数据一致性有助于避免一些可能会出现的冲突。在这之中,有效测试就显得至关重要。Facebook也有一套相对完整严谨的测试体系,其拥有一个shadow测试框架,可从生产实例捕获读或写查询,将它们重新映射到shadow主实例中。

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

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


鲜花

握手

雷人

路过

鸡蛋

最新评论

QQ|Archiver|手机版|小黑屋|口袋数码E族 ( 豫ICP备15004038号-2 )

GMT+8, 2025-5-2 22:19 , Processed in 0.075812 second(s), 17 queries .