您好,登錄后才能下訂單哦!
這篇文章主要為大家分析了 online DDL的原理以及Vitess如何幫助處理模式遷移的相關知識點,內容詳細易懂,操作細節合理,具有一定參考價值。如果感興趣的話,不妨跟著跟隨小編一起來看看,下面跟著小編一起深入學習“ online DDL的原理以及Vitess如何幫助處理模式遷移”的知識吧。
Vitess 引入了一種運行模式遷移的新方法:非阻塞的、異步的、預定的online DDL。通過 online DDL,Vitess 簡化了模式遷移過程,它獲得了操作開銷的所有權,并為用戶提供了一個簡單、熟悉的界面:標準的 ALTER TABLE 語句。
讓我們首先介紹一些背景知識并解釋為什么模式遷移在數據庫世界中是一個如此重要的問題,然后深入研究實現細節。
關系模型是軟件世界中存在時間最長的模型之一,它是幾十年前引入的,直到今天仍被廣泛使用。SQL 同樣古老而可靠,甚至在非關系數據庫中也可以找到 SQL 或類似 SQL 的語言。
關系模型對許多常見的用例都有意義,具有屬性的實體(分別為表和列)可以很好地映射到流行的結構,如用戶、產品、成員關系、消息等,而且 SQL 的表達能力足夠強,能夠構造簡單和復雜的問題。
但從歷史上看,關系模型是有代價的。雖然許多數據庫系統對讀和寫進行了優化,但它們對元數據更改(特別是模式更改)的優化程度并不高。此類更改的最大挑戰之一是,它們需要一個操作程序,而且大多不在開發人員的領域之內。
在早期,數據庫管理員(DBA)充當數據庫的保鏢是很常見的。他們會拖延來自開發者的“瘋狂請求”。變更的要求需要經過漫長的程序和文書工作。
幸運的是,這些日子已經過去了,我們在持續部署和快速開發方面更加協作。然而,新的變化加劇了這個問題。在過去,你需要每月更改一次模式;也許幾個月就有一次。你應該為此做好準備,推出一個新的版本。如今,世界上最繁忙的數據庫部署每天都要運行多個模式遷移,這并不少見。
這重新引入并強化了模式遷移問題:該過程大部分不在開發人員的領域之內。它要求他們是數據庫專家。在每天進行多次遷移的情況下,他們需要以與自己的開發流程不兼容的方式與其他開發人員協作和同步(例如,這與比較和合并 git 分支完全不同)。在小公司中,你會看到開發人員只是在他們認為合適的時候擁有和運行他們的遷移,但這并不能擴展,而且產品和組織越大,就越需要一個更正式的流程。
在 MySQL 世界中,直接的模式遷移是阻塞的,如果不是在主服務器上,那就是在副本上。他們對資源咄咄逼人,無法被打斷或壓制。在線模式更改工具已經存在了十多年,但是它們引入了自己的復雜性:你需要將它們與數據庫一起安裝、允許訪問、安排執行、登錄、執行、通知這些工具如何進行限制、處理錯誤、為它們的操作提供可見性等等。在規模較大的公司中,有專門的 DBA 或 Ops 團隊手動執行模式更改是很常見的。這些團隊可以每周甚至每天花費數小時來處理模式遷移的操作開銷。
對于開發人員來說,這是一種所有權的喪失。雖然他們有向某個表添加列的想法,但他們需要從外部團隊請求幫助,并且常常等待,而對進展狀態沒有太多的可見性。這就打破了他們的流程。也許 NoSQL 數據庫最大的吸引力之一是它們不會對開發人員的流程施加這種級別的約束。
對于 DBA 來說,模式遷移是一種負擔。一些開發人員對他們自己的工作流程的意外中斷。
操作開銷始于模式遷移跨越多個域這一事實。讓我們來看看模式遷移流的不完整分解:
對于生產環境中的多個集群(其中一些是分片的),用于識別正確的集群的發現機制是什么?用于應用模式更改的集群的主機是?
Vitess 的架構使其處于一個獨特的位置,可以處理大多數模式遷移流程。例如:
Vitess 知道模式部署在何處、存在哪些碎片、在任何給定時間誰是主節點,并且可以在正確的數據庫服務器上應用 DDL,而無需用戶干預。
開發 Vitess online DDL 的目標是盡可能地向用戶隱藏所有的復雜性。因此,所有用戶需要運行的是:
SET @@ddl_strategy=’gh-ost’;
ALTER TABLE my_table ADD COLUMN some_column INT NOT NULL;
ALTER TABLE 語句本身是完全正常的,但是響應不同。它立即返回,并帶有一個作業 ID,用戶可以使用該 ID 跟蹤遷移的進度。用戶可以選擇 gh-ost 策略、pt-osc 策略或普通 direct 策略(不是 online DDL)。
關于“ online DDL的原理以及Vitess如何幫助處理模式遷移”就介紹到這了,更多相關內容可以搜索億速云以前的文章,希望能夠幫助大家答疑解惑,請多多支持億速云網站!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。