0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

GitHub底层数据库无缝升级到MySQL 8.0的经验

OSC开源社区 来源:OSC开源社区 2023-12-13 10:21 次阅读

GitHub 团队近日分享了他们将 GitHub.com 的底层数据库无缝升级到 MySQL 8.0 的经验。 据介绍,GitHub 使用 MySQL 来存储大量关系数据,因此在不影响网站服务级别目标 (SLO) 的情况下升级主机集群(1200 多台 MySQL 主机)绝非易事。其团队表示,为了升级到 MySQL 8.0,他们规划、测试和升级本身总共花费了一年多的时间,并且需要 GitHub 内部多个团队的协作。

fe8b663a-98e2-11ee-8b88-92fbcf53809c.png

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)

fe9570b2-98e2-11ee-8b88-92fbcf53809c.png

步骤 2:升级备份拓扑 (replication topology)

fea5e000-98e2-11ee-8b88-92fbcf53809c.png

步骤 3:将 MySQL 8.0 主机提升为主集群

fea9b2ca-98e2-11ee-8b88-92fbcf53809c.png

步骤 4:升级面向内部的实例类型

步骤 5:清理,确认集群不需要回滚并成功升级到 MySQL 8.0 后,删除 5.7 服务器。验证工作会至少经历一个完整的 24 小时流量周期,以确保在高峰流量期间不会出现问题。

至于为什么要升级到 MySQL 8.0,GitHub 团队表示主要是因为 MySQL 5.7 的生命周期即将结束。此外升级后可以获得最新安全补丁、错误修复和性能增强的 MySQL 版本。他们还希望测试 8.0 中的新功能并从中受益,包括即时 DDL、隐形索引和压缩的 bin 日志等。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 主机
    +关注

    关注

    0

    文章

    996

    浏览量

    35137
  • 数据库
    +关注

    关注

    7

    文章

    3800

    浏览量

    64397
  • MySQL
    +关注

    关注

    1

    文章

    811

    浏览量

    26579
  • GitHub
    +关注

    关注

    3

    文章

    471

    浏览量

    16449

原文标题:GitHub.com跑了1200多台MySQL主机,如何无缝升级到8.0?

文章出处:【微信号:OSC开源社区,微信公众号:OSC开源社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    labview有调用mysql数据库问题????

    labview有调用mysql数据库,请问labview打包成exe安装档,怎么把mysql数据库打包进来,是mysql
    发表于 05-19 16:17

    ESP8266如何连接mysql数据库

    ,按照示例想连接mysql数据库时出现异常,exception(28),然后不断重启,不知道为什么,有谁连接过吗 ,能否分享一下经验,谢谢。
    发表于 01-12 09:22

    哪些华为手机可以升级到安卓8.0呢?

    在去年的8月份,安卓7.0正式推出,国内的很多手机都已经升级到了安卓7.0.首批升级安卓7.0的手机有华为mate9,mate9 pro和一加3T。据可靠消息得知,安卓8.0将于8月21号开始推送了,那么安卓
    发表于 08-21 08:48 3w次阅读

    MySQL数据库如何安装和使用说明

    MySQL数据库开发 基础概念 1.数据:描述事物特征的符号,属性 2.数据库的概念:管理计算机中的数据的仓库 2.
    的头像 发表于 02-13 16:13 2801次阅读

    腾讯云数据库8.0的内核为什么可以百分百完全兼容主流MySQL分支?

    作为目前全球最流行的开源关系数据库MySQL本身就具有分钟级别的数据库部署和弹性扩展等完备的管控服务,此次结合腾讯云MySQL 8.0的全
    发表于 07-09 11:23 734次阅读

    Linux系统升级MySQL数据库的步骤和难题

    对于商业数据库而言,数据库升级是一个优先级很高的事情,有版本升级路线图,有相应的补丁,而且对于方案还有一系列的演练,陷入是一场硬仗。而在MySQL
    发表于 08-10 16:26 1176次阅读

    底层数据库是什么

    底层数据库系统原理
    发表于 01-11 14:25 0次下载

    华为云数据库-RDS for MySQL数据库

    华为云数据库-RDS for MySQL数据库 华为云数据库作为华为云的一款数据库产品,它主要是以MyS
    的头像 发表于 10-27 11:06 1526次阅读

    有哪些不同的MySQL数据库引擎?

    数据库引擎是MySQL组件,可以处理SQL操作,例如从数据库创建、读取和更新数据MySQL中有两种类型的引擎:事务性和非事务性。
    的头像 发表于 04-03 16:38 1142次阅读

    MySQL数据库管理与应用

    MySQL数据库管理与应用 MySQL是一种广泛使用的关系型数据库管理系统,被认为是最流行和最常见的开源数据库之一。它可以被用于多种不同的应
    的头像 发表于 08-28 17:15 977次阅读

    mysql是一个什么类型的数据库

    MySQL是一种关系型数据库管理系统(RDBMS),用于存储和管理大量结构化数据。它被广泛用于各种应用程序和网站的后端,包括电子商务平台、社交媒体网站、金融系统等等。MySQL的特点是
    的头像 发表于 11-16 14:43 1789次阅读

    MySQL数据库基础知识

    MySQL 是一种开源的关系型数据库管理系统,它是目前最流行的数据库之一。MySQL 提供了一种结构化的方法来管理大量的数据,并且具有高效、
    的头像 发表于 11-21 11:09 973次阅读

    mysql数据库基础命令

    MySQL是一个流行的关系型数据库管理系统,经常用于存储、管理和操作数据。在本文中,我们将详细介绍MySQL的基础命令,并提供与每个命令相关的详细解释。 登录
    的头像 发表于 12-06 10:56 591次阅读

    数据库数据恢复—未开启binlog的Mysql数据库数据恢复案例

    mysql数据库数据恢复环境: 本地服务器,windows server操作系统 ,部署有mysql单实例,数据库引擎类型为innodb,
    的头像 发表于 12-08 14:18 1139次阅读
    <b class='flag-5'>数据库</b><b class='flag-5'>数据</b>恢复—未开启binlog的<b class='flag-5'>Mysql</b><b class='flag-5'>数据库</b><b class='flag-5'>数据</b>恢复案例

    数据库数据恢复—Mysql数据库表记录丢失的数据恢复流程

    Mysql数据库故障: Mysql数据库表记录丢失。 Mysql数据库故障表现: 1、
    的头像 发表于 12-16 11:05 160次阅读
    <b class='flag-5'>数据库</b><b class='flag-5'>数据</b>恢复—<b class='flag-5'>Mysql</b><b class='flag-5'>数据库</b>表记录丢失的<b class='flag-5'>数据</b>恢复流程