上Mysql HA課程 Day1 12/10 DIY
可參考 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和主鍵要非常注意