溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

在線更改MySQL表結(jié)構(gòu)工具gh-ost的特點介紹

發(fā)布時間:2020-08-10 18:08:19 來源:ITPUB博客 閱讀:196 作者:chenfeng 欄目:MySQL數(shù)據(jù)庫
  • 無觸發(fā)器:這也是其他工具最受詬病之處。觸發(fā)器方案會對MySQL的性能造成比較大的影響,嚴重時甚至會拖垮主庫。
  • 輕量級:gh-ost獲取數(shù)據(jù)表修改操作的方法是偽裝成從庫連入,獲取并解析二進制日志,對臨時表插入數(shù)據(jù)也是增量、可控制的,因此對MySQL主庫的性能幾乎無影響。
  • 可暫停:當原主庫處于業(yè)務高峰期時,完全可以暫停gh-ost的操作,暫停就意味著對主庫沒有寫入和更新,這是非常受歡迎的。
  • 動態(tài)可控:gh-ost的操作不但可以暫停,還可以動態(tài)修改,因此在各種情況下修改了配置之后都不必從頭開始重新運行整個修改過程,這是非常節(jié)約資源的。
  • 可審計:gh-ost的狀態(tài)是可以非常容易獲取到的,包括當前任務進度、主要配置參數(shù)、相關(guān)MySQL實例的情況等。gh-ost通過監(jiān)聽TCP或者unix socket文件來獲取命令,因此就給了運維人員極大的靈活性。
  • 可測試:gh-ost支持在從庫上進行測試,以觀察對系統(tǒng)負載的影響、驗證正確性等。GitHub生產(chǎn)環(huán)境的每一張表都這樣用gh-ost在從庫上做過好多次修改測試,他們也呼吁大家用這種方式先體驗gh-ost的功能,再考慮上線應用。
  • 可靠性高:經(jīng)過充分的測試之后,現(xiàn)在GitHub生產(chǎn)環(huán)境的修改表定義操作已經(jīng)全部由gh-ost完成了,而且它還有暫停、延遲切換、準確估計任務進度等功能,審計和在線控制功能可以讓它輕松地與監(jiān)控系統(tǒng)結(jié)合起來,必然非常受運維人員喜愛。
  • 完美解決切換問題:表切換操作是在線修改表定義的最后一步,其它工具操作到這一步時常常會出現(xiàn)各種問題。Facebook OSC也曾詳細分析過這個問題,但它的最終方案是個非原子性切換:先把原始表改名,再把臨時表改名頂上。可惜在兩次改名中間會有一小段表不存在的時間,在這期間運行的業(yè)務語句都會失敗,因為目標表不存在。Shlomi等經(jīng)過嚴密的論證和實驗,給出了原子性的兩階段切換方案:用一條連接去持有鎖,另一條連接做原子性的rename操作。在rename操作之前,會創(chuàng)建一張信號表,用它來阻塞rename操作,直到所有要求的表切換前提條件就緒。根據(jù)這個方案,表切換或者成功,皆大歡喜;或者失敗,則對業(yè)務無影響,也不會丟失數(shù)據(jù),還會釋放鎖讓業(yè)務繼續(xù),DBA只需要再一次用gh-ost重新嘗試切換即可。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI