作為現代化的互聯網企業(yè) ,最怕的是什么 ?是意外!由各種意外導致的數據庫問題,磁盤問題、網絡問題、人員誤操作問題等等,這些問題都可能導致數據不可用或者丟失,造成重大損失。
因此,很少會有企業(yè)采用「單機」數據庫架構,盡管這個架構簡單明了,卻經不起任何的意外,所以大部分企業(yè)都會采用更加安全可靠的「主從高可用」架構。這種架構通常具備一個主庫(Master)和一個或多個從庫(Slave),所有從庫都實時保存了主庫最新數據的副本,當主庫出現問題無法訪問時,保證從庫可以迅速接管。
但實際上,你的「主從高可用」架構通常是部署在一個機房的多臺服務器中,在遭遇火災、地震、線纜被意外挖斷等人為不可控的災害時,主從高可用架構將形同虛設,你的數據照樣會被一鍋端。這就是我今天想聊的話題,單一機房內的高可用并不能算真正意義上的高可用,而「跨機房容災」甚至「異地容災」才算。
異地容災?異地多活?
顧名思義,異地容災就是在「主從高可用」架構的基礎上,把服務器分別部署在不同地域的機房中,當中心節(jié)點地域的機房發(fā)生災害,其他單元節(jié)點所處地域的服務器可以迅速接管業(yè)務,確保業(yè)務的可用性,但是這又會帶來新的問題,單元節(jié)點平時只是作為「災備實例」存在,誰能確保在所有中心節(jié)點的流量切換到單元節(jié)點后不出任何問題呢?因此,這個方案是存在風險的。
而異地多活則是異地容災的一種升級方案,單元節(jié)點如果僅僅是作為災備實例,那也太浪費了,不如和中心節(jié)點一起,同步處理業(yè)務流量,這樣一來,不僅可以提高資源利用率,也能保證在任意一個節(jié)點失效時,其他節(jié)點可以平穩(wěn)接管流量。要做到這一點,我們就要解決各節(jié)點之間的數據一致性問題。

上圖就是一個異地多活的解決方案,其核心是在所有節(jié)點間建立實時的數據同步機制,以確保各個節(jié)點的數據一致性。當中心節(jié)點發(fā)生數據變更時,這些變更會被實時同步到所有單元節(jié)點,反之亦然,形成了一個雙向同步的復制鏈路,確保所有節(jié)點中的數據保持實時一致。
實現這個過程是非常復雜的,但是通過 NineData 就可以輕松做到。
什么是 NineData?
NineData 是玖章算術公司自主研發(fā)的云原生智能數據管理平臺,是一個純國產的軟件。它提供的數據復制功能專門用于數據源之間的數據遷移與同步,針對本文的雙向數據實時同步的需求,也提供了非常強大的支持。
這里我們以 MySQL 為例,假設有 A、B、C 三個數據源,以數據源 A 為中心節(jié)點,分別創(chuàng)建 A 和 B、A 和 C 之間的雙向復制任務,實現三個數據源的數據實時同步。
步驟一:錄入所有節(jié)點的 MySQL 數據庫并添加多活標記
1. 登錄 NineData 控制臺,單擊數據源管理>數據源,然后在頁面中單擊創(chuàng)建數據源,選擇需要錄入的數據源。

2. 根據頁面提示進行配置,然后單擊創(chuàng)建數據源完成創(chuàng)建。

3. 單擊數據源 ID 進入數據源詳情頁面,單擊展開,找到多活標記,配置多活標記名稱。該步驟所有參與復制的數據源都需要執(zhí)行,以防止發(fā)生數據循環(huán)復制。

步驟二:創(chuàng)建數據源 A、B、C 之間的雙向復制任務
1. 登錄 NineData 控制臺,單擊數據復制>數據復制,然后單擊創(chuàng)建復制。

2. 根據頁面提示配置復制任務,源數據源處選擇數據源 A,目標數據源處選擇數據源 B,然后在復制方式處選擇雙向復制。

3. 配置完成后啟動任務,然后再次創(chuàng)建一個新的復制任務,源數據源處依然選擇數據源 A,目標數據源處選擇數據源 C,然后同樣在復制方式處選擇雙向復制。

4. 根據頁面提示完成配置后,在數據復制的任務列表中可以看到多了 2 條雙向復制任務,當正反向任務的延遲為 0 的時候,代表數據源 A、B、C 之間的數據是一致的。

最后
本方案作為示例展示了一中心兩單元的同步架構,事實上,這個解決方案可以支持無限多個單元節(jié)點的實時同步,只需重復添加數據源 A 到數據源 N 即可實現。
至此,你的異地多活架構已經全部配置完成,所有節(jié)點都可以提供業(yè)務讀寫,得益于實時的數據同步機制,任何一個節(jié)點發(fā)生故障時,其他節(jié)點均能夠無縫接管中心節(jié)點的流量,由于所有單元節(jié)點本身就在處理業(yè)務,因此無需擔心單元節(jié)點能否勝任,保證了系統(tǒng)的高可用性和持續(xù)性。
審核編輯 黃宇
-
數據庫
+關注
關注
7文章
4075瀏覽量
68504 -
MySQL
+關注
關注
1文章
927瀏覽量
29726
發(fā)布評論請先 登錄
MySQL 到 SelectDB 實時同步:傳統(tǒng) ETL 與 NineData 的能力側重
如何實現對異地PLC的遠程編程調試和上下載程序
從業(yè)務庫到實時分析庫,NineData 構建 MySQL到SelectDB 同步鏈路
從個人開發(fā)到企業(yè)專屬集群,NineData 如何支持多類數據管理場景?
從個人開發(fā)到企業(yè)專屬集群,NineData怎么做的?
Flyway、Liquibase難以覆蓋 NineData 的多環(huán)境發(fā)版流程編排能力?
哪些人更適合用 NineData 社區(qū)版的慢 SQL 功能:DBA、后端、SRE,還是技術負責人?
基于 NineData 的多環(huán)境表結構變更流程編排實踐
NineData 新增支持 MySQL 到 openGauss PostgreSQL 數據復制鏈路
避免選擇不當的數據變更審批工具!NineData實用技術指南
NineData 社區(qū)版的慢SQL分析,比查看日志+看EXPLAIN適合中小團隊
MySQL 慢 SQL 排查這件事,NineData 社區(qū)VS DBeaver/ Navicat 技術分析
信而泰GPS異地測試解決方案:跨越空間的通信測試
工業(yè)智能網關實現異地PLC遠程調試編程上下載
使用NineData實現MySQL異地多活場景
評論