国产精品成人网站,日韩视频二区,亚洲成人手机电影,怡红院国产

行業(yè)產(chǎn)品

  • 行業(yè)產(chǎn)品

安徽思成儀器技術(shù)有限公司


當(dāng)前位置:安徽思成儀器技術(shù)有限公司>技術(shù)文章>mysql升級,數(shù)據(jù)庫升級-成為MySQL DBA 博客系列(之二)
技術(shù)文章

mysql升級,數(shù)據(jù)庫升級-成為MySQL DBA 博客系列(之二)

閱讀:20發(fā)布時間:2024-11-23

原文出處:

點擊查閱成為MySQL DBA博客系列的上一篇文章:)

數(shù)據(jù)庫供應(yīng)商通常每個月都會發(fā)布一些有bug /安全性修補程序的補丁,我們?yōu)槭裁匆P(guān)心這些?因為,新的版本可能對安全漏洞或入侵系統(tǒng)進行修復(fù),所以除非不關(guān)注安全性能,否則,您會希望在您的系統(tǒng)安裝上的安全修補程序。其中MySQL主要版本比較少見,通常是次版本升級,但是他們可能會帶來一些重要的功能,使得升級是值得的。

在這篇博文中,我們將介紹DBA的一個最基本的任務(wù)—次要版本數(shù)據(jù)庫升級和主要數(shù)據(jù)庫升級。

MySQL升級有兩個MySQL版本已經(jīng)不再關(guān)注和修復(fù),是因為是在oracle收購MySQL之前的發(fā)行版本。它們分別發(fā)生在2013年12月4日的MySQL 5.1與2012年1月9日的MySQL5.0之前。在GA發(fā)布8年后的2018年,MySQL5.5也發(fā)生過這種情況。這意味著對于MySQL 5.0和MySQL 5.1,用戶無法依靠的修復(fù)—即使是嚴(yán)重的安全漏洞。這也是您需要將MySQL升級到更新版本的原因。友情建議:推薦使用MySQL5.6或者MySQL5.7.20之后的版本。葉師傅的朋友圈提過“關(guān)于MySQL5.7.20之前版本存在的bug"。

但是,您不會只處理主要的版本升級,而是在工作中更經(jīng)常地升級次要版本,例如5.6.x - > 5.6.y. 可能的是,版本會為影響工作負載的錯誤進行一些修復(fù),但也可能是其他原因。 在執(zhí)行主版本和次版本升級方式方面存在顯著差異。

友情建議:關(guān)于版本的子版本升級,尤其是成熟的版本,大多數(shù)是對bug的修復(fù)??梢愿鶕?jù)發(fā)行說明來判斷是否要升級,不過不建議使用子版本低于20的。

準(zhǔn)備工作

在您考慮執(zhí)行升級之前,您需要決定進行哪種測試。理想情況下,您有一個測試/開發(fā)環(huán)境,可以為常規(guī)版本進行測試。如果這樣的話,進行升級前測試的方法就是使用新的MySQL版本來構(gòu)建臨時環(huán)境的數(shù)據(jù)庫層。一旦完成mysql升級,您可以繼續(xù)進行一組常規(guī)測試。更多更好—你不僅要關(guān)注“xx功能/xxbug"方面,還要關(guān)注性能。

在數(shù)據(jù)庫方面,你也可以做一些通用的測試。為此,您需要一個慢日志格式的查詢列表。然后,可以使用pt-upgrade在舊版本和新版本的MySQL上運行它們,比較響應(yīng)時間和結(jié)果集。在過去,我們已經(jīng)注意到,pt-upgrade會返回很多誤報—它可能會將查詢報告為慢,而事實上,兩個版本的查詢都是正確的。為此,您可能需要引入一些額外的完整性檢查—解析pt-upgrade輸出,獲取報告的慢速查詢,再次在服務(wù)器上執(zhí)行這些查詢,并再次比較結(jié)果。你需要記住,你應(yīng)該以同樣的方式連接到新舊數(shù)據(jù)庫服務(wù)器(套接字連接將比TCP更快)。

