GitHub 團(tuán)隊(duì)近日分享了他們將 GitHub.com 的底層數(shù)據(jù)庫(kù)無(wú)縫升級(jí)到 MySQL 8.0 的經(jīng)驗(yàn)。 據(jù)介紹,GitHub 使用 MySQL 來(lái)存儲(chǔ)大量關(guān)系數(shù)據(jù),因此在不影響網(wǎng)站服務(wù)級(jí)別目標(biāo) (SLO) 的情況下升級(jí)主機(jī)集群(1200 多臺(tái) MySQL 主機(jī))絕非易事。其團(tuán)隊(duì)表示,為了升級(jí)到 MySQL 8.0,他們規(guī)劃、測(cè)試和升級(jí)本身總共花費(fèi)了一年多的時(shí)間,并且需要 GitHub 內(nèi)部多個(gè)團(tuán)隊(duì)的協(xié)作。
GitHub 的 MySQL 基礎(chǔ)設(shè)施概覽:
由 1200 多臺(tái)主機(jī)組成,包括數(shù)據(jù)中心中的Azure 虛擬機(jī)和裸機(jī)主機(jī)
存儲(chǔ)超過(guò) 300 TB 的數(shù)據(jù),并在 50 多個(gè)數(shù)據(jù)庫(kù)集群中每秒處理 550 萬(wàn)次查詢(xún)
每個(gè)集群都配置為具有主副設(shè)置的高可用性
分區(qū)存儲(chǔ)數(shù)據(jù) —— 利用水平和垂直分片來(lái)擴(kuò)展 MySQL 集群,以及使用 MySQL 集群來(lái)存儲(chǔ)特定產(chǎn)品領(lǐng)域的數(shù)據(jù)。此外還為大結(jié)構(gòu)域 (large-domain) 提供了水平分片的 Vitess 集群,這些區(qū)域的增長(zhǎng)超出了單主 MySQL 集群的規(guī)模
龐大的工具生態(tài),包括 Percona Toolkit、gh-ost、orchestrator、freno 和用于操作主機(jī)集群的內(nèi)部自動(dòng)化工具
由于需要操作兩個(gè)版本的 MySQL,因此 GitHub 內(nèi)部使用的工具和自動(dòng)化設(shè)施需要能夠兼容處理混合版本,并了解 5.7 和 8.0 之間新的、不同的或已棄用的語(yǔ)法。 為了滿(mǎn)足可用性標(biāo)準(zhǔn),GitHub 團(tuán)隊(duì)采取了逐步升級(jí)策略,滿(mǎn)足在整個(gè)過(guò)程中進(jìn)行 checkpoint 和回滾的需求。下面是他們制定的升級(jí)計(jì)劃:
步驟 1:升級(jí)滾動(dòng)副本 (rolling replica)
步驟 2:升級(jí)備份拓?fù)?(replication topology)
步驟 3:將 MySQL 8.0 主機(jī)提升為主集群
步驟 4:升級(jí)面向內(nèi)部的實(shí)例類(lèi)型
步驟 5:清理,確認(rèn)集群不需要回滾并成功升級(jí)到 MySQL 8.0 后,刪除 5.7 服務(wù)器。驗(yàn)證工作會(huì)至少經(jīng)歷一個(gè)完整的 24 小時(shí)流量周期,以確保在高峰流量期間不會(huì)出現(xiàn)問(wèn)題。
至于為什么要升級(jí)到 MySQL 8.0,GitHub 團(tuán)隊(duì)表示主要是因?yàn)?MySQL 5.7 的生命周期即將結(jié)束。此外升級(jí)后可以獲得最新安全補(bǔ)丁、錯(cuò)誤修復(fù)和性能增強(qiáng)的 MySQL 版本。他們還希望測(cè)試 8.0 中的新功能并從中受益,包括即時(shí) DDL、隱形索引和壓縮的 bin 日志等。
審核編輯:湯梓紅
-
主機(jī)
+關(guān)注
關(guān)注
0文章
1024瀏覽量
35601 -
數(shù)據(jù)庫(kù)
+關(guān)注
關(guān)注
7文章
3870瀏覽量
65224 -
MySQL
+關(guān)注
關(guān)注
1文章
838瀏覽量
27093 -
GitHub
+關(guān)注
關(guān)注
3文章
477瀏覽量
17079
原文標(biāo)題:GitHub.com跑了1200多臺(tái)MySQL主機(jī),如何無(wú)縫升級(jí)到8.0?
文章出處:【微信號(hào):OSC開(kāi)源社區(qū),微信公眾號(hào):OSC開(kāi)源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
labview有調(diào)用mysql數(shù)據(jù)庫(kù)問(wèn)題????
ESP8266如何連接mysql數(shù)據(jù)庫(kù)
哪些華為手機(jī)可以升級(jí)到安卓8.0呢?
MySQL數(shù)據(jù)庫(kù)如何安裝和使用說(shuō)明
騰訊云數(shù)據(jù)庫(kù)8.0的內(nèi)核為什么可以百分百完全兼容主流MySQL分支?
Linux系統(tǒng)升級(jí)MySQL數(shù)據(jù)庫(kù)的步驟和難題
華為云數(shù)據(jù)庫(kù)-RDS for MySQL數(shù)據(jù)庫(kù)
MySQL數(shù)據(jù)庫(kù)管理與應(yīng)用
mysql是一個(gè)什么類(lèi)型的數(shù)據(jù)庫(kù)
MySQL數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)
mysql數(shù)據(jù)庫(kù)基礎(chǔ)命令
數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)—未開(kāi)啟binlog的Mysql數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)案例

數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)—Mysql數(shù)據(jù)庫(kù)表記錄丟失的數(shù)據(jù)恢復(fù)流程

MySQL數(shù)據(jù)庫(kù)的安裝

評(píng)論