如何實(shí)現(xiàn) MySQL 不停服升級(jí)配置?

如何實(shí)現(xiàn) MySQL 不停服升級(jí)配置?

不停機(jī)升級(jí)機(jī)器配置

假設(shè)您有一臺(tái)運(yùn)行 mysql 的機(jī)器,配置為 4 核 8GB,但發(fā)現(xiàn)現(xiàn)有的配置已不滿足需求,需要升級(jí)到 32 核 128GB。現(xiàn)在的問(wèn)題是如何在不關(guān)閉 MySQL 的情況下進(jìn)行升級(jí)?

傳統(tǒng)的虛擬化技術(shù)(如 VirtualBox)不支持熱更新 VCPU 或 VRAM,因此需要關(guān)機(jī)才能進(jìn)行升級(jí)。然而,主流的分布式虛擬機(jī)技術(shù)(如 KVM、Xen)現(xiàn)在都支持熱添加 VCPU 或 VRAM,就是只能升配、不能降配。

不過(guò),在實(shí)際應(yīng)用中,平滑升級(jí)方案通常不會(huì)追求“不停機(jī)”,而是“不停服”,也就是單個(gè)機(jī)器/節(jié)點(diǎn)可以停,但對(duì)外服務(wù)不會(huì)停。

常見(jiàn)的平滑升級(jí)流程如下:

  1. 準(zhǔn)備新節(jié)點(diǎn)/實(shí)例
  2. 啟動(dòng)新節(jié)點(diǎn)/實(shí)例
  3. 加入服務(wù)發(fā)現(xiàn)/注冊(cè)中心
  4. 移除舊節(jié)點(diǎn)/實(shí)例
  5. 關(guān)閉舊節(jié)點(diǎn)/實(shí)例

在升級(jí)過(guò)程中,新舊節(jié)點(diǎn)同步數(shù)據(jù)的方式取決于數(shù)據(jù)存儲(chǔ)類型:

  • 磁盤(pán)形式數(shù)據(jù)存儲(chǔ):通常采用應(yīng)用與存儲(chǔ)分離的方式,新舊節(jié)點(diǎn)接入同一個(gè)“硬盤(pán)”,不存在數(shù)據(jù)同步問(wèn)題。
  • 分布式集群:采用先加入、再同步、最后重新“選舉”的方式實(shí)現(xiàn)數(shù)據(jù)同步。
  • 內(nèi)存數(shù)據(jù)存儲(chǔ)且不支持分布式:可能會(huì)導(dǎo)致數(shù)據(jù)丟失

AWS Redshift 等云服務(wù)采用的“彈性擴(kuò)容”技術(shù)也基于類似方式實(shí)現(xiàn)。因此,雖然在某些情況下可以在不停機(jī)的情況下升級(jí)機(jī)器配置,但更重要的是實(shí)現(xiàn)“不停服”,以保證對(duì)外服務(wù)的連續(xù)性。

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊13 分享
站長(zhǎng)的頭像-小浪學(xué)習(xí)網(wǎng)月度會(huì)員