soword科技言
永久公益免费API接口
提供永久免费的API接口,查看更多API接口,如果您有其他免费API资源,请联系我们,造福人类。
提供商务开发:小程序,系统,APP
定制开发,免费评估,免费咨询,价格便宜,售后保障,前往开发服务中心联系开发客服中心
深入研究Facebook的MySQL8.0迁移

本周,Facebook的开发组织宣布完成了企业最担心的任务:对其核心数据库进行重大升级。拉里·迪格南在概述中概述了要点。在这篇综述中,他不止是暗示了迁移过程中遇到的种种考验和困难。

数据库迁移一直都在发生,而且不乏关于如何进行迁移的建议。但Facebook的详细博客文章提供了宝贵的经验教训,我们将在这里详细介绍。这是一个庞大的、多年的项目,尤其是因为Facebook有如此多的MySQL实例?毫无疑问,MySQL代表了对这个平台的一次重大升级。这次升级意义重大,因此拥有MySQL的Oracle被要求对自己的云MySQL服务进行重大更新和升级。

8.0版本中有一长串的变化,但我们将在这里重点介绍其中的一些。它从可管理性开始:MySQL 8.0添加了事务数据字典,这是企业级数据库的标准。更简单的是:为例程命令调用的数据定义语言(DDL)所涉及的所有任务现在都合并到一个语句中。因此,您不必为数据字典更新、存储引擎操作和二进制日志写入编写单独的语句。表加密得到了简化,并且改进了对扩展数据类型(如BLOB、文本、几何体和JSON)的支持

还有一个很酷的新特性“不可见索引”,它允许测试删除索引的影响,而不必实际删除索引。它类似于Oracle自治数据库和Microsoft Azure SQL数据库中的高级索引功能,允许测试替代索引方案,以评估某些索引是否在浪费空间,或者新的或修改的索引是否可以以较少的计算开销检索数据。

但是任何有经验的DBA都会证明,升级时总是要付出代价的,比如破坏应用程序的稳定性,这就是为什么大多数组织会推迟迁移,直到需求太大。无独有偶,大多数云数据库即服务(DBaaS)提供商都会信誓旦旦地承诺消除升级带来的痛苦,因为他们将升级带来的痛苦从客户的肩上卸下来。

因此,排在经验教训首位的是处理兼容性问题也就不足为奇了。在列表的顶部是定制,这是典型的根深蒂固的企业数据安装。毫不奇怪,在企业应用程序领域,这也是一个长期存在的问题,在企业应用程序领域,当涉及到定制时,自动迁移工具通常会停止使用。事实上,SAP现在鼓励客户保持核心实现的普通性,并通过应该保持稳定的api来抽象实现。Facebook在MySQL迁移时没有这种奢侈。正如Larry在他的帐户中指出的那样,2300个自定义补丁中只有1500个进行了迁移,其余的都被弃用了。

一个相关的问题是API兼容性,这就是Facebook发现隐藏的“问题”的地方。正如所指出的,客户通常会推迟大型企业系统的迁移,因为涉及时间和中断,在这种情况下,这意味着Facebook跳过了一个周期。他们没有从MySQL5.6升级到5.7,而是跳过了中间版本,直接升级到8.0。结果是需要对支持的api执行检测工作;当他们艰难地了解到这一点时,5.6版本中的许多API都发生了变化,而8.0文档中没有包含这些API。这增加了时间代价。

在某些情况下,迁移还涉及底层存储引擎。MySQL是一个支持可插拔存储引擎的数据库,自2016年以来,Facebook已经将面向用户的MySQL实现从MySQL中最常用的引擎InnoDB转移到了实际上是Facebook开发的开源存储引擎MyRocks。MyRocks的优点是更有效的压缩和写入

从InnoDB迁移到MyRocks需要一个“影子”测试框架来捕获生产流量并在测试实例中重放它们。但这个过程并非万无一失;它遗漏了MyRocks如何处理事务写死锁等问题。这个故事的寓意是,虽然你可以模拟一些场景,但在某些情况下,bug在事后才会出现,你应该在任何迁移和测试计划中加入事后修复。

由于所有预期和意外的兼容性问题,Facebook在移动数据时非常谨慎。Facebook没有按照惯例复制表或SQL语句,而是一行一行地进行复制,这是一个非常艰苦的过程。需要采取如此激烈的行动是由庞大的应用程序组合以及遇到相互依赖的可能性所驱动的:应用程序A可能使用的一些数据可能是由应用程序B处理的结果派生出来的。

不出所料的教训是,企业数据库的迁移很少是琐碎的

这是Facebook走上一条大企业通常会拖延到绝对必要时的道路的原因,因为这意味着跳过中间版本升级,所以它付出了代价。这促使拉里在他的文章中提出这样一个问题:所有的努力是否值得

问题是,如果说MySQL9.0的出现,这些头痛的问题是否可以在未来避免或最小化。一个答案是,如果你不是Facebook,那就是转向云数据库即服务DBaaS(cloud Database-as-a-Service DBaaS),云供应商会不断更新版本,并让客户免受底层平台变化的影响。

但如果你还在家里尝试,Larry暗示了答案:Star我不打算现在就这样。更具体地说,进行dot版本升级,但从长远来看,如果可能的话,开始使用api抽象定制。也许在未来,机器学习可以提供一种帮助来预测哪里会出现兼容性问题,但这无疑是人类直觉必须保持控制的一个例子。

MongoDB 5.0就在这里,聚焦生产力和可扩展性Informatica的数据治理和目录云重新启动将孤立的工作流统一到Teradata和Oracle客户:无需更改代码即可移动到云上通过注册将地理隔离添加到全球分布的数据库云中,您同意使用条款,并承认隐私政策中概述的数据实践。

您还将获得免费订阅的ZDNet今日技术更新和ZDNet公告时事通讯。您可以随时取消订阅这些时事通讯。

您同意接收CBS系列公司的更新、提醒和促销活动,包括ZDNet的今日技术更新和ZDNet公告时事通讯。您可以随时取消订阅


2023-03-22 10:04:38

新人小程序+APP定制199元起


发放福利,助力中小企业发展,真正在互联网中受益

点击询问定制

广告服务展示