mysql集群和主從的區別
mysql中群集和主從的區別:主從之間是透過mysql的replication來保證資料的一致性;相對mysql群集的資料同步方式來講是異步的。因為異步,所以主從之間複製資料可能會有一點微小的延時,就會出現不一致。
推薦課程:MySQL教學。
主從之間是透過mysql的replication來保證資料的一致性。相對mysql cluster的資料同步方式來講是異步的。
叢集是使用PXC (Percona XtraDB Cluster),多節點的資料即時同步(讀寫)
關於主從
#主從可以保證讀寫分離,也就是寫操作在master,讀操作在slave,主從模式也有多個,這裡只說一主多從。
例如有兩個業務模組,一個不斷寫入訂單記錄等,另一個模組則是產生報表,這時如果不採用讀寫分離,讀寫操作碰一起,可能會發生衝突,影響效能,如果讀寫分離,則不用考慮讀寫同一張表從而影響效能,而且多從可以很好的分攤伺服器的壓力,降低單台機器的壓力。
主從之間是透過mysql的replication來保證資料的一致性,相對群集的資料同步方式來講是異步的,因為非同步,所以主從之間複製資料可能會有一點微小的延時,就會出現不一致。
Replication:主節點要開啟binlog,設定一個唯一的server-id(區域網路內唯一),從節點設定server-id,binlog記錄了master上的所有操作,會被複製到從節點的relaylog並在從節點上回放。
但是主從也有缺點,一個是不滿足高可用,master宕機,需要手動切換才行,業務會中斷不允許的,
還有就是數據不一致,而不一致可能導致的原因有很多,以下是常見的幾點
主庫或從庫意外宕機,宕機可能會造成binlog或relaylog檔案出現損壞,導致主從不一致(本博有篇文章,當機後修復)
主函式庫執行變更前有執行set sql_log_bin=0,會使主函式庫不記錄binlog,從函式庫也無法變更這部分資料
主庫binlog格式為Statement,同步到從庫執行後可能造成主從不一致
從節點未設定唯讀,誤操作寫入資料
主從實例版本不一致,特別是高版本是主,低版本為從的情況下,主資料庫上面支援的功能,從資料庫上面可能不支援該功能
MySql的BUG
#那麼在使用時就需要注意以下這些事項
-
主庫binlog採用ROW格式
主從實例資料庫版本保持一致
主庫做好帳號權限把控,不可以執行set sql_log_bin=0
從函式庫開啟只讀,不允許人為寫入
定期進行主從一致性檢定
關於叢集
叢集最大的優點就是資料即時同步,高可用,每個節點的資料都是同步一致的,不像主從,有時會出現資料不一致,而高可用,任何一個節點宕機都不會影響業務。
但是缺點就是性能,寫的性能,每次寫操作,都會在所有節點之間進行同步,有失有得,損失了一點性能,保證了高可用和數據一致。
在叢集中,管理節點有一個,SQL節點和資料節點都是多個, 資料節點之間採用的是同步複製來確保各節點之間的資料一致性,一般透過兩階段提交協定來實現,一般工作過程如下
Master執行提交語句時,事務被傳送到slave,slave開始準備事務的提交
每個slave都要準備事務,然後向master發送OK(或ABORT)訊息,表明事務已經準備好(或無法準備該事務)
Master等待所有Slave發送OK或ABORT訊息
如果Master收到所有Slave的OK訊息,它就會向所有Slave發送提交訊息,告訴Slave提交該交易;
如果Master收到來自任何一個Slave的ABORT訊息,它就向所有Slave發送ABORT訊息,告訴Slave去中止事務。
每個Slave等待來自Master的OK或ABORT訊息
如果Slave收到提交請求,它們就會提交事務,並向Master發送交易已提交的確認;
如果Slave收到取消請求,它們就會撤銷所有改變並釋放所佔有的資源,從而中止事務,然後向Masterv送事務已中止的確認。
當Master收到來自所有Slave的確認後,就會報告該交易被提交(或中止),然後繼續進行下一個事務處理
由於同步複製一共需要4次訊息傳遞,所以mysql cluster的資料更新速度比單機mysql慢。於是mysql cluster要求運作在千兆以上的區域網路內,節點可以採用雙網路卡,節點群組之間採用直連方式以確保資料更新速度。
以上是mysql集群和主從的區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

MySQL適合初學者使用,因為它安裝簡單、功能強大且易於管理數據。 1.安裝和配置簡單,適用於多種操作系統。 2.支持基本操作如創建數據庫和表、插入、查詢、更新和刪除數據。 3.提供高級功能如JOIN操作和子查詢。 4.可以通過索引、查詢優化和分錶分區來提升性能。 5.支持備份、恢復和安全措施,確保數據的安全和一致性。

可以通過以下步驟打開 phpMyAdmin:1. 登錄網站控制面板;2. 找到並點擊 phpMyAdmin 圖標;3. 輸入 MySQL 憑據;4. 點擊 "登錄"。

MySQL是一個開源的關係型數據庫管理系統。 1)創建數據庫和表:使用CREATEDATABASE和CREATETABLE命令。 2)基本操作:INSERT、UPDATE、DELETE和SELECT。 3)高級操作:JOIN、子查詢和事務處理。 4)調試技巧:檢查語法、數據類型和權限。 5)優化建議:使用索引、避免SELECT*和使用事務。

MySQL和SQL是開發者必備技能。 1.MySQL是開源的關係型數據庫管理系統,SQL是用於管理和操作數據庫的標準語言。 2.MySQL通過高效的數據存儲和檢索功能支持多種存儲引擎,SQL通過簡單語句完成複雜數據操作。 3.使用示例包括基本查詢和高級查詢,如按條件過濾和排序。 4.常見錯誤包括語法錯誤和性能問題,可通過檢查SQL語句和使用EXPLAIN命令優化。 5.性能優化技巧包括使用索引、避免全表掃描、優化JOIN操作和提升代碼可讀性。

使用 Navicat Premium 創建數據庫:連接到數據庫服務器並輸入連接參數。右鍵單擊服務器並選擇“創建數據庫”。輸入新數據庫的名稱和指定字符集和排序規則。連接到新數據庫並在“對象瀏覽器”中創建表。右鍵單擊表並選擇“插入數據”來插入數據。

可在 Navicat 中通過以下步驟新建 MySQL 連接:打開應用程序並選擇“新建連接”(Ctrl N)。選擇“MySQL”作為連接類型。輸入主機名/IP 地址、端口、用戶名和密碼。 (可選)配置高級選項。保存連接並輸入連接名稱。

在 Navicat 中執行 SQL 的步驟:連接到數據庫。創建 SQL 編輯器窗口。編寫 SQL 查詢或腳本。單擊“運行”按鈕執行查詢或腳本。查看結果(如果執行查詢的話)。

Navicat 連接數據庫時常見的錯誤及解決方案:用戶名或密碼錯誤(Error 1045)防火牆阻止連接(Error 2003)連接超時(Error 10060)無法使用套接字連接(Error 1042)SSL 連接錯誤(Error 10055)連接嘗試過多導致主機被阻止(Error 1129)數據庫不存在(Error 1049)沒有權限連接到數據庫(Error 1000)
