写点什么

优步完成了主要 MySQL 集群组的升级,提升了性能和安全性

作者:Matt Saunders

  • 2024-11-05
    北京
  • 本文字数:1827 字

    阅读完需:约 6 分钟

优步完成了主要MySQL集群组的升级,提升了性能和安全性

优步(Uber)对其 MySQL 数据库集群组进行了重大的改进,版本从 5.7 升级到了 8.0。该团队希望利用 MySQL 新版本性能和并发性相关的改进,因为 MySQL 5.7 在 2023 年 10 月已经过保,不再维护。这项工作耗时一年多,涉及到升级三个地区 19 个生产区域的 2100 多个集群和 16000 个节点。


在优步(Uber)的博客文章中,Siddharth Singh 等人解释说,MySQL 基础设施包含数 PB 的数据,每秒处理超过 300 万次查询。因此,在升级过程中尽量减少中断是至关重要的。为了帮助实现这一点,优步(Uber)工程团队自动化了一个系统,以引导每个集群完成多阶段的升级过程,而无需人工干预。Singh 继续解释了他们是如何选择并行升级策略而不是选择就地升级策略的。这一决定是由于他们需要尽量最小化停机时间、降低风险,并进行更好的测试。



并行升级过程涉及几个阶段。首先,优步(Uber)为集群中的每个 MySQL 5.7 节点在同一区域或地区添加了相应的 MySQL 8.0 副本节点。随后进行了为期一周的监控,以观测系统的性能并检测任何问题。当这个“渗透期”结束之后,工程师们将流量从 5.7 版本的副本节点中转移出来,并将每个集群的 MySQL 8.0 节点提升为主节点。最后,将所有的 MySQL 5.7 节点从集群中删除,完成向 8.0 版本的转型。


系统的稳定性和数据的完整性是升级期间的首要关注点。该团队的计划是,如果检测到任何服务降级,就立即回滚到 MySQL 5.7,直到他们有足够的信心将 MySQL 8.0 节点提升为主节点。之后,将不再支持回滚到 5.7 版本,因此需要避免回滚。


这次升级也面临着挑战。升级到 MySQL 8.0 后,一些集群的查询执行计划发生了变化,从而导致了延迟和资源消耗的增加。通过与数据库软件公司 Percona 的合作,优步(Uber)确定并实施了受影响集群的修复程序。其他问题还包括:


  • 一些不兼容的查询和配置

  • 默认字符集和排序规则设置的更改

  • 需要升级客户端库以兼容 MySQL 8.0。


优步(Uber)并不是唯一一家分享如何更好地大规模启动这一重大升级的公司。正如 InfoQ 今年早些时候所报道的那样,GitHub 也进行了类似的升级,也从 5.7 升级到了 8.0,并分享了一些经验教训。在升级的众多发现中,GitHub 还遇到了一些问题,例如当使用的客户端中使用了不同的框架和语言时,从 8.0 到 5.7 的反向复制会中断,从而缩短了潜在的回滚窗口。它们还会触发复制缺陷,并在运行具有较大 WHERE IN 值的查询时遇到崩溃。


Percona 的 Przemysław Malkowski 也发表一篇介绍如何避免在 MySQL 升级到 8.0 时发生故障的详细文章,该文章强调了在升级之前很难测试与写相关的工作负载,并强调了数据丢失、查询速度慢、潜在停机和客户端应用程序不兼容的可能性。Malkowski 还解释了如何在必要时进行降级。


通过升级到 MySQL 8.0,其他组织也都从中获益了。Arzooo 的 Jyoti Ranjan Parida 在一篇 Medium 文章中解释了升级的一些好处:


  • 新特性,例如窗口函数、通用表表达式和 JSON 增强等

  • 更好的性能,改进的索引和查询执行

  • 更好的密码过期策略

  • 改进的资源管理,支持更高效的查询

  • 组多源复制


Parida 还解释了升级时需要注意的一些事情,并提供了一份全面的先决条件操作清单,例如:


  • 确保数据类型和函数没有过时

  • 删除孤立的文件和无效触发器

  • 避免使用不受支持的分区表

  • 解决关键字违规问题

  • 使用新数据字典消除命名冲突

  • 更新过时的 SQL 模式

  • 检查 ENUM/SET 列的长度

  • 通过共享表空间重新定位表分区

  • 使用 ASC 或 DESC 修改旧的 GROUP BY 子句

  • 缩短较长的外键名称

  • 考虑将 utf8mb3 转换为 utf8mb4,以获得更好的 Unicode 支持


