由於畢設須要學習了一點關於MySQL Cluster的東西。爲避免遺忘,從今天起整理一下學過的東西。同時也但願這些學習筆記能幫助到和我同樣的初學者。 html
參考資料: node
1. http://downloads.mysql.com/tutorials/cluster/mysql_wp_cluster_quickstart_windows.pdf mysql
2. http://www.cnblogs.com/seesea125/archive/2012/03/28/2421277.html sql
下面是個人配置文件 數據庫
config.ini windows
[ndbd default] api
noofreplicas=2 服務器
datadir=d:\my_cluster\ndb_data 分佈式
[ndb_mgmd] 學習
hostname=10.128.50.68
datadir=d:\my_cluster\ndb_data
NodeId=1
[ndbd]
hostname=10.128.50.68
NodeId=3
[ndbd]
hostname=10.128.50.179
NodeId=4
[ndbd]
hostname=10.128.50.68
NodeId=5
[ndbd]
hostname=10.128.50.179
NodeId=6
[mysqld]
hostname=10.128.50.68
NodeId=7
[mysqld]
hostname=10.128.50.179
NodeId=8
[mysqld]
[api]
# do not specify NodeId!
hostname=10.128.50.68
[api]
# do not specify NodeId!
hostname=10.128.50.68
[api]
# do not specify NodeId!
hostname=10.128.50.68
[api]
# do not specify NodeId!
hostname=10.128.50.179
[api]
# do not specify NodeId!
hostname=10.128.50.179
[api]
# do not specify NodeId!
hostname=10.128.50.179
my.cnf
[mysqld]
ndbcluster
default-storage-engine=ndbcluster
character_set_server=utf8
datadir=D:\\my_cluster\\mysqld_data
basedir=D:\\mysqlc
port=5000
ndb-cluster-connection-pool=4
[mysql_cluster]
ndb-connectstring=10.128.50.68
幾點說明:
1.主機10.128.50.68上運行了一個管理節點(mgmd),一個MySQL節點(mysqld)和兩個數據節點(ndbd)
主機10.128.50.179上運行了一個MySQL節點和兩個數據節點
2.參數noofreplicas簡單來講就是表示備份的數目。詳細介紹在這個網址
http://dev.mysql.com/doc/refman/5.5/en/mysql-cluster-nodes-groups.html。裏面介紹了node、node group、replicas和partition這幾個概念和他們之間的關係。這些知識對指定一個有效的備份策略頗有幫助。若是你不明白,極可能沒法實現MySQL官方承諾的no single point of failure。
3.[api]這一項表示mysqld和ndbd之間打開的鏈接。具備相同hostname的[api]和[mysqld]項組成主機mysqld和ndbd之間的鏈接池。詳細信息能夠參考MySQL官方手冊MySQL_Cluster_Performance_WP.pdf中Connection pools小節
4.[api]節點的nodeid不能指定。這個MySQL Cluster啓動後會自動爲其分配nodeid。[api]項最好寫在指定nodeid的項後面。不然,可能會遇到我這樣的錯誤。
我原來把四個[api]加在nodeid=7的那個[mysqld]後面。而後又指定了這四個[api]後面的[mysqld]的nodeid=8。結果集羣啓動時立馬報錯:nodeid重複
5.my.cnf文件裏有兩個我本身添加的幾個選項。
default-storage-engine=ndbcluster用來指定默認存儲引擎。(原來默認的竟然是InnoDB,真是坑爹啊。身爲一個分佈式數據庫,情何以堪吶!)
character_set_server=utf8用來指定服務器的編碼方式。不知道爲何,不改這個,光改數據庫的編碼方式,插入中文總是出錯。原來用在MySQL上的參數default-character-set無論用了。若是加上default-character-set=utf8,mysqld啓動之後幾秒內就會自動關閉。
ndb-cluster-connection-pool=4和上面說的鏈接池對應。
ndb-connectstring=10.128.50.68聲明管理節點