MySQL Cluster

来源:http://www.cnblogs.com/sjtu-ly-2017/archive/2017/07/27/7244600.html
-Advertisement-
Play Games

本文介紹了MySQL Cluster的概念和架構,並通過幾個實例詳細討論了Cluster的配置方法,啟動關閉,常用維護方法的概念。 ...


Cluster簡單來說,就是一組“節點”,節點是一個邏輯概念,一臺電腦可以代表一個節點,也可以代表多個節點,這些節點的功能有所不同,有的節點是用來存放數據的(數據節點),存放數據表結構的(sql節點),有的用來對其他節點進行管理(管理節點),這些節點組合在一起,可以為應用提供高可用、高性能和可縮放的Cluster數據管理。

MySQL使用NDB存儲引擎來對數據節點進行存儲。理論上,MySQL Cluster通過數據的分散式存儲和可擴展的系統架構,滿足更大規模的應用,而且通過冗餘策略,大大提高了系統的可靠性和數據的有效性。

1.MySQL Cluster架構

MySQL Cluster按照節點類型分為3部分

管理節點

用來對其他的節點進行管理,實際操作中,通過一個叫做config.ini的配置文件進行維護而起到管理作用,該文件可以用來配置有多少需要維護的副本、需要在每個數據節點上為數據和索引分配多少記憶體、數據節點的位置,在每個數據節點上保存數據的磁碟位置,sql節點的位置等信息。管理節點只能有一個,配置要求不高。

sql節點

可以理解為和應用和數據節點之間的一個橋梁,應用不能直接訪問數據節點,只能先訪問sql節點,然後sql節點再去訪問數據節點返回數據,cluster中可以有多個sql節點,通常來說,sql節點越多分配到每個的負載就越小。

數據節點

用來存放cluster中的數據,可以有多個數據節點,每個數據節點可以有多個鏡像節點,任何一個放生故障,只要鏡像節點正常,cluster就能正常運行。

MySQL Cluster的訪問過程:

前臺應用一定的負載均衡演算法將對資料庫的訪問分散到不同的sql節點上,然後sql節點對數據節點進行數據訪問並從數據節點返回結果,最後sql節點將受到的結果返回給前臺應用。而管理節點並不參與訪問過程,它只用來對sql節點和數據節點進行配置管理。

 

1.1 MySQL Cluster配置

管理節點配置,示例說明

1.在伺服器192.168.7.187的/home/zzx2/下創建目錄mysql-cluster文件夾,並且創建配置文件config.ini

mkdir /home/zzx2/mysql-cluster
cd /home/zzx2/mysql-cluster
touch config.ini

其中config.ini的配置如下

[NDBD DEFAULT]
NoOfReplicas=1                                #每個數據節點的鏡像
DataMemory=500M                          #每個數據節點中給數據分配的記憶體
IndexMemory=300M                         #每個數據節點給索引分配的記憶體
[TCP DEFAULT]
portnumber=2202                          #數據節點的預設連接埠
[NDB_MGMD]
id=1
hostname=192.168.7.187
datadir=/home/zzx2/mysql-cluster
[NDBD]
id=2
hostname=192.168.7.187
datadir=/home/zzx2/mysql/data
[NDBD]
id=3
hostname=192.168.7.55
datadir=/home/zzx2/mysql/data

[MYSQLD]
hostname=192.168.7.187
[MYSQLD]
hostname=192.168.7.55
[MYSQLD]# Options for mysqld process;

 

[NDB_MGMD]  表示管理節點的配置,只能有一個

[NDBD DEFAULT]  表示每個數據節點的預設配置,只有一個

[NDBD]  每個數據節點的配置,有多個

[MYSQLD]  表示SQL的配置,有多個,分別寫上不同的SQL的IP地址

 

SQL節點的配置

只需要在MySQL的配置文件,my.cnf中增加

#Options for mysqld process:
[MYSQLD]
ndbcluster                                # 運行NDB的存儲引擎
ndb-connectstring=192.168.7.187           # 定位管理節點
#Options for ndbd procsess:
[MYSQL_CLUSTER]
ndb-connectstring=192.168.7.187

 

 

2. 使用Cluster

2.1.Cluster的啟動

節點的啟動順序:管理節點--數據節點--SQL節點

ndb_mgmd 是cluster的管理伺服器

ndbd進程:是使用NDB儲存引擎處理表中數據的進程,通過該進程,存儲節點能夠實現分散式事務管理,節點恢復,線上備份。

ndb_mgm工具: 在節點全部啟動成功後,可以用show命令來查看集群的狀態。

 

2.2.Cluster的測試

NDB存儲引擎的測試

Cluster只能使用NDB存儲引擎表,

在任意一個SQL節點的test庫中創建測試表,設置存儲引擎為NDB

在另外一個SQL節點中查詢測試表

將測試表的存儲引擎改為MyISAM,在此插入

再次查詢發現無法查詢

 

單點故障測試