尽管遇到了一些障碍,优步(Uber)的升级还是带来了显著的性能提升。服务器端的基准测试显示,在高并发情况下,插入延迟改善了 29%,读取延迟改善了 33%,更新延迟改善了 47%。在客户端,一些查询的速度提高了 78%,整体的数据库锁定时间缩短了 94%。


通过对好处和挑战的仔细考虑,我们成功地完成了转型,降低了风险,并最大限度地减少了服务中断。

——Siddharth Singh、Sriram Rao Udupi、Raja Sriram Ganesan、Debadarsini Nayak(优步)

作者介绍


Matt Saunders 是 Adaptavist 首席技术官的 DevOps 主管。帮助团队使用 DevOps、平台工程和云原生工具和相关技术,以快速高效地交付可靠、高质量的软件,同时尽量减少压力。他曾与复杂的企业、小型初创企业、中小企业以及介于两者之间的所有企业合作过。还共同组织了伦敦的 DevOps 聚会小组,该小组拥有 10000 多名成员,每月举办一次非常受欢迎的行业活动。


原文链接:

https://www.infoq.com/news/2024/10/uber-mysql-80-upgrade/

2024-11-05 08:009090

评论 1 条评论

发布
用户头像
感谢分享
2024-11-28 16:52 · 北京
回复
没有更多了
发现更多内容

面试官:如何实现多级缓存?

王磊

Java 面试

户外全彩LED显示屏的验收标准

Dylan

全彩LED显示屏 户外LED显示屏 led显示屏厂家

技术专栏丨Rust 语言简介及其在 Fabarta 技术栈中的应用

Fabarta

鸿蒙NEXT来了?企业开发者需要关注些什么

Geek_2305a8

安全利器!龙蜥推出机密计算远程证明服务—OAAS 诚邀广大用户测试

OpenAnolis小助手

开源 安全 龙蜥社区 机密计算 OAAS

关于代码性能优化的总结

快乐非自愿限量之名

深度学习 代码 代码优化

3款好用的国产软件,装了就舍不得卸载

高端章鱼哥

思维导图 低代码

Enhancing WiFi7 Network Efficiency: How IPQ9574 and IPQ9554 Collaborate with QCN9274

wallyslilly

ipq9574

如何做代币分析:以 BNB 币为例

Footprint Analytics

Token 代币 bnb

正式发布后的一年,我们都做了什么? | Sermant 2023年度总结

华为云开源

开源 微服务 服务治理 sermant

APISIX 可观测性最佳实践

观测云

APISIX

分布式场景怎么Join | 京东云技术团队

京东科技开发者

人工智能的起源和应用场景

小齐写代码

当平台工程遇上DevEx:打造卓越的开发者体验

京东科技开发者

提升网络灵活性,SD-WAN助您快速应对备用线路需求

Ogcloud

网络 SD-WAN 企业网络 SD-WAN组网 SD-WAN服务商

多人协同开发场景,如何做到高效发布

阿里云云效

阿里云 云原生 云效

技术分享 | 神级程序员都在用什么工具?

互联网工科生

IntelliJ IDEA 数据源 JNPF

AI 大模型微调训练营第 0 期 -- 毕业总结

Jabez

多人协同开发场景,如何做到高效发布

阿里巴巴云原生

阿里云 微服务 云原生 云效

已解决xlrd.biffh.XLRDError: Excel xlsx file; not supported异常的正确解决方法,亲测有效!!!

小明Java问道之路

探索AI视频生成新纪元:文生视频Sora VS RunwayML、Pika及StableVideo——谁将引领未来

快乐非自愿限量之名

人工智能 视频制作 AI视频

展开说说鸿蒙开源与技术细节

Geek_2305a8

聚道云软件连接器助力生产制作行业实现数字化升级

聚道云软件连接器

为什么程序员不能一次性写好,需要不停改bug?

伤感汤姆布利柏

旁门左道:借助 HttpClientHandler 拦截请求,体验 Semantic Kernel 插件

不在线第一只蜗牛

Java c++ 开发语言

7个必会的数据可视化库

高端章鱼哥

数据可视化

区块链游戏解说:什么是 Nine Chronicles

Footprint Analytics

区块链游戏

spark为什么比mapreduce快?

京东科技开发者

Sora文生视频模型深度剖析:全网独家指南,洞悉98%关键信息,纯干货

汀丶人工智能

Pika sora 文生视频 文生视频模型

优步完成了主要MySQL集群组的升级,提升了性能和安全性_数据集成_InfoQ精选文章