GitHub.com 跑了 1200 多台 MySQL 主机,如何无缝升级到 8.0?
GitHub 团队近日分享了他们将 GitHub.com 的底层数据库无缝升级到 MySQL 8.0 的经验。
据介绍,GitHub 使用 MySQL 来存储大量关系数据,因此在不影响网站服务级别目标 (SLO) 的情况下升级主机集群(1200 多台 MySQL 主机)绝非易事。其团队表示,为了升级到 MySQL 8.0,他们规划、测试和升级本身总共花费了一年多的时间,并且需要 GitHub 内部多个团队的协作。
GitHub 的 MySQL 基础设施概览:
- 由 1200 多台主机组成,包括数据中心中的 Azure 虚拟机和裸机主机
- 存储超过 300 TB 的数据,并在 50 多个数据库集群中每秒处理 550 万次查询
- 每个集群都配置为具有主副设置的高可用性
- 分区存储数据——利用水平和垂直分片来扩展 MySQL 集群,以及使用 MySQL 集群来存储特定产品领域的数据。此外还为大结构域 (large-domain) 提供了水平分片的 Vitess 集群,这些区域的增长超出了单主 MySQL 集群的规模
- 庞大的工具生态,包括 Percona Toolkit、gh-ost、orchestrator、freno 和用于操作主机集群的内部自动化工具
由于需要操作两个版本的 MySQL,因此 GitHub 内部使用的工具和自动化设施需要能够兼容处理混合版本,并了解 5.7 和 8.0 之间新的、不同的或已弃用的语法。
为了满足可用性标准,GitHub 团队采取了逐步升级策略,满足在整个过程中进行 checkpoint 和回滚的需求。下面是他们制定的升级计划:
- 步骤 1:升级滚动副本 (rolling replica)
- 步骤 2:升级备份拓扑 (replication topology)
- 步骤 3:将 MySQL 8.0 主机提升为主集群
- 步骤 4:升级面向内部的实例类型
- 步骤 5:清理,确认集群不需要回滚并成功升级到 MySQL 8.0 后,删除 5.7 服务器。验证工作会至少经历一个完整的 24 小时流量周期,以确保在高峰流量期间不会出现问题。
至于为什么要升级到 MySQL 8.0,GitHub 团队表示主要是因为 MySQL 5.7 的生命周期即将结束。此外升级后可以获得最新安全补丁、错误修复和性能增强的 MySQL 版本。他们还希望测试 8.0 中的新功能并从中受益,包括即时 DDL、隐形索引和压缩的 bin 日志等。
详细的技术细节查看:https://github.blog/2023-12-07-upgrading-github-com-to-mysql-8-0/
延伸阅读

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
TIOBE 12 月:C# 有望成为年度编程语言
TIOBE 公布了 2023年 12 月的编程语言排行榜。 2023 年度 TIOBE 编程语言名单即将出炉,其中最有望胜出的当属C#。事实上,早在 2022 年C# 就有望夺得该桂冠,但却在最后时刻被C++ 反超。而在今年,C# 的胜率又多出了几分;因为该语言在一年内的增长率为 +2.38%,与其最接近的竞争者 Fortran 和 F# 的增长率则仅分别上涨了 +0.64% 和 +0.48%。 此外,Top 20 中的大部分语言人气都出现了下降。TIOBE CEOPaul Jansen 评论称,“答案就在所有小语言所在的长尾(long tail)部分。这些语言的受欢迎程度都在上升,而且越来越接近大语言”。例如:一年前,排名第 50 位的语言得分仅为 0.14%,但现在第 50 位语言的得分已经达到了 0.24%。 TIOBE 12 月 TOP 20 编程语言 相较上月,除了 Ruby(18→19)、R (19→20) 以及 Rust (20→18) 之间出现了小范围波动外,Top10-20 榜单没有其他任何排名变化,这也是近期以来榜单变动最小的一次。 TOP 10 编程语言 TIOB...
- 下一篇
GitHub 是如何从 MySQL 5.7 升级到 8.0 的
原文链接 f 15 年前,GitHub 从一个使用一个 MySQL 数据库的 Ruby on Rails 应用程序起步。从那时起,GitHub 不断的演进着 MySQL 架构,以满足平台的扩展和弹性需求,包括构建高可用性、实施自动化测试和数据分片。如今,MySQL 仍是 GitHub 基础架构的核心部分,也是我们首选的关系型数据库。 以下是我们如何将 1200 多台 MySQL 主机从 5.7 版本升级到 8.0 的故事。在不影响我们 SLO 的情况下升级集群并非易事--规划、测试和升级本身就花费了一年多的时间,并且需要 GitHub 内部多个团队的通力协作。 升级的动机 为什么要升级到 MySQL 8.0?随着 MySQL 5.7 的生命周期即将结束,我们将我们的集群升级到了下一个主要版本 MySQL 8.0。我们还希望使用能够获得最新安全补丁、错误修复和性能增强的 MySQL 版本。我们还想测试 8.0 中的一些新功能并从中受益,包括在线 DDL、隐藏索引和压缩的 binlogs 等。 GitHub 的 MySQL 基础设施 在我们深入了解如何进行升级之前,让我们先从 10,000...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- MySQL8.0.19开启GTID主从同步CentOS8
- Mario游戏-低调大师作品
- Linux系统CentOS6、CentOS7手动修改IP地址
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题