维基百科采用马里亚德数据库

翻译此帖子

上周三标志着维基媒体数据库基础设施演变的里程碑:英语和德语维基百科全书的迁移以及维基数据,马里兰州开发银行5.5。
过去几年,我们一直在运营MySQL 5.1的Facebook分支我们的大多数生产环境都运行3753兰特。我们对它的表现感到满意;脸书的MySQL团队拥有业内最优秀的数据库工程师,他们为推动开源MySQL生态系统做了很多工作。
这就是说,MariaDB的优化器增强功能、Percona的XtraDB的功能集(许多功能与Facebook补丁重叠,但我特别喜欢附加功能,例如保存缓冲池LRU列表的功能,避免在新服务器上进行昂贵的预热)以及Oracle的MySQL 5.5,都为考虑升级提供了令人信服的理由。同样重要的是,作为自由文化运动的支持者,维基媒体基金会强烈支持自由软件项目;这包括在不同许可的免费版本和企业版本之间优先选择没有分叉代码库的项目。我们欢迎并支持MariaDB基金会作为免费开放的MySQL数据库社区的非盈利管理员。

为改变做准备

生产数据库的主要版本升级不是轻而易举的。事实上,直到2011年,一些维基百科语言仍在运行补丁严重的MySQL 4.0版本——迁移到5.1需要更改模式,并直接修改数据转储以更改二进制类型列的填充。MySQL 5.5与以前的版本存在各种不兼容之处,部分原因是它更好地符合SQL标准。不同版本之间对查询优化器的更改也可能会更改常见查询的执行计划,有时会更好,但有时不会。SQL行为更改可能会导致复制中断或数据一致性问题,而性能回归(无论是来自查询计划还是其他更改)可能会导致站点中断。这需要大量的测试。
兼容性测试是通过在生产外部运行MariaDB副本、监视复制错误、重放生产读取查询和验证结果来完成的。在确定并修复了一些MediaWiki问题后,这些问题都是复制错误(比如尝试将无符号整数类型设置为负值,这以前会导致缠绕而不是错误),我们使用pt-升级来自Percona Toolkit。Pt-upgrade针对两台服务器重放查询日志,并比较响应中的差异或错误。最初为我们开发的脚本最近的数据中心迁移为了从当前生产读取流量中同时预热多个备用数据库,需要进行粗略的负载测试和基准测试。在此过程中,在MariaDB 5.5.28和5.5.29中发现了两个错误,其中一个是与新的查询优化器功能相关的罕见但可能严重的性能回归。MariaDB团队反应迅速,能够快速提供解决方案,包括测试用例。

生产中的性能测试

作为一个阅读量很大的网站,维基百科积极使用边缘缓存。大约90%的页面视图完全是从边缘提供的,而在应用程序层,除了MySQL之外,我们还使用了memcached和redis。尽管如此,仅为英语维基百科服务的MySQL数据库就达到了每天约5万次查询/秒的峰值。大多数是由负载平衡从属服务器提供的读取查询,具体取决于一致性要求。80%的英文维基百科查询负载(高达40k qps)通常在任何给定时间仅由两个数据库服务器处理。我们最常见的查询类型(占所有查询类型的40%)的执行时间中位数为~0.2毫秒,95%的时间为~50毫秒。为了在生产中成功使用MariaDB,我们需要它跟上从Facebook的MySQL分叉获得的性能水平,并随着流量模式的变化保持一致。

Ishmael查看了通过tcpdump为最常见的维基百科阅读查询(pdf)收集的pt-query-digest数据。查询的第一页显示来自db1042的数据,运行mysql-facebook-r3753,第二页显示来自相同时间段的db1043,运行MariaDB 5.5.30。
通过tcpdump为最常见的维基百科阅读查询(pdf)收集的pt查询摘要数据的Ishmael视图。查询的第一页显示来自db1042的数据,运行5.1fb-r3753,第二页显示来自相同时间段的db1043,运行MariaDB 5.5.30。

