(關注“資料庫架構師”公衆号,提升資料庫技能,助力職業發展)
0 - 更新背景
MySQL 5.5釋出于2010年,至今已有十年曆史,官方已經停止更新。2008年釋出的MySQL 5.1版本,在2018年釋出的MySQL 8.0版本後,也已不再相容和更新。
為了保證提供更穩定、高效的MySQL服務,我們準備啟動MySQL更新計劃。秉承“由簡入繁”、“由易到難”的原則,逐漸更新MySQL 5.5至5.7版本【8.0由于變更過大,暫不考慮更新到8.0版本】。
各個版本維護周期:
1 - 更新收益
MySQL 5.7版本對InnoDB引擎做了較大的優化。增加了很多實用性的新功能,比如:
- 線上調整buffer pool;
- 快速擴充varchar列;
- 線上回收undo;
- 高并發場景下,支援關閉死鎖檢測,提高行鎖效率;
- 部分SQL可并行讀
- ……
性能方面,MySQL 5.7相比于MySQL 5.5,SQL性能提升明顯。這得益于InnoDB優化器的重構,對于join + sort的讀請求,優化得尤為顯著。
在主從複制方面,MySQL 5.7支援并行複制,可有效地減少大批量寫入下的從庫延時情況。借助GTID的半同步複制,可更好的保證主從資料的一緻性。
安全方面,支援密碼過期政策、使用者鎖定等功能,保證短期賬戶超過規定時間即不可使用。
在平台中,支援SQL通路統計,可直覺看到每張表的通路情況,已經SQL的通路情況。
2 - 更新前注意事項
DBA核對:
- 所有表自增字段的ID從1開始;
- datetime類型的範圍在’1000-01-01’到’9999-12-31’之間;
- 表名大小寫不敏感;
開發人員核對:
- MySQL的應用驅動包(mysql-connector-java),建議在5.1.34及以上;
3 - 更新步驟
3.1 - 準備更新環境
- 從現有MySQL 5.5叢集的備份中,還原一個節點至更新中轉機;
- 在新叢集所在伺服器搭建一套空的MySQL 5.7叢集;
- 從還原的節點中導出賬号權限,導入至新叢集;
- 将還原節點的資料(MySQL 5.5)導出至新叢集(MySQL 5.7),平均速度為15M/s;
- 待資料導出完成,将新主庫挂載到老主庫,依靠MySQL主從,同步增量資料;
- 等待同步完成;
- 将新節點加監控;
3.2 - 切換步驟
- 與開發人員約定切換時間;
- 如果有從域名,提前調整;
- 到切換時間時,老主庫設定隻讀,新主庫主從複制點位不再變化時,修改負載均衡關系,kill老主庫連接配接;
- 通知開發人員切換完成;
- 下線老主庫、老從庫;
- 觀察新主庫、新從庫錯誤日志;
- 修改新叢集元資訊、監控配置、備份、高可用;
如果這篇文章對你有幫助,還請幫忙點贊、轉發 以下,你的支援會激勵我們輸出更多高品質的文章!
如果你還想看更多優質文章,歡迎關注我的公衆号「資料庫架構師」,提升資料庫技能,助力職業發展。