這種通用測試的典型結(jié)果是執(zhí)行計劃發(fā)生變化的查詢—通常添加一些索引或強制優(yōu)化器選擇正確的查詢就足夠了。您還可以看到結(jié)果集中存在差異的查詢—這很可能是查詢中缺少顯式ORDER BY的結(jié)果,如果不對其進行排序,則無法依賴行的排序方式。

友情建議:關(guān)于升級操作之前強烈要求備份。個人認為一個DBA除了要考慮性能,更多的是考慮穩(wěn)定,安全。

次要版本升級

小升級相對容易執(zhí)行—大多數(shù)情況下,您只需要使用發(fā)行版的軟件包管理器來安裝新版本即可。一旦你這樣做,你需要確保升級后MySQL已經(jīng)啟動,然后你應(yīng)該運行mysql_upgrade腳本。該腳本遍歷數(shù)據(jù)庫中的表,并確保它們與當(dāng)前版本兼容。如果有需要,它也可能修復(fù)你的系統(tǒng)表。

顯然,安裝新版本的軟件包需要停止服務(wù)。因此您需要規(guī)劃升級過程。如果使用Galera Cluster或MySQL復(fù)制,它可能會略有不同。

MySQL復(fù)制

當(dāng)我們處理MySQL復(fù)制時,升級過程相當(dāng)簡單。您需要通過升級slave,在執(zhí)行升級所需的時間內(nèi)將其停止運行(如果一切順利,不超過幾分鐘的停機時間,即僅需很短的時間)。為此,您可能需要在代理配置中進行一些臨時更改,以確保流量不會被路由到正在維護的slave設(shè)備。這里很難給出任何細節(jié),因為這取決于你的設(shè)置。在某些情況下,甚至不需要任何更改,因為代理可以自行適應(yīng)拓撲更改,并檢測哪個節(jié)點可用,哪個不可用。順便說一句,這就是你應(yīng)該確定如何配置你的代理。

一旦每個從機都被更新,您需要執(zhí)行一個計劃的故障切換。我們在較早的博客文章中討論了這個過程。該過程也可能取決于您的設(shè)置。如果你有自動化的工具(例如MHA),它不一定是手動的。一旦選出新的主服務(wù)器并完成故障切換,則應(yīng)該對舊主服務(wù)器執(zhí)行升級,此時應(yīng)該將新服務(wù)器從新主服務(wù)器上刪除。這將結(jié)束MySQL復(fù)制設(shè)置的次要版本升級。

友情建議:升級從庫的時候,一定要留心主從的報錯show slave status中的error。

Galera升級

使用Galera,執(zhí)行升級要容易一些—您需要逐個停止節(jié)點,升級停止的節(jié)點,然后重新啟動,然后再轉(zhuǎn)到下一個節(jié)點。如果您的代理需要一些手動調(diào)整來確保流量不會受到正在進行維護的節(jié)點的攻擊,則必須進行這些更改。如果它可以自動檢測所有的東西,你只需要停止MySQL,升級并重新啟動。一旦您瀏覽了集群中的所有節(jié)點,升級就完成了。

友情建議:升級Galera,一定要測試、測試、測試、備份、備份、備份。有個比較完善的回退方案,猥瑣發(fā)育,不要浪。主要版本升級

MySQL中的主要版本升級將是5.x - > 5.y甚至4.x> 5.y。這樣的升級比較復(fù)雜,比較復(fù)雜,我們剛剛在前面的段落中提到的小升級。