一旦确信应用程序兼容性问题得到了解决,并且对在基准条件下获得的性能感到满意,就应该在生产中进行测试了。其中一个来自英语维基百科碎片的制作读取奴隶被取消了轮换,升级到马里亚达数据库5.5.30,然后返回进行预热。然后逐渐增加负载平衡器的权重,直到它和仍运行MySQL 5.1-facebook-r3753的服务器的权重相等,并接收大部分查询负载。
同样从Percona工具包中,我们在所有数据库服务器上使用pt-query-digest来收集查询性能数据,然后将这些数据存储在一个集中的数据库中。查询数据从每台服务器的两个源中收集,并存储在不同的存储桶中—来自仅捕获超过450ms查询的慢速查询,以及来自tcpdump获取的所有查询的定期简短采样。以实玛利提供了一种方便的方法,可以随时间可视化和检查查询摘要数据。通过使用它,以及对原始数据的直接分析,我们可以验证每个查询是否继续在可接受的范围内执行。
对于我们最常见的查询类型,8小时内的95%时间从56ms降至43ms,平均时间从15.4ms降至12.7ms。第50个百分位数的时间在样本期内保持了略好的5.1-facebook版本,分别为0.185ms和0.194ms。在生产负载下,使用MariaDB 5.5.30,许多查询类型的速度都快了4-15%,少数查询类型慢了5%,超出这些界限后,没有出现异常情况。
从那里,我们一个接一个地升级了其余的从服务器,最后在一个更新的升级类服务器中轮换为主服务器。切换是无缝的,性能看起来仍然不错。我们将在下个月完成覆盖其余项目的碎片迁移。除此之外,我们期待着未来发布MariaDB 10(全球事务ID!),并不断评估改进我们数据存储基础设施的方法。如果你有兴趣帮忙维基媒体基金会正在招聘!
Asher Feldman,现场建筑师

存档通知:这是一篇来自blog.wikimedia.org的存档文章,该网站的编辑和内容指南与Diff不同。

你能帮我们翻译这篇文章吗?

为了让这篇文章能接触到尽可能多的人,我们希望您能给予帮助。你能把这篇文章翻译出来吗?

62评论
内联反馈
查看所有评论

毫无疑问,那真是一份很棒的工作!
但是,我有点好奇,因为这个迁移似乎不是一件容易的工作,您是否在移动中对一些NoSQL或图形数据库进行了基准测试?我不确定所有的数据都表明这将是一个有趣的解决方案,但读到你,我想知道你是否这样做了,你怎么想?
谢谢,继续努力!🙂

[…]是维基百科网站架构师Asher Feldman的一篇很好的博客文章,介绍了维基百科》是如何采用MariaDB的。如果你正在使用英语或德语维基百科,或使用维基数据,你目前正在使用[…]

那么MySQL 5.6呢?

