本文目錄一覽:
- 1、五大常見的MySQL高可用方案(最全)
- 2、如何新建立一個mysql實例?
- 3、北大青鳥設計培訓:mysql服務器架構可擴展性特點?
- 4、怎樣獲取 mysql數據庫服務器地址
- 5、MySQL安裝錯誤
- 6、mysql怎樣創建數據庫服務器
五大常見的MySQL高可用方案(最全)
1. 概述
我們在考慮MySQL數據庫的高可用的架構時,主要要考慮如下幾方面:
如果數據庫發生了宕機或者意外中斷等故障,能儘快恢複數據庫的可用性,儘可能的減少停機時間,保證業務不會因為數據庫的故障而中斷。
用作備份、只讀副本等功能的非主節點的數據應該和主節點的數據實時或者最終保持一致。
當業務發生數據庫切換時,切換前後的數據庫內容應當一致,不會因為數據缺失或者數據不一致而影響業務。
關於對高可用的分級在這裡我們不做詳細的討論,這裡只討論常用高可用方案的優缺點以及高可用方案的選型。
2. 高可用方案
2.1. 主從或主主半同步複製
使用雙節點數據庫,搭建單向或者雙向的半同步複製。在5.7以後的版本中,由於lossless replication、logical多線程複製等一些列新特性的引入,使得MySQL原生半同步複製更加可靠。
常見架構如下:
通常會和proxy、keepalived等第三方軟件同時使用,即可以用來監控數據庫的 健康 ,又可以執行一系列管理命令。如果主庫發生故障,切換到備庫後仍然可以繼續使用數據庫。
優點:
架構比較簡單,使用原生半同步複製作為數據同步的依據;
雙節點,沒有主機宕機後的選主問題,直接切換即可;
雙節點,需求資源少,部署簡單;
缺點:
完全依賴於半同步複製,如果半同步複製退化為異步複製,數據一致性無法得到保證;
需要額外考慮haproxy、keepalived的高可用機制。
2.2. 半同步複製優化
半同步複製機制是可靠的。如果半同步複製一直是生效的,那麼便可以認為數據是一致的。但是由於網絡波動等一些客觀原因,導致半同步複製發生超時而切換為異步複製,那麼這時便不能保證數據的一致性。所以儘可能的保證半同步複製,便可提高數據的一致性。
該方案同樣使用雙節點架構,但是在原有半同複製的基礎上做了功能上的優化,使半同步複製的機制變得更加可靠。
可參考的優化方案如下:
2.2.1. 雙通道複製
半同步複製由於發生超時後,複製斷開,當再次建立起複制時,同時建立兩條通道,其中一條半同步複製通道從當前位置開始複製,保證從機知道當前主機執行的進度。另外一條異步複製通道開始追補從機落後的數據。當異步複製通道追趕到半同步複製的起始位置時,恢復半同步複製。
2.2.2. binlog文件服務器
搭建兩條半同步複製通道,其中連接文件服務器的半同步通道正常情況下不啟用,當主從的半同步複製發生網絡問題退化後,啟動與文件服務器的半同步複製通道。當主從半同步複製恢復後,關閉與文件服務器的半同步複製通道。
優點:
雙節點,需求資源少,部署簡單;
架構簡單,沒有選主的問題,直接切換即可;
相比於原生複製,優化後的半同步複製更能保證數據的一致性。
缺點:
需要修改內核源碼或者使用mysql通信協議。需要對源碼有一定的了解,並能做一定程度的二次開發。
依舊依賴於半同步複製,沒有從根本上解決數據一致性問題。
2.3. 高可用架構優化
將雙節點數據庫擴展到多節點數據庫,或者多節點數據庫集群。可以根據自己的需要選擇一主兩從、一主多從或者多主多從的集群。
由於半同步複製,存在接收到一個從機的成功應答即認為半同步複製成功的特性,所以多從半同步複製的可靠性要優於單從半同步複製的可靠性。並且多節點同時宕機的幾率也要小於單節點宕機的幾率,所以多節點架構在一定程度上可以認為高可用性是好於雙節點架構。
但是由於數據庫數量較多,所以需要數據庫管理軟件來保證數據庫的可維護性。可以選擇MMM、MHA或者各個版本的proxy等等。常見方案如下:
2.3.1. MHA+多節點集群
MHA Manager會定時探測集群中的master節點,當master出現故障時,它可以自動將最新數據的slave提升為新的master,然後將所有其他的slave重新指向新的master,整個故障轉移過程對應用程序完全透明。
MHA Node運行在每台MySQL服務器上,主要作用是切換時處理二進制日誌,確保切換盡量少丟數據。
MHA也可以擴展到如下的多節點集群:
優點:
可以進行故障的自動檢測和轉移;
可擴展性較好,可以根據需要擴展MySQL的節點數量和結構;
相比於雙節點的MySQL複製,三節點/多節點的MySQL發生不可用的概率更低
缺點:
至少需要三節點,相對於雙節點需要更多的資源;
邏輯較為複雜,發生故障後排查問題,定位問題更加困難;
數據一致性仍然靠原生半同步複製保證,仍然存在數據不一致的風險;
可能因為網絡分區發生腦裂現象;
2.3.2. zookeeper+proxy
Zookeeper使用分佈式算法保證集群數據的一致性,使用zookeeper可以有效的保證proxy的高可用性,可以較好的避免網絡分區現象的產生。
優點:
較好的保證了整個系統的高可用性,包括proxy、MySQL;
擴展性較好,可以擴展為大規模集群;
缺點:
數據一致性仍然依賴於原生的mysql半同步複製;
引入zk,整個系統的邏輯變得更加複雜;
2.4. 共享存儲
共享存儲實現了數據庫服務器和存儲設備的解耦,不同數據庫之間的數據同步不再依賴於MySQL的原生複製功能,而是通過磁盤數據同步的手段,來保證數據的一致性。
2.4.1. SAN共享儲存
SAN的概念是允許存儲設備和處理器(服務器)之間建立直接的高速網絡(與LAN相比)連接,通過這種連接實現數據的集中式存儲。常用架構如下:
使用共享存儲時,MySQL服務器能夠正常掛載文件系統並操作,如果主庫發生宕機,備庫可以掛載相同的文件系統,保證主庫和備庫使用相同的數據。
優點:
兩節點即可,部署簡單,切換邏輯簡單;
很好的保證數據的強一致性;
不會因為MySQL的邏輯錯誤發生數據不一致的情況;
缺點:
需要考慮共享存儲的高可用;
價格昂貴;
2.4.2. DRBD磁盤複製
DRBD是一種基於軟件、基於網絡的塊複製存儲解決方案,主要用於對服務器之間的磁盤、分區、邏輯卷等進行數據鏡像,當用戶將數據寫入本地磁盤時,還會將數據發送到網絡中另一台主機的磁盤上,這樣的本地主機(主節點)與遠程主機(備節點)的數據就可以保證實時同步。常用架構如下:
當本地主機出現問題,遠程主機上還保留着一份相同的數據,可以繼續使用,保證了數據的安全。
DRBD是linux內核模塊實現的快級別的同步複製技術,可以與SAN達到相同的共享存儲效果。
優點:
兩節點即可,部署簡單,切換邏輯簡單;
相比於SAN儲存網絡,價格低廉;
保證數據的強一致性;
缺點:
對io性能影響較大;
從庫不提供讀操作;
2.5. 分佈式協議
分佈式協議可以很好解決數據一致性問題。比較常見的方案如下:
2.5.1. MySQL cluster
MySQL cluster是官方集群的部署方案,通過使用NDB存儲引擎實時備份冗餘數據,實現數據庫的高可用性和數據一致性。
優點:
全部使用官方組件,不依賴於第三方軟件;
可以實現數據的強一致性;
缺點:
國內使用的較少;
配置較複雜,需要使用NDB儲存引擎,與MySQL常規引擎存在一定差異;
至少三節點;
2.5.2. Galera
基於Galera的MySQL高可用集群, 是多主數據同步的MySQL集群解決方案,使用簡單,沒有單點故障,可用性高。常見架構如下:
優點:
多主寫入,無延遲複製,能保證數據強一致性;
有成熟的社區,有互聯網公司在大規模的使用;
自動故障轉移,自動添加、剔除節點;
缺點:
需要為原生MySQL節點打wsrep補丁
只支持innodb儲存引擎
至少三節點;
2.5.3. POAXS
Paxos 算法解決的問題是一個分佈式系統如何就某個值(決議)達成一致。這個算法被認為是同類算法中最有效的。Paxos與MySQL相結合可以實現在分佈式的MySQL數據的強一致性。常見架構如下:
優點:
多主寫入,無延遲複製,能保證數據強一致性;
有成熟理論基礎;
自動故障轉移,自動添加、剔除節點;
缺點:
只支持innodb儲存引擎
至少三節點;
3. 總結
隨着人們對數據一致性的要求不斷的提高,越來越多的方法被嘗試用來解決分佈式數據一致性的問題,如MySQL自身的優化、MySQL集群架構的優化、Paxos、Raft、2PC算法的引入等等。
而使用分佈式算法用來解決MySQL數據庫數據一致性的問題的方法,也越來越被人們所接受,一系列成熟的產品如PhxSQL、MariaDB Galera Cluster、Percona XtraDB Cluster等越來越多的被大規模使用。
隨着官方MySQL Group Replication的GA,使用分佈式協議來解決數據一致性問題已經成為了主流的方向。期望越來越多優秀的解決方案被提出,MySQL高可用問題可以被更好的解決。
如何新建立一個mysql實例?
在原有實例下創建副本應該可以達到效果。
大多情況下,需要可靠而有效地克隆 MySQL 實例數據。這包括 MySQL 高可用的解決方案,其中需要在將實例加入組複製集群之前配置實例,或者在經典複製模型中將其添加為 Slave。
為複製拓撲而創建 MySQL 副本一直很麻煩。涉及的步驟很多,首先要備份 MySQL 服務器,通過網絡將備份傳輸到我們想要添加到複製集的新 MySQL 節點,然後在該節點上恢復備份並手動啟動 MySQL 服務器。為了高可用,最好還要將其正確設置備份的 GTID,並啟動並運行群集。涉及的手動步驟數量過多不利於高可用。CLONE 插件解決了這個問題並簡化了副本配置。使您可以使用 MySQL 客戶端(和 SQL 命令)來配置新節點並在發生時觀察克隆進度。無需手動處理多個步驟並維護自己的基礎架構來配置新的 MySQL 節點。
MySQL 8.0.17 引入了 CLONE SQL 語句,使當前的 MySQL 服務器成為另一個運行在不同節點的 MySQL 服務器的「克隆」。我們將執行 clone 語句的服務器實例稱為「受體」。克隆的源服務器實例稱為「供體」。供體克隆以一致的快照存儲在 InnoDB 存儲引擎中的所有數據和元數據,以替換受體中的數據。
成功執行 CLONE SQL 語句後,將自動重新啟動受體服務器。重新啟動涉及恢復克隆的快照數據,就像用老方法複製數據一樣。恢復完成後,受體就是供體的克隆版,隨時可以使用!
這裡有一些關於克隆過程的重要注意事項。
不克隆 MySQL 配置參數,並且受體保留所有原始配置參數,如克隆之前。這樣做是因為許多配置可能特定於節點(例如 PORT),因此保留它們似乎是一個不錯的選擇。另一方面,一些存儲配置確實需要在供體和受體之間匹配(例如 innodbpagesize),如果這樣的配置參數不匹配,CLONE 將報告錯誤。
CLONE 插件不會克隆二進制日誌。
CLONE 插件目前僅支持 InnoDB 存儲引擎。在其他存儲引擎(如 MyISAM 和 CSV)中創建的表將被克隆為空表。克隆基礎架構的設計允許克隆 MySQL 支持的任何存儲引擎。但是,只有 InnoDB 序列化和反序列化方法已經實現並經過測試。
克隆會阻止供體中的所有並發 DDL。
需要注意的事實是受體放棄所有數據以及任何二進制日誌,以便成為供體實例的克隆。在執行 CLONE 之前,如果認為有必要,需要備份當前受體數據。
北大青鳥設計培訓:mysql服務器架構可擴展性特點?
服務器架構隨着應用場景的不同採用的架構方式也是不一樣的,而今天我們就通過案例分析來簡單學習一下,在服務器架構中的可擴展性都有哪些特點。
MySQL的可擴展性架構的可擴展性往往和並發是息息相關,沒有並發的增長,也就沒有必要做高可擴展性的架構,這裡對可擴展性進行簡單介紹一下,常用的擴展手段有以下兩種Scale-up:縱向擴展,通過替換為更好的機器和資源來實現伸縮,提升服務能力Scale-out:橫向擴展,通過加節點(機器)來實現伸縮,提升服務能力對於互聯網的高並發應用來說,無疑Scaleout才是出路,通過縱向的買更的機器一直是我們所避諱的問題,也不是長久之計,在scaleout的理論下,可擴展性的理想狀態是什麼?可擴展性的理想狀態一個服務,當面臨更高的並發的時候,能夠通過簡單增加機器來提升服務支撐的並發度,且增加機器過程中對線上服務無影響(nodowntime),這就是可擴展性的理想狀態!MySQL架構的演變MySQL簡單網站架構(V1.0)一個簡單的小型網站或者應用背後的架構可以非常簡單,數據存儲只需要一個mysqlinstance就能滿足數據讀取和寫入需求(這裡忽略掉了數據備份的實例),處於這個時間段的網站,一般會把所有的信息存到一個databaseinstance裏面。
在這樣的架構下,電腦培訓來看看數據存儲的瓶頸是什麼?單實例單業務,依然存在V1.0所述瓶頸,遇到瓶頸時可以考慮往本文更高V版本升級,若是讀請求導致達到性能瓶頸可以考慮往V3.0升級,其他瓶頸考慮往V4.0升級
怎樣獲取 mysql數據庫服務器地址
你要用什麼遠程管理?一般mysql都是用phpmyadmin管理的,也就是一個PHP程序,你在LOCALHOST上裝上PHPMYADMIN就可以管理了啊,遠程在線式的,MYSQL不像SQL SERVER,通過本地程序化管理.
MySQL安裝錯誤
重新安裝個試試
點擊下載:官方最新版mysql
MySQL的3個主要組成部分
1、負載均衡節點(mysql)
負載均衡節點(也叫SQL節點)是用來訪問集群數據的。相關的軟件,就是我們平時所使用的MySQL數據庫軟件;也就是由/etc/init.d/mysql腳本來管理的那個服務。
2、存儲節點(ndbd)
數據存儲節點是用來保存集群數據的,其服務的啟停是由腳本/etc/init.d/mysql-ndb來管理的。
3、管理節點(ndbd-mgm)
管理節點是用來管理集群內其他節點的,比如提供配置信息、啟動或停止節點、執行備份等。其服務的啟停是由/etc/init.d/mysql-ndb-mgm腳本來管理的。由於這類節點是管理者,所以管理節點必須首先啟動,然後其他兩類節點再啟動。
mysql cluster的優缺點
一、優點:
1、99.999 %的高可用性
2、快速的自動失效切換
3、靈活的分佈式體系結構,沒有單點故障
4、高吞吐量和低延遲
5、可擴展性強,支持在線擴容
二、缺點:
1、存在很多限制,比如:不支持外鍵,數據行不能超過8K(不包括BLOB和text中的數據)
2、部署、管理、配置很複雜
3、佔用磁盤空間大,內存大
4、備份和恢復不方便
5、複雜的sql查詢性能一般
主要結構
1、管理(MGM)節點:
這類節點的作用是管理MySQLCluster內的其他節點,如提供配 置數據、啟動並停止節點、運行備份等。由於這類節點負責管理其他節點的配置,應在啟動其他節點之前首先啟 動這類節點。MGM節點是用命令「ndb_mgmd」啟動的。對硬件沒什麼要求,差一點的機器完全能夠勝任。默認端口1186。
2、數據節點:
這類節點用於保存Cluster的數據。數據節點的數目與副本的數目相關,是片段的倍數。例如,對於兩個副本,每個副本有兩個片段,那麼就有4個數據節點。不過沒有必要設置多個副本。數據節點是用命令「ndbd」啟動的。可以選擇大內存,cpu也相對來講不錯的,尤其是以後ndbmtd對多核Cpu的支持。默認端口2202
3、SQL節點:
這是用來訪問Cluster數據的節點。對於MySQLCluster,客戶端節點是使用NDBCluster存儲引擎的傳統MySQL服務器。通常,SQL節點是使用命令「mysqld–ndbcluster」啟動的,或將「ndbcluster」添加到「my.cnf」後使用「mysqld」啟動。對cpu要求較高,選擇多核,高頻CPU較好。
新增功能
1、更強內存性能和可擴展性:
根據SysBench標準,MySQL Cluster 7.4在只讀工作負載上的性能比MySQL Cluster 7.3提高了近50%,讀寫操作性能也提高了40%。性能改進可通過SQL或任何由MySQL Cluster支持的本地NoSQL 應用程序接口得到實現,包括Java, C++,HTTP, Memcached和JavaScript/node.js。此外,MySQL Cluster 7.4還創造了新紀錄,即通過32個數據節點實現每秒2億條NoSQL查詢,以及通過 16個數據節點每秒查詢近250萬SQL語句
2、改進的工作負載效率分析:
現在,用戶可以在MySQL 集群上使用相同的記憶優化表高效運行涉及複雜分析和隨機搜索的應用負載,這為OLTP工作負載提供了亞毫秒級別的超低延遲和高水平的並發性能。這些內存表可以和基於磁盤的表共同使用
3、新的跨地域冗餘功能實現跨數據中心的高可用性:
最新版本的MySQL Cluster7.4提供衝突性事務傳回功能,並能在跨地域集群之間實現靈活可用、即時更新的複製功能,使得應用可以自由向任意站點發送查詢或寫入命令,同時完全不影響一致性
4、高級管理功能:
MySQL Cluster為內部部署和基於雲的部署提供了以下改進:
新的分佈式內存使用和數據庫操作報告,提高管理效率;
其他性能調優選項;
更快的網絡維護操作,包括軟件升級速度提高多達5倍
mysql怎樣創建數據庫服務器
需要用到集群,負載均衡及mysql
複製(replication);
下面提供一個系統模型你可以參考一下:
集群的結構為一個主MySQL服務器(Master)服務器與多個從屬MySQL服務器(Slave)建立複製(replication)連接,主服務器與從屬服務器實現一定程度上的數據同步,多個從屬服務器存儲相同的數據副本,實現數據冗餘,提供容錯功能。部署開發應用系統時,對數據庫操作代碼進行優化,將寫操作(如UPDATE、INSERT)定向到主服務器,把大量的查詢操作(SELECT)定向到從屬服務器,實現集群的負載均衡功能。如果主服務器發生故障,從屬服務器將轉換角色成為主服務器,使應用系統為終端用戶提供不間斷的網絡服務;主服務器恢復運行後,將其轉換為從屬服務器,存儲數據庫副本,繼續對終端用戶提供數據查詢檢索服務。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/248461.html