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

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

評論