可參考 http://www.osslab.org.tw/User:Alang/%E8%8D%89%E7%A8%BF%E6%96%87%E4%BB%B6/MySQL_Cluster

http://dev.mysql.com/downloads/ MySQL Cluster http://dev.mysql.com/downloads/select.php?id=14 MySQL Cluster Support http://www.mysql.com/support/supportedplatforms/cluster.html

1、C:\mysql\mysql-cluster-gpl-7.0.9-win32 2、sample\my1.ini my2.ini -> C:\mysql\mysql-cluster-gpl-7.0.9-win32 3、create config.ini -> C:\mysql\mysql-cluster-gpl-7.0.9-win32 3-1、create mgmd-log -> c:\mysql 4、edit config.ini PS:大小寫沒差 Management node

[NDBD DEFAULT] NoOfReplicas 幾台dataNode # Number of replicas DataMemory # How much memory to allocate for data storage IndexMemory # How much memory to allocate for index storage

[NDB_MGMD] ID PS:只有一台時,不用打ID DataDir 放剛建立mgmd-log目錄 # Directory for MGM node logfiles HostName 看IP,如果在同一台就locahost PS:必需

[NDBD] 有幾個就建幾個 ID HostName 看IP,如果在同一台就locahost PS:必需 ServerPort PS:有需要再加 DataDir PS:看你把資料放那

[MYSQLD] 要幾個就建幾個

5、start ndb_mgmd –initial -f ..\config.ini PS:先啟動 Managemnet consol 6、start ndbd –initial PS:data node #1 及 #2,分別執行兩次 訊息:Using 1 fragments findNeighbours 不支援virtual機器,因為太多thread ??第一次執行時才需要加上 –initial,爾後啟動時,就不能在加此參數,除非是要重新作初始化

7、ndb_mgm PS:在 Management node 可以檢查 Cluster 狀態 ndb_mgm>show PS:由於 config.ini 設定 NoOfReplicas=2,所以要啟動兩個 data-node 才會顯示狀態為 started。 ndb_mgm -e show PS:快速指令 ndb_mgm -c localhost PS:指定IP ndb_mgm>help PS:看一些指令

8、先把data目錄copy成data1和data2 start mysqld –defaults-file=..\my1.ini start mysqld –defaults-file=..\my2.ini

my1.ini ndb-nodeid=21 PS:config.ini裡面的 [mysqld]設的 ndbcluster PS:使用cluster enginner

server-id=1 PS:和ndb-nodeid不同

C:\mysql\mysql-cluster-gpl-7.0.9-win32\data1\PC14.err C:\mysql\mysql-cluster-gpl-7.0.9-win32\data2\PC14.err C:\mysql\mgmd-log\ndb_1_cluster.txt

metadata C:\mysql\mysql-cluster-gpl-7.0.9-win32\bin\ndb_11_fs C:\mysql\mysql-cluster-gpl-7.0.9-win32\bin\ndb_12_fs 較重要 LCP目錄 Local check point 記憶體中的資料寫成檔案

9、[shutdown] ndb_mgm ndb_mgm>shutdown 單一指令:ndb_mgm -e shutdown

mysqladmin -u root shutdown mysqladmin -u root -P 3307 shutdown

10、Boot Management node start ndb_mgmd -f ..\config.ini Data nodes start ndbd SQL nodes start mysqld –defaults-file=..\my1.ini start mysqld –defaults-file=..\my2.ini

當ndbd啟動會load data=>starting

11、login mysql my1 my2 my1>create database ndbtest; my1>show database; 看my2是否有增 my2>create table ntest (id INT, name CHAR(8)) ENGINE = ndbcluster; my1>show engines; my1>create table mtest (id INT) ENGINE = MYISAM; my1>show TABLES; PS:存在table mtest my2>show TABLES; PS:不存在table mtest

my2>insert into ntest values (1,'aaa'), (2, 'bbb'), (3, 'ccc');
my1>select * from ntest;
my1>insert into ntest values (4,'ddd'), (5, 'eee');
my2>select * from ntest;
這裡看order會不一樣,因為取擇於cluster,所以都會不同,所以要注意
要用ID來排序之類,才能確定LIMIT會正確。
my2> select * from ntest LIMIT 2;
my1> select * from ntest LIMIT 2;

開工作管理員,強列關掉 ndbd.exe 1個
會產生 execTAKE_OVERTCCONF
還是可以查資料和insert
my2>insert into ntest values (4,'ddd'), (5, 'eee');
my1>select * from ntest;

start ndbd
ndbd_mgm -e show
會看到starting狀態

開工作管理員,強列關掉 舊的ndbd.exe 1個
再select看data,還是在


mysqlbinlog ..\data1\PC14-bin.000001
show VARIABLES LIKE '%bin%';

找主key會找相關datanode,找非主鍵會找每一個datanode 所以cluster的系統要重新設計 另沒有外鍵(foringkey)

Four Data Nodes Two Node Groups Two Replicas

匯入word.sql 改table enginer=ndbcluster alert table xxxx enginer=ndbcluster;

??下sql查,用非主鍵join,非常慢!慢到34.23s 總之join和主鍵要非常注意