MySQL 5.6真的很令人兴奋,它带来了我一直想要的新功能。其中一些问题由MariaDB 5.5解决,其他许多问题将在MariaDB 10中解决。我认为MariaDB团队在设计这些功能时考虑得很好,而不是简单地移植(参见示例http://kristiannielsen.livejournal.com/17008.html). 这一点,再加上Oracle在社区透明度方面采取的一些小步骤(http://mysqlha.blogspot.com/2013/04/good news-mysql-5611-is-here.html)让我对选择MariaDB作为Wikimedia的首选分支感到满意。由于MySQL 5.6有一些初始性能(与5.5相比)和稳定性问题,所以等待采用似乎不会… 阅读更多»

非常好的消息!对马里亚德银行来说,这是一段漫长的路。
@LM:MySQL 5.6不如MariaDB 5.5强大(http://blog.mariadb.org/sysbench-oltp-mysql-5-6-vs-mariadb-10-0/). 最重要的是,未来这种差异可能会更大。
顺便说一句,MariaDB的自由和开放政治更像是Wikipédia所追求的。不幸的是,MySQL被Oracle破坏了,他们并不是真正的“开源上瘾者”。

PiT:这样的更改可能需要完全重写wiki代码库,并导致复杂的升级/迁移过程,几乎肯定会涉及大量停机时间需要管理。

PiT:MediaWiki及其扩展生态系统(Wikipedia运行超过90个,其中许多是社区开发的)非常使用关系模型。正如Tyrrim上面所指出的,脱离RDBMS将是一项复杂得多的工程工作,而MariaDB满足了我们的大部分需求。也就是说,我肯定会在我们的未来看到Wikidata的图形数据库。我们还将InnoDB用作一个分片键值存储,以存储我们所有项目中每一篇文章的每一次修订的gzip全文。我考虑过将NoSQL存储用于我们的基础设施的这一部分,但不会… 阅读更多»

干得好。一个很好的成功故事。我确信,在查询性能差异、配置调优等方面,有很多关于小边缘案例的详细信息,可以在更技术性的审查中阅读。

[…]博客Wikimedia[…]

[…]维基媒体

[……]维基百科采用了MariaDB。再者,考虑到本文的第一个链接,这一点很重要,我们有马里亚德银行基金会也很重要。[…]

[…]Wikimedia anunciola finalizacion de la primera fase de la migración de la infrastructura de servidores de bases[…]

[…]维基百科se-pasa a MariaDB[…]

为什么不使用PostgreSQL?或者,MariaDB对PostgreSQL有什么优势,让您决定使用MariaDB?它想留在MySQL世界吗?

@Phi先生:
嗯,人们可以反对这个基准测试,因为MySQL 5.6比MariaDB 5.5强大得多(http://dimitrik.free.fr/blog/archives/2013/02/mysql-performance-mysql-56-vs-mysql-55-vs-mariadb-55.html)
只有我的2c

[…]支持马里兰州开发银行的机构。维基媒体于4月22日宣布,他们已经完成了英语和德语维基到MariaDB的迁移。为什么?因为,马里兰州开发银行是[…]

[…]en-vez de MySQL。Y hoy una de las web con más tráfico del mundo,la Wikipedia,anuncia que migran su sistema de base de datos en las versions inglesa Y alemana desde un fork hecho por Facebook para MySQL 5.1 a MariaDB 5.5。[…]

[…]用于Facebook维护的另一个MySQL分支。维基媒体基金会网站架构师Asher Feldman昨天在一篇帖子中宣布采用MariaDB,称此举部分是因为“偏爱(开源)[…]

[…]支持MariaDB的机构。WikiMedia于4月22日宣布,他们已经完成了英语和德语Wikipedias向MariaDB的迁移。为什么?因为,马里兰州开发银行是[…]

[…]支持马里兰州开发银行的机构。WikiMedia于4月22日宣布,他们已经完成了英语和德语Wikipedias向MariaDB的迁移。为什么?因为,马里兰州开发银行是[…]

[…]支持马里兰州开发银行的机构。WikiMedia于4月22日宣布,他们已经完成了英语和德语Wikipedias向MariaDB的迁移。为什么?因为,马里兰州开发银行是[…]

[…]支持马里兰州开发银行的机构。WikiMedia于4月22日宣布,他们已经完成了英语和德语Wikipedias向MariaDB的迁移。为什么?因为,马里兰州开发银行是[…]

[……]维基百科采用马里亚德银行-维基媒体博客上周三标志着维基媒体数据库基础设施演变的里程碑:完成了英语和德语维基百科以及维基数据向马里亚德数据库5的迁移…。[…]

@PiT–MariaDB是MySQL的替代品,所以我认为转换相对简单。切换到NoSQL或图形数据库需要进行重大重写。

[…]服务器使用Wikidata von MySQL 5.1 auf MariaDB 5.5 umgestellt。Das geht aus einem ausführlichen Blogbeitrag des für die迁移verantwortlichen Asher Feldman[…]

我还想知道,为什么您没有切换到PostgreSQL。你考虑过了吗?如果,结果是什么?
亲切问候

[…]Zeit und wechselt von MySQL zu MariaDB公司。Wie der für die迁移verantwortliche Asher Feldman im Wikimedia-Blog berichtet,wurden die deutschen und britischen Datenbank-Server der Wikipedia bereits vor Tagen von[…]

[…]Más información–Wikipedia se cambia de MySQL a MariaDB,openSUSE放弃MySQL y se pasa a MariaDB,Arch Linux también se pasa aMariaDB Fuente–Anuncio of ific[…]

维基百科的数据模型不需要事务或更高级的功能,因此不需要PostgreSQL。与MySQL一样,MariaDB不是一个RDBMS,只是一个用于简单任务的玩具数据库,例如,不需要引用完整性和事务。

@Nathan Broadbent:不仅要重写代码,还需要对开发人员进行一些更改…

[…]我们打开SUSE和Fedora。Die deutschen und Britische Sites von Wikipedia laufen seit wenigen Tagen auf dieser[…]

[…]e galement lu un article(que je vous conseil)qui explique que MariaDB抵达MySQL的演出现场[…]

[…] 甲骨文与开源社区关系的恶化正促使许多发行版用马里兰州开发银行取代MySQL数据库现在使用MySQL数据库的流行网站维基百科也宣布从MySQL数据库迁移到MariaDB公司部分原因是甲骨文的MySQL数据库有免费版和企业版,而企业版的新功能没有公开源码,而马里兰州开发银行则没有这方面的问题。 […]

[……]项目负责人Asher Feldman的一篇博客文章宣布,几天前,维基媒体基金会将维基百科的英语和德语版本以及维基数据从MySQL 5.1迁移到了MariaDB 5.5。[…]

[…] 甲骨文与开源社区关系的恶化正促使许多发行版用马里兰州开发银行取代MySQL、现在使用MySQL数据库的流行网站维基百科也宣布从MySQL数据库迁移到MariaDB公司部分原因是甲骨文的MySQL数据库有免费版和企业版,而企业版的新功能没有公开源码,而马里兰州开发银行则没有这方面的问题。 […]

[…] 甲骨文与开源社区关系的恶化正促使许多发行版用马里兰州开发银行取代MySQL、现在使用MySQL数据库的流行网站维基百科也宣布从MySQL数据库迁移到MariaDB公司部分原因是甲骨文的MySQL数据库有免费版和企业版,而企业版的新功能没有公开源码,而马里兰州开发银行则没有这方面的问题。 […]

[…]是MySQL的替代品,大型公司开始采用MariaDB,如维基百科(请阅读此处的博客文章)。[…]

[……]商业版而非免费版永远不会在那场戏中赢得青睐。维基百科在过去几天迁移到了马里亚德数据库,而Fedora和OpenSUSE Linux发行版都将在[…]方面取得突破

[…]维基媒体基金会官方博客sel explica que durante años han estado usando un fork de MySQL 5.1 realizado or Facebook en sus servidores[…]

[……]呃,阿瑟·费尔德曼(Asher Feldman)的帖子,líder de projeto,一个维基媒体基金会(Wikimedia Foundation)将其作为ediçes em alemáe em ingle is da Wikipedia,assim como o Wikidata,执行MySQL 5.1 para o MariaDB 5.5 háalguns dias。[…]

[…]“……”“MySql[…]”

[…]周维基媒体基金会将他们的英语和德语维基百科全书迁移到[…]

[……]líder de projeto Asher Feldman,一个没有维基百科博客的人,问一个关于alguns dias atrás a migraço suas ediçes da Wikipedia em[…]

[…]bull de blog par le chef de projet Asher Feldman a annoncéque la Fondation Wikimedia a migraéleséditions en[…]博客厨师阿舍·费尔德曼宣布维基媒体基金会移民[…]

[…] الشركة شرحت في تدوينة طويلة العديد من الأمور التي خططت لها قبل عملية الإنتقال وبإمكانكم قرائتها عبر هذا الرابط. […]

[…] الشركة شرحت في تدوينة طويلة العديد من الأمور التي خططت لها قبل عملية الإنتقال وبإمكانكم قرائتها عبر هذا الرابط. […]

[…]维基百科Adopta MariaDB[…]

[…] الشركة شرحت في تدوينة طويلة العديد من الأمور التي خططت لها قبل عملية الإنتقال وبإمكانكم قرائتها عبر هذا الرابط. […]

[…]维基百科Adopta MariaDB[…]

[…]bull de blog par le chef de projet Asher Feldman a annoncéque la Fondation Wikimedia a migraéleséditions en[…]博客厨师阿舍·费尔德曼宣布维基媒体基金会移民[…]