⑴ 單機MySQL資料庫怎麼做成分布式資料庫集群
"可以採用開源的MyCat解決方案,優點是免費,缺點是出現問題可能要自己解決或者去社區尋找解決方案;
也可以採用北京萬里開源軟體有限公司的集群解決方案,後端使用開源的MySQL存儲數據,優點是有任何問題他們都可以幫忙解決,而且不用擔心系統後續的擴展、集群高可用等情況,他們的工程師還開發過MySQL核心代碼,找他們可以睡個安穩覺,缺點是不免費,他們還有自己的國產資料庫GreatDB,100%兼容MySQL。
對於初創企業,可以考慮選擇免費的開源解決方案,畢竟遇到的問題可能有限,如果要想長期穩定發展,還是選擇萬里開源這樣的公司比較靠譜一些。"
⑵ php mysql分布式資料庫如何實現
當前做分布式的廠商有幾家,我知道比較出名的有「華為雲分布式資料庫DDM」和「阿里雲分布式資料庫」,感興趣可以自行搜素了解下。
分布式資料庫的幾點概念可以了解一下。
數據分庫:
以表為單位,把原有資料庫切分成多個資料庫。切分後不同的表存儲在不同的資料庫上。
以表中的數據行記錄為單位,把原有邏輯資料庫切分成多個物理資料庫分片,表數據記錄分布存儲在各個分片上。
路由分發:
在分布式資料庫中,路由的作用即將SQL語句進行解析,並轉發到正確的分片上,保證SQL執行後得到正確的結果,並且節約QPS資源。
讀寫分離:
資料庫中對計算和緩存資源消耗較多的往往是密集或復雜的SQL查詢。當系統資源被查詢語句消耗,反過來會影響數據寫入操作,進而導致資料庫整體性能下降,響應緩慢。因此,當資料庫CPU和內存資源佔用居高不下,且讀寫比例較高時,可以為資料庫添加只讀資料庫。
⑶ 怎麼設置mysql伺服器間分布式事務
分布式事務是指不同資料庫之間的事務。 比如:A資料庫中的a1表,我新增一條數據。 B資料庫中的b1表,我更新一條數據 如果是分布式事務,這兩步操作新增和更新要麼都做,要麼都不做
⑷ MySQL如何實現高可用
1. 概述
我們在考慮MySQL資料庫的高可用的架構時,主要要考慮如下幾方面:
關於對高可用的分級在這里我們不做詳細的討論,這里只討論常用高可用方案的優缺點以及高可用方案的選型。
2. 高可用方案
2.1. 主從或主主半同步復制
使用雙節點資料庫,搭建單向或者雙向的半同步復制。在5.7以後的版本中,由於lossless replication、logical多線程復制等一些列新特性的引入,使得MySQL原生半同步復制更加可靠。
常見架構如下:
通常會和proxy、keepalived等第三方軟體同時使用,即可以用來監控資料庫的 健康 ,又可以執行一系列管理命令。如果主庫發生故障,切換到備庫後仍然可以繼續使用資料庫。
優點:
缺點:
2.2. 半同步復制優化
半同步復制機制是可靠的。如果半同步復制一直是生效的,那麼便可以認為數據是一致的。但是由於網路波動等一些客觀原因,導致半同步復制發生超時而切換為非同步復制,那麼這時便不能保證數據的一致性。所以盡可能的保證半同步復制,便可提高數據的一致性。
該方案同樣使用雙節點架構,但是在原有半同復制的基礎上做了功能上的優化,使半同步復制的機制變得更加可靠。
可參考的優化方案如下:
半同步復制由於發生超時後,復制斷開,當再次建立起復制時,同時建立兩條通道,其中一條半同步復制通道從當前位置開始復制,保證從機知道當前主機執行的進度。另外一條非同步復制通道開始追補從機落後的數據。當非同步復制通道追趕到半同步復制的起始位置時,恢復半同步復制。
搭建兩條半同步復制通道,其中連接文件伺服器的半同步通道正常情況下不啟用,當主從的半同步復制發生網路問題退化後,啟動與文件伺服器的半同步復制通道。當主從半同步復制恢復後,關閉與文件伺服器的半同步復制通道。
優點:
缺點:
2.3. 高可用架構優化
將雙節點資料庫擴展到多節點資料庫,或者多節點資料庫集群。可以根據自己的需要選擇一主兩從、一主多從或者多主多從的集群。
由於半同步復制,存在接收到一個從機的成功應答即認為半同步復製成功的特性,所以多從半同步復制的可靠性要優於單從半同步復制的可靠性。並且多節點同時宕機的幾率也要小於單節點宕機的幾率,所以多節點架構在一定程度上可以認為高可用性是好於雙節點架構。
但是由於資料庫數量較多,所以需要資料庫管理軟體來保證資料庫的可維護性。可以選擇MMM、MHA或者各個版本的proxy等等。常見方案如下:
MHA Manager會定時探測集群中的master節點,當master出現故障時,它可以自動將最新數據的slave提升為新的master,然後將所有其他的slave重新指向新的master,整個故障轉移過程對應用程序完全透明。
MHA Node運行在每台MySQL伺服器上,主要作用是切換時處理二進制日誌,確保切換盡量少丟數據。
MHA也可以擴展到如下的多節點集群:
優點:
缺點:
Zookeeper使用分布式演算法保證集群數據的一致性,使用zookeeper可以有效的保證proxy的高可用性,可以較好的避免網路分區現象的產生。
優點:
缺點:
2.4. 共享存儲
共享存儲實現了資料庫伺服器和存儲設備的解耦,不同資料庫之間的數據同步不再依賴於MySQL的原生復制功能,而是通過磁碟數據同步的手段,來保證數據的一致性。
SAN的概念是允許存儲設備和處理器(伺服器)之間建立直接的高速網路(與LAN相比)連接,通過這種連接實現數據的集中式存儲。常用架構如下:
使用共享存儲時,MySQL伺服器能夠正常掛載文件系統並操作,如果主庫發生宕機,備庫可以掛載相同的文件系統,保證主庫和備庫使用相同的數據。
優點:
缺點:
DRBD是一種基於軟體、基於網路的塊復制存儲解決方案,主要用於對伺服器之間的磁碟、分區、邏輯卷等進行數據鏡像,當用戶將數據寫入本地磁碟時,還會將數據發送到網路中另一台主機的磁碟上,這樣的本地主機(主節點)與遠程主機(備節點)的數據就可以保證實時同步。常用架構如下:
當本地主機出現問題,遠程主機上還保留著一份相同的數據,可以繼續使用,保證了數據的安全。
DRBD是linux內核模塊實現的快級別的同步復制技術,可以與SAN達到相同的共享存儲效果。
優點:
缺點:
2.5. 分布式協議
分布式協議可以很好解決數據一致性問題。比較常見的方案如下:
MySQL cluster是官方集群的部署方案,通過使用NDB存儲引擎實時備份冗餘數據,實現資料庫的高可用性和數據一致性。
優點:
缺點:
基於Galera的MySQL高可用集群, 是多主數據同步的MySQL集群解決方案,使用簡單,沒有單點故障,可用性高。常見架構如下:
優點:
缺點:
Paxos 演算法解決的問題是一個分布式系統如何就某個值(決議)達成一致。這個演算法被認為是同類演算法中最有效的。Paxos與MySQL相結合可以實現在分布式的MySQL數據的強一致性。常見架構如下:
優點:
缺點:
3. 總結
隨著人們對數據一致性的要求不斷的提高,越來越多的方法被嘗試用來解決分布式數據一致性的問題,如MySQL自身的優化、MySQL集群架構的優化、Paxos、Raft、2PC演算法的引入等等。
而使用分布式演算法用來解決MySQL資料庫數據一致性的問題的方法,也越來越被人們所接受,一系列成熟的產品如PhxSQL、MariaDB Galera Cluster、Percona XtraDB Cluster等越來越多的被大規模使用。
隨著官方MySQL Group Replication的GA,使用分布式協議來解決數據一致性問題已經成為了主流的方向。期望越來越多優秀的解決方案被提出,MySQL高可用問題可以被更好的解決。
分布式解決方案 tidb
多主 多備 master lvs做vip 讀寫分離中間件