執(zhí)行升級的推薦方式是轉(zhuǎn)儲并重新加載數(shù)據(jù)—這需要一些時間(取決于數(shù)據(jù)庫的大?。?,但是在從站不再旋轉(zhuǎn)的情況下執(zhí)行升級通常是不可行的。即使使用mydumper / myloader,這個過程也會花費很長時間。一般來說,如果數(shù)據(jù)集大于幾百GB,則可能需要額外的準(zhǔn)備工作。

盡管可能只是進行二進制升級(安裝新軟件包),但不建議這樣做,因為舊版本和新版本之間可能存在一些二進制格式的不兼容問題,甚至在執(zhí)行mysql_upgrade之后,仍然可能造成一些問題。我們已經(jīng)看到了二進制升級導(dǎo)致的一些奇怪的行為,如何在優(yōu)化器的工作原理,或?qū)е虏环€(wěn)定。所有這些問題都通過執(zhí)行轉(zhuǎn)儲/重新加載過程來解決。所以,雖然運行二進制升級也許可以,但是您也可能遇到嚴(yán)重的問題—這是您的要求mysql升級,最終是您的決定。如果您決定執(zhí)行二進制升級,則需要執(zhí)行詳細(耗時)的測試,以確保不會破壞任何內(nèi)容。否則,你有風(fēng)險。

MySQL復(fù)制

如果我們的設(shè)置基于MySQL復(fù)制,我們將在新的MySQL版本上構(gòu)建一個從站。假設(shè)我們正在從MySQL 5.5升級到MySQL 5.6。由于我們必須執(zhí)行一個很長的轉(zhuǎn)儲/重新加載過程,我們可能需要為此構(gòu)建一個單獨的MySQL主機。的方法是使用xtrabackup從一個從站獲取數(shù)據(jù)并復(fù)制坐標(biāo)。這些數(shù)據(jù)將允許您將新節(jié)點從舊節(jié)點上刪除。一旦新節(jié)點(仍在運行MySQL 5.5 - xtrabackup只是移動數(shù)據(jù),所以我們必須使用相同的,原始的MySQL版本)啟動并運行后,是時候轉(zhuǎn)儲數(shù)據(jù)了。您可以使用我們之前在“備份和還原"中發(fā)布的任何邏輯備份工具。只要您稍后可以恢復(fù)數(shù)據(jù),則無關(guān)緊要。

轉(zhuǎn)儲完成后,該停止MySQL,清除當(dāng)前數(shù)據(jù)目錄,在節(jié)點上安裝MySQL 5.6,使用mysql_install_db腳本初始化數(shù)據(jù)目錄并啟動新的MySQL版本。那么是時候加載轉(zhuǎn)儲 - 這個過程也可能需要很長時間。一旦完成,你應(yīng)該有一個新的和干凈的MySQL 5.6節(jié)點?,F(xiàn)在是時候把它和master一起同步了 - 你可以使用xtrabackup收集的坐標(biāo)將節(jié)點從運行MySQL 5.5的生產(chǎn)集群的成員中刪除。這里需要記住的重要一點是,如果您最終要將節(jié)點從當(dāng)前的生產(chǎn)群集中刪除,則需要確保二進制日志不會旋出。對于大型數(shù)據(jù)集,轉(zhuǎn)儲/重新加載過程可能需要幾天,因此您需要調(diào)整expire_logs_days因此在主人。你也想確認你有足夠的可用磁盤空間用于所有這些binlog。

一旦我們擁有一個MySQL 5.5從屬MySQL 5.5主服務(wù)器,現(xiàn)在是時候瀏覽5.5個從服務(wù)器并升級它們了。現(xiàn)在的方法是利用xtrabackup從5.6節(jié)點復(fù)制數(shù)據(jù)。所以,我們把一個5.5從機停掉,停止MySQL服務(wù)器,清除數(shù)據(jù)目錄,將MySQL升級到5.6,使用xtrabackup從其它5.6從機恢復(fù)數(shù)據(jù)。一旦完成,您可以再次設(shè)置復(fù)制,并且應(yīng)該全部設(shè)置。

這個過程比為每個從站執(zhí)行轉(zhuǎn)儲/重新加載要快得多—每個復(fù)制群集執(zhí)行一次就可以了,然后使用物理備份來重建其他從站。如果您使用AWS,則可以依靠EBS快照而不是xtrabackup。與邏輯備份類似,只要能夠正常工作,重建從站的方式并不重要。

最后,一旦所有從站都升級完畢,您需要從5.5主站到5.6從站之一進行故障切換。在這一點上,可能發(fā)生的情況是,您將無法在復(fù)制中保留5.5(即使您在它們之間設(shè)置了主 - 主復(fù)制)。一般來說,不支持從新版本的MySQL復(fù)制到較舊的版本 - 復(fù)制可能會中斷。不管怎么樣,您都需要使用與從服務(wù)器相同的流程來升級和重建舊的主服務(wù)器。

Galera升級

與MySQL復(fù)制相比,Galera同時更加容易升級。用Galera創(chuàng)建的集群應(yīng)該被看作是一個MySQL服務(wù)器。在討論Galera升級時,記住這一點至關(guān)重要 - 它不是一個擁有一些slave或者相互連接的master - 就像一臺服務(wù)器一樣。要執(zhí)行單個MySQL服務(wù)器的升級,您需要執(zhí)行脫機升級(使其不能輪換,轉(zhuǎn)儲數(shù)據(jù),將MySQL升級到5.6,加載數(shù)據(jù),重新啟動它)或創(chuàng)建一個從屬服務(wù)器,升級它并最終故障轉(zhuǎn)移到它(我們在上一節(jié)討論MySQL復(fù)制升級時描述的過程)。

同樣的事情適用于Galera集群—您要么升級所有節(jié)點(所有節(jié)點),要么必須構(gòu)建一個從屬節(jié)點—另一個通過MySQL復(fù)制連接的Galera集群。

在線升級過程可能如下所示。對于初學(xué)者來說,你需要在MySQL 5.6上創(chuàng)建slave — 進程與上面一樣:創(chuàng)建一個包含MySQL 5.5的節(jié)點(可以是Galera但不是必須的),使用xtrabackup復(fù)制數(shù)據(jù)和復(fù)制坐標(biāo),dump數(shù)據(jù)使用邏輯備份工具,清除數(shù)據(jù)目錄,將MySQL升級到5.6 Galera,引導(dǎo)集群,加載數(shù)據(jù),從節(jié)點關(guān)閉5.5 Galera集群。

此時,您應(yīng)該有兩個Galera群集—5.5和一個Galera 5.6的單個節(jié)點,都通過復(fù)制連接。下一步將是建立一個生產(chǎn)規(guī)模的5.6集群。很難說如何做 - 如果你在云端,你可以旋轉(zhuǎn)新的實例。如果您在數(shù)據(jù)中心中使用共置服務(wù)器,則可能需要將某些硬件從舊群集移到新群集。您需要記住系統(tǒng)的總?cè)萘浚源_保它能夠處理一些不能輪換的節(jié)點。雖然硬件管理可能會非常棘手,但不要過多關(guān)注構(gòu)建5.6群集—Galera將使用SST自動填充新節(jié)點。

一般來說,這個階段的目標(biāo)是建立一個足夠處理生產(chǎn)工作量的5.6集群。一旦完成,您需要故障轉(zhuǎn)移到5.6 Galera群集—這將結(jié)束升級。當(dāng)然,您可能仍然需要添加更多的節(jié)點,但現(xiàn)在是一個定期調(diào)配Galera節(jié)點的過程,現(xiàn)在只使用5.6而不是5.5。

mysql升級_windows mysql升級_linux 升級mysql 版本

掃碼加入知數(shù)堂技術(shù)交流Q

(群號:579036588)


儀表網(wǎng) 設(shè)計制作,未經(jīng)允許翻錄必究 .? ? ? Copyright(C)?2021 http://caturday.cn,All rights reserved.

以上信息由企業(yè)自行提供,信息內(nèi)容的真實性、準(zhǔn)確性和合法性由相關(guān)企業(yè)負責(zé),儀表網(wǎng)對此不承擔(dān)任何保證責(zé)任。 溫馨提示:為規(guī)避購買風(fēng)險,建議您在購買產(chǎn)品前務(wù)必確認供應(yīng)商資質(zhì)及產(chǎn)品質(zhì)量。

會員登錄

×

請輸入賬號

請輸入密碼

=

請輸驗證碼

收藏該商鋪

登錄 后再收藏

提示

您的留言已提交成功!我們將在第一時間回復(fù)您~