可參考
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和主鍵要非常注意