任何一種節點,都存在單點故障的可能性,在Cluster的設置中,應該儘量對每一類節點設置冗餘。對於管理節點,一般不需要特殊配置,只需要將管理工具和配置文件放在多台主機上。

SQL節點故障並不會引起數據查詢故障

數據節點的故障的影響取決於數據的存儲是相互鏡像還是一份數據分成幾塊存儲。

 

2.3.Cluster的關閉

關閉命令:ndb_mgm -e shutdown

註意的是:SQL節點關閉後,MySQL服務並不會停止。

 

3. 維護Cluster

3.1.數據備份

方法1:使用mysqldump工具,

方法2:cluster的物理備份方法,啟動管理伺服器(ndb_mgm),執行“start backup”,

備份的數據保存在每個數據節點下,

對於大數據量的備份,MySQL cluster提供了幾個備份的參數可供調整:

backdatabuffersize: 將數據寫入磁碟之前用於對數據進行緩衝處理的記憶體量。

backlogbuffersize: 將日誌記錄寫入磁碟前對其進行緩衝處理的記憶體量

backupmemory: 將資料庫節點只為備份分配的總記憶體。

 

3.2.數據恢復

對於用“start backup”進行備份的cluster,必須使用ndb_restore工具進行數據恢復,shell命令如下:

ndb_restore -b 3 -n 2 -c host=192.168.7.187:1186 -m -r /home/zzx2/mysql/data/backup/backup-3

 

命令行各參數的意義:

參數 說明
-b 備份id
-n 節點id
-m 恢復表定義
-r 恢復路徑
-c cluster管理器連接串

 

 

 

 

 

 

3.3.日誌管理

MySQL提供了兩種日誌,分別是集群日誌和節點日誌,前者提供了所有的Cluster節點生成的日誌,後者僅僅記錄了數據節點的本地事件。

可以使用ndb_mgm客戶端工具打開或者關閉日誌。

在shell中執行ndb_mgm命令;執行clusterlog info命令查看當前日誌狀態;當前日誌是打開的,用clusterlog off關閉,在此查看用哪個clusterlog on打開。

Cluster的日誌類型有很多,可以按照下麵的類別進行過濾:

1.Category(類別),可以是以下值:startup,shutdown,checkpoint,noderestart,connection,error等

2.Prior(優先順序),有1~15表示,1最重要,每種category都有一個預設的優先順序閾值,達到閾值會被記錄

3.Severity Level(嚴重級別),可以使以下值之一,alert,critical,error,warning,info或debug

過濾的方法可以使用ndb_mgm工具完成。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、NSTimer使用時有哪些需要註意點? 1、必須保證有一個活躍的RunLoop。 NSTimer是基於RunLoop的一種定時機制,這涉及到預設主線程和子線程RunLoop的知識延伸;同時還有頁面滑動時防止定時器失效的知識點: 解決方案:[[NSRunLoop currentRunLoop] a ...
  • 目錄 · 概況 · 原理 · MapReduce編程模型 · MapReduce過程 · 容錯機制 · API · 概況 · WordCount示例 · Writable介面 · Mapper類 · Reducer類 · Partitioner抽象類 · WritableComparator介面 · ...
  • SQL Server 中數據存儲的基本單位是頁。為資料庫中的數據文件(.mdf 或 .ndf)分配的磁碟空間可以從邏輯上劃分成頁(從 0 到 n 連續編號)。磁碟 I/O 操作在頁級執行。也就是說,SQL Server 讀取或寫入所有數據頁。 區是八個物理上連續的頁的集合,用來有效地管理頁。所有頁都 ...
  • 目錄 · 概況 · 原理 · 資源調度器分類 · YARN架構 · ResourceManager · NodeManager · ApplicationMaster · Container · YARN工作流程 · YARN資源調度 · 操作 · Overview · User Commands ...
  • 目錄 · 概況 · 原理 · HDFS 架構 · 塊 · NameNode · SecondaryNameNode · fsimage與edits合併 · DataNode · 數據讀寫 · 容錯機制 · 數據完整性 · NameNode HA · NameNode Federation · HDF ...
  • 1. mysql是一種常用的資料庫管理軟體,優點有:免費,開源,跨平臺,本文只是介紹一下MySQL的簡單操作 2.資料庫的基本結構 可以把資料庫理解成一個文件夾,資料庫中的數據存放的單位是表,可以理解為excel表格,表格的表頭稱為欄位,表中的每一條數據稱為記錄 3.MySQL安裝 1.從官網下載  ...
  • SQLite doesn't support high concurrency. In case of a lot of concurrent access from multi-process or multi-thread, calling a SQLite r/w function is pr ...
  • 一、視圖的定義 視圖也稱為虛表,視圖本身不占用物理存儲空間,視圖存放於數據字典中,簡單的來說視圖可以看做是sql語句的集合。視圖從資料庫中的表產生,這些表稱為視圖的基表,一個視圖可以從另一個視圖中產生。 視圖看上去非常象資料庫的物理表,對它的操作同任何其它的表一樣。當通過視圖修改數據時,實際上是在改 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...