mysql cluster 實際上是在無共享儲存裝置的情況下實現的一種完全分布式資料庫系統,其主要通過ndb cluster(簡稱ndb)儲存引擎來實現。也就是資料庫集群,最開始的版本是將資料放在記憶體,新的版本是只將索引放入記憶體。記憶體和網路影響 mysql cluster 效能。
一安裝mysql cluster由管理節點(mgm),儲存節點(ndb), sql節點構成。
硬體資訊:使用三颱虛擬機器作測試。ndb和sql共用一台機器。
1.mgm ,ip:192.168.234.133
2.ndb 1,ip:192.168.234.130
3.ndb 2 ,ip:192.168.234.129
4:sql 1,ip192.168.234.130
5 sql 2,ip 192.168.234.129
2.sql節點安裝
採用原始碼安裝
cmake 增加引數-dwith_ndbcluster_storage_engine=1
其它步驟參考原始碼安裝步驟, 安裝完成後修改my,cnf配置檔案
增加[mysqld]
ndbcluster #啟用ndb儲存引擎
[mysql_cluster]
ndb-connectstring = 192.168.234.133 #管理節點ip
3.ndb節點安裝
4.mgm節點安裝
複製ndb_mgm和ndb_mgmd到自建目錄就行。
mkdir /usr/local/mysql-cluster && chmod 755 /usr/local/mysql-cluster
mkdir /home/mysql && chmod 755 /home/mysql
scp root@192.168.234.133:/usr/local/mysql/bin/ndb_* /usr/local/mysql-cluster
修改配置檔案config.ini
[ndbd default]
noofreplicas: 2
datamemory: 64m
indexmemory: 10m
backupmemory: 64m
[mgm default]
portnumber: 1186
datadir=/home/mysql
[ndb_mgmd]
id: 1
hostname: 192.168.234.133
arbitrationrank: 1
[ndbd]
id: 2
hostname: 192.168.234.130
datadir=/home/mysql
[ndbd]
id: 3
hostname: 192.168.234.129
datadir=/home/mysql
[api]
id: 4
hostname: 192.168.234.130
[api]
id: 5
hostname: 192.168.234.129
二啟動.
建議的各節點啟動順序是 mgm-ndb-sql
1.mgm 節點
ndb_mgmd -f ./config.ini --initial--configdir=/usr/local/mysql-cluster/
第一次需要加--initial
2.ndb節點
ndbd --initial
第一次需要加--initial,後面執行就不用了,否則會初始化資料,造成資料丟失。
3.sql 節點
service mysqld start
三。測試
最開始,我誤解為mysql cluster和sql server cluster 一樣,外面應用連線乙個虛擬ip,由mysql cluster做資料冗餘和負載均衡。
但其實mysql cluster只有資料冗餘,沒有負載均衡,連線只能連sql節點。如sql節點crash,只能應用切換到另乙個sql節點。
和mysql-proxy配合使用倒是可以實現負載均衡,資料冗餘 和故障轉移。
連線到sql 節點
mysql -h 192.168.234.129 -u root -p
mysql>create database cluster_test;
mysql> use cluster_test;
mysql>create table t1 (id int not null auto_increment, s1 int null,primary key (id) )engine=ndb;
mysql> insert into t1 (s1) select 1;
mysql> select * from t1;
+----+------+
| id | s1 |
+----+------+
| 1 | 1 |
+----+------+
1 row in set (0.00 sec)
連線另乙個sql節點
mysql -h 192.168.234.130 -u root -p
mysql> select * from cluster_test. t1;
+----+------+
| id | s1 |
+----+------+
| 1 | 1 |
+----+------+
1 row in set (0.11 sec)
可見資料成功冗餘。
kill掉乙個ndb節點ndbd程序,查詢依然正常。
Ubuntu安裝Mysqlcluster集群
可參考 具體的安裝過程,可參考mysqlcluster手冊中的第4章。安裝 1,檢查系統是否已存在mysql組和mysql使用者,若不存在則新建mysql使用者組和mysql使用者 2,解壓到 usr local目錄下並建立mysql的軟鏈結 3,初始化mysql,在執行初始化之前必須先安裝依賴包 ...
mysql cluster 配置與安裝
1 mysql cluster mysql cluster是一種技術,使在無共享 shared nothing 系統記憶體中的資料庫集群。無共享 shared nothing 的架構,使系統工作非常廉價的硬體,以最小的硬體或軟體的具體要求。mysql cluster的設計不會有任何單點故障。預計在無...
MysqlCluster安裝實測可行
mysqlcluster分為三部分,management node,data node,sql node。其中management node管理整個cluster,ndb之間是互相連通的,實現資料儲存,sql節點是用來訪問cluster的資料的,下圖 於官方文件。型別ip management no...