歡迎轉載,請注明作者、出處。
MySQL-Transefer(下稱Transfer)是一個基于MySQL+patch后得到的主從同步工具。
其主要目的是為了解決原版本的主從同步里,從庫是單線程apply主庫的binlog,導致的延遲。
MySQL5.6以后的版本,從庫即可多現在apply主庫的binlog。
對于數據實時性要求不是特別嚴格的應用,只需要通過廉價的pc server 來擴展Slave 的數量,將讀壓力分散到多臺Slave 的機器上面,即可通過分散單臺數據庫服務器的讀壓力來解決數據庫端的讀性能瓶頸,畢竟在大多數數據庫應用系統中的讀壓力還是要比寫壓力大很多。這在很大程度上解決了目前很多中小型網站的數據庫壓力瓶頸問題,甚至有些大型網站也在使用類似方案解決數據庫瓶頸。
搭建成一個Dual Master 環境,并不是為了讓兩端都提供寫的服務。在正常情況下,我們都只會將其中一端開啟寫服務,另外一端僅僅只是提供讀服務,或者完全不提供任何服務,僅僅只是作為一個備用的機器存在。主要還是為了避免數據的沖突,防止造成數據的不一致性。因為即使在兩邊執行的修改有先后順序,但由于Replication 是異步的實現機制,同樣會導致即使晚做的修改也可能會被早做的修改所覆蓋
通過Dual Master 復制架構,我們不僅能夠避免因為正常的常規維護操作需要的停機所帶來的重新搭建Replication 環境的操作,因為我們任何一端都記錄了自己當前復制到對方的什么位置了,當系統起來之后,就會自動開始從之前的位置重新開始復制,而不需要人為去進行任何干預,大大節省了維護成本。
在MySQL Cluster 主配置文件(在管理節點上面,一般為config.ini)中,有一個非常重要的參數叫NoOfReplicas,這個參數
指定了每一份數據被冗余存儲在不同節點上面的份數,該參數一般至少應該被設置成2
mysql cluster成本更低,oracle
rac更成熟,而且應用案例很多;
mysql cluster雖然設計很好,但是功能實現還不夠完美,目前應用案例并不多,更多的案例是mysql replication
因為MySQL Cluster將數據分布到幾個NDB節點之上,連接查詢時,如果需要連接的表位于不同的NDB節點上,就需要將不同節點上的數據拿到本地再進行連接查詢,這樣對資源消耗比較大。(不過在MySQL Cluster7.3版本中,增加了適應性join查詢,減小了以往join查詢對資源的消耗)
Heartbeat是Linux-HA工程的一個組件。heartbeat最核心的包括兩個部分:心跳監測和資源接管。在指定的時間內未收到對方發送的報文,那么就認為對方失效,這時需啟動資源接管模塊來接管運 行在對方主機上的資源或者服務。
比如用shell腳本監測到master的mysql不可用就將主上的heartbeat停掉,這樣就會切換到backup中去
DRBD是通過網絡來實現塊設備的數據鏡像同步的一款開源Cluster軟件。
Lvs是一個虛擬的服務器集群系統,可以實現LINUX平臺下的簡單負載均衡。
keepalived是一個類似于layer3, 4 & 5交換機制的軟件,主要用于 主機與備機 的故障轉移。
高可用web架構: LVS+keepalived+nginx+apache+php+eaccelerator,也常與MySQL數據庫一起使用
MMM即Master-Master Replication Manager for MySQL(mysql主主復制管理器)是一套靈活的腳本程序?用來對mysql replication進行監控和故障遷移?并能管理mysql Master-Master復制的配置 。附帶的工具套件可以實現多個slaves的read負載均衡
HAProxy提供高可用性、負載均衡,比較適合負載特大的web站點。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。