MySQL叢集 NDB 7.5介紹
MySQL Cluster是在shared-nothing系統中開啟in-memory資料庫叢集功能的一項技術。shared-nothing架構可以使系統以廉價的硬體工作,對硬體和軟體的需求很小。
MySQL叢集被設計成沒有任何單點故障。在一套shared-nothing系統中,每個節點都有自己的記憶體和硬碟,像共享網路、網路問卷系統和SAN儲存這些共享儲存機制不被MySQL叢集推薦和支援。
MySQL叢集透過一個稱為NDB的記憶體叢集儲存引擎,和標準的MySQL伺服器整合在一起。NDB是Network DataBase的縮寫。MySQL叢集是MySQL伺服器和NDB儲存引擎的結合。
一套MySQL叢集包含一系列的電腦主機,每臺主機執行一個或多個程式;這些程式被稱為節點,包含MySQL伺服器(用於訪問NDB的資料)、資料節點(用於儲存資料)、一個或多個管理伺服器、其他定製的資料訪問程式。這些節點的關係圖如下:
叢集中的節點可以被停止或重啟,也可以再次加入叢集中。
NDBCLUSTER(也稱為NDB)是一個提供高可用性和資料永久化的記憶體儲存引擎。
NDBCLUSTER可以透過配置一些引數實現故障切換和負載均衡。需要注意的是,在MySQL叢集中,一個節點是指一臺主機,而是一個程式;可以在一臺主機上執行多個節點。
在一套MySQL叢集配置中,至少有三個節點:
管理節點:這個節點的角色是管理叢集中的其他節點,提供配置資料,啟動停止節點和執行備份功能。因為這個節點管理其他節點的配置資訊,在叢集中應該首先啟動這個節點。透過ndb_mgmd命令啟動MGM節點。
資料節點:這種型別的節點儲存叢集的資料。MySQL叢集中的表通常被儲存在記憶體中而不是磁碟上(這是我們稱呼MySQL叢集為記憶體資料庫的原因)。然而,一些MySQL叢集的資料也可以儲存在磁碟上。
SQL節點:這各節點用來訪問叢集資料。在MySQL叢集中,SQL節點是使用NDBCLUSTER儲存引擎的傳統的MySQL伺服器。SQL節點透過mysqld --ndbcluster --ndb-connectstring方式啟動。
在生產環境中,部署一套三節點的MySQL叢集是不現實的,因為這樣的配置無法提供冗餘保護。想要實現MySQL叢集的高可用性,需要部署多個資料節點和SQL節點,管理節點也推薦部署多個。
管理伺服器負責管理叢集的配置和叢集日誌。每個叢集節點讀取管理伺服器上面的配置資訊。
另外,除了上面這些節點,還有叢集客戶端程式和應用程式,包括標準的MySQL客戶端、NDB特定的API程式和管理客戶端。
MySQL叢集有兩種日誌:
叢集日誌:記錄叢集的事件報告
節點日誌:每個節點的單獨日誌
通常,只需要檢查叢集日誌即可,只要當開發應用程式或排錯時才會用到節點日誌檢查點,一般來說,當資料被儲存到磁碟上時,會觸發一個檢查點。在MySQL叢集中,當被提交的事務資料被儲存到磁碟上時,會觸發檢查點。對於NDB儲存引擎,有兩種型別的檢查點一起工作來確保叢集資料的一致性。
本地檢查點(LCP):這是單獨節點上面的檢查點。一個本地檢查點會儲存本地節點上面的所有資料到磁碟上,每幾分鐘會觸發一次,觸發檢查點的時間間隔依據節點上面的資料量、叢集的活動級別和其他因素而定。
全域性檢查點(GCP):全域性檢查點每幾秒鐘會發生一次,當所有節點上面的事務同步且日誌檔案被重新整理到磁碟上時發生。
一個資料節點是一個ndbd程式,每個資料節點需要部署到不同的主機上,MySQL叢集不支援在同一臺主機上部署多個ndbd程式。
[root@dongdan ~]# ps -ef|grep ndbd
root 23759 1 0 Aug03 ? 00:00:00 ndbd
root 23760 23759 0 Aug03 ? 00:24:05 ndbd
root 31446 31395 0 13:46 pts/2 00:00:00 grep ndbd
管理節點的程式是ndb_mgmd程式,SQL節點的程式是mysqld程式。
[root@dongdan ~]# ps -ef|grep mysqld
root 23833 1 0 Aug03 ? 00:00:00 /bin/sh /usr/bin/mysqld_safe --defaults-file=/var/lib/mysql/main_my.cnf
mysql 24051 23833 0 Aug03 ? 00:36:04 /usr/sbin/mysqld --defaults-file=/var/lib/mysql/main_my.cnf --basedir=/usr --datadir=/var/lib/mysql/database --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/lib/mysql/database/dongdan.err --pid-file=/var/lib/mysql/database/dongdan.pid --socket=/var/lib/mysql/mysql.sock --port=3306
root 31464 31395 0 13:50 pts/2 00:00:00 grep mysqld
節點組包含一個或多個節點。
MySQL叢集使用心跳和超時機制,當其中一個節點網路無法聯通時,會判斷這個節點失效。
MySQL叢集被設計成沒有任何單點故障。在一套shared-nothing系統中,每個節點都有自己的記憶體和硬碟,像共享網路、網路問卷系統和SAN儲存這些共享儲存機制不被MySQL叢集推薦和支援。
MySQL叢集透過一個稱為NDB的記憶體叢集儲存引擎,和標準的MySQL伺服器整合在一起。NDB是Network DataBase的縮寫。MySQL叢集是MySQL伺服器和NDB儲存引擎的結合。
一套MySQL叢集包含一系列的電腦主機,每臺主機執行一個或多個程式;這些程式被稱為節點,包含MySQL伺服器(用於訪問NDB的資料)、資料節點(用於儲存資料)、一個或多個管理伺服器、其他定製的資料訪問程式。這些節點的關係圖如下:
叢集中的節點可以被停止或重啟,也可以再次加入叢集中。
NDBCLUSTER(也稱為NDB)是一個提供高可用性和資料永久化的記憶體儲存引擎。
NDBCLUSTER可以透過配置一些引數實現故障切換和負載均衡。需要注意的是,在MySQL叢集中,一個節點是指一臺主機,而是一個程式;可以在一臺主機上執行多個節點。
在一套MySQL叢集配置中,至少有三個節點:
管理節點:這個節點的角色是管理叢集中的其他節點,提供配置資料,啟動停止節點和執行備份功能。因為這個節點管理其他節點的配置資訊,在叢集中應該首先啟動這個節點。透過ndb_mgmd命令啟動MGM節點。
資料節點:這種型別的節點儲存叢集的資料。MySQL叢集中的表通常被儲存在記憶體中而不是磁碟上(這是我們稱呼MySQL叢集為記憶體資料庫的原因)。然而,一些MySQL叢集的資料也可以儲存在磁碟上。
SQL節點:這各節點用來訪問叢集資料。在MySQL叢集中,SQL節點是使用NDBCLUSTER儲存引擎的傳統的MySQL伺服器。SQL節點透過mysqld --ndbcluster --ndb-connectstring方式啟動。
在生產環境中,部署一套三節點的MySQL叢集是不現實的,因為這樣的配置無法提供冗餘保護。想要實現MySQL叢集的高可用性,需要部署多個資料節點和SQL節點,管理節點也推薦部署多個。
管理伺服器負責管理叢集的配置和叢集日誌。每個叢集節點讀取管理伺服器上面的配置資訊。
另外,除了上面這些節點,還有叢集客戶端程式和應用程式,包括標準的MySQL客戶端、NDB特定的API程式和管理客戶端。
MySQL叢集有兩種日誌:
叢集日誌:記錄叢集的事件報告
節點日誌:每個節點的單獨日誌
通常,只需要檢查叢集日誌即可,只要當開發應用程式或排錯時才會用到節點日誌檢查點,一般來說,當資料被儲存到磁碟上時,會觸發一個檢查點。在MySQL叢集中,當被提交的事務資料被儲存到磁碟上時,會觸發檢查點。對於NDB儲存引擎,有兩種型別的檢查點一起工作來確保叢集資料的一致性。
本地檢查點(LCP):這是單獨節點上面的檢查點。一個本地檢查點會儲存本地節點上面的所有資料到磁碟上,每幾分鐘會觸發一次,觸發檢查點的時間間隔依據節點上面的資料量、叢集的活動級別和其他因素而定。
全域性檢查點(GCP):全域性檢查點每幾秒鐘會發生一次,當所有節點上面的事務同步且日誌檔案被重新整理到磁碟上時發生。
一個資料節點是一個ndbd程式,每個資料節點需要部署到不同的主機上,MySQL叢集不支援在同一臺主機上部署多個ndbd程式。
[root@dongdan ~]# ps -ef|grep ndbd
root 23759 1 0 Aug03 ? 00:00:00 ndbd
root 23760 23759 0 Aug03 ? 00:24:05 ndbd
root 31446 31395 0 13:46 pts/2 00:00:00 grep ndbd
管理節點的程式是ndb_mgmd程式,SQL節點的程式是mysqld程式。
[root@dongdan ~]# ps -ef|grep mysqld
root 23833 1 0 Aug03 ? 00:00:00 /bin/sh /usr/bin/mysqld_safe --defaults-file=/var/lib/mysql/main_my.cnf
mysql 24051 23833 0 Aug03 ? 00:36:04 /usr/sbin/mysqld --defaults-file=/var/lib/mysql/main_my.cnf --basedir=/usr --datadir=/var/lib/mysql/database --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/lib/mysql/database/dongdan.err --pid-file=/var/lib/mysql/database/dongdan.pid --socket=/var/lib/mysql/mysql.sock --port=3306
root 31464 31395 0 13:50 pts/2 00:00:00 grep mysqld
節點組包含一個或多個節點。
MySQL叢集使用心跳和超時機制,當其中一個節點網路無法聯通時,會判斷這個節點失效。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26506993/viewspace-2099896/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL 5.5 NDB叢集檢視日誌MySql
- mysql叢集搭建MySql
- mysql 叢集搭建MySql
- MySQL叢集配置MySql
- MySQL MGR 叢集搭建MySql
- docker部署mysql叢集DockerMySql
- docker搭建mysql叢集DockerMySql
- MySQL 5.7 叢集搭建MySql
- Mysql叢集/solr/mongoDBMySqlSolrMongoDB
- mysql叢集架構MySql架構
- MySQL CLUSTER(叢集)系列MySql
- MySQL叢集配置(轉)MySql
- Redis 漸進叢集介紹Redis
- MySQL NDB Cluster和Galera Cluster的主要特性和優缺點介紹MySql
- MySQL叢集搭建方案(PXC)MySql
- mysql8叢集搭建MySql
- MySQL 5.7 MGR 叢集搭建MySql
- MySQL資料庫叢集MySql資料庫
- mysql高可用叢集之MMMMySql
- docker 配置 Mysql主從叢集DockerMySql
- MySQL 叢集知識點整理MySql
- 透過示例程式碼介紹Docker部署Mysql叢集的實現DockerMySql
- Redis叢集介紹及測試思路Redis
- Redis 3.0介紹及叢集說明Redis
- 【MySQL】MySQL(四)儲存引擎、索引、鎖、叢集MySql儲存引擎索引
- MySQL NDB Cluster簡介及環境搭建MySql
- MySQL MGR 叢集搭建(單主模式)MySql模式
- MySQL叢集搭建(1)-主備搭建MySql
- mysql叢集02:幾個問題MySql
- mysql-mmm叢集(多例項)薦MySql
- Linux中Mysql的叢集搭建LinuxMySql
- MySQL DB 叢集管理平臺--orchestratorMySql
- MySQL叢集架構:MHA+MySQL-PROXY+LVS實現MySQL叢集架構高可用/高效能MySql架構
- Zookeeper叢集 + Kafka叢集Kafka
- solr叢集構建的基本流程介紹Solr
- mysql cluster ndb 記憶體表和磁碟表MySql記憶體
- Mysql ndb-cluster centos6.4 簡單配置MySqlCentOS
- Mac 下 利用 docker 構建 MySQL 叢集MacDockerMySql