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 日志等。
物联网全栈可视化运维监控平台
IBM首席执行官给大家的一封信
Buck电路的工作波形
我国制造业目前还面临三明治困局,需要靠设计突围
谁投出了344家独角兽?老虎基金、腾讯、软银和红杉排座次
GitHub底层数据库无缝升级到MySQL 8.0的经验
数字经济技术发展的内在逻辑是什么?
LED贴片常见灯珠规格型号详细介绍
美创暗数据发现和数据分类分级系统全新升级
锐龙r7和酷睿i7哪个好?电脑CPU选择建议
叽里呱啦:好的启蒙要契合孩子成长规律
AM系列微机保护测控装置
综合布线管理系统验收
戴森放弃造车之后,未来五年内投资241.5亿元人民币开发电动车零部件
袖珍式粗糙度仪的维护保养
基于CMX264芯片结合数传技术设计跳频扰频的方案
紫米推出了紫米无线充移动电源10000mAh版本专为iPhone而生
采用西门子PCS7控制系统在钛白粉生产中的应用
光电印制电路板用聚合物光波导材料
LG将推全球首款32寸OLED 4K显示器