1. 先瞭解一下你是否應該用MySQL叢集。
減少資料中心結點壓力和大資料量處理,採用把MySQL分布,一個或多個application對應一個MySQL資料庫。把幾個MySQL資料庫公用的資料做出共用資料,例如購物車,使用者物件等等,存在資料結點裡面。其他不共用的資料還維持在各自分布的MySQL資料庫本身中。
2. 叢集MySQL中名稱概念.(如)
1)Sql結點SQL node--對應為MySQLd):分散式資料庫。包括自身資料和查詢中心結點資料.
2)資料結點(Data node -- ndbd):叢集共用資料(記憶體中).
3)管理伺服器(Management Server – ndb_mgmd):叢集管理SQL node,Data node.
3.配置
MySQL-max版本,當然現在MySQL叢集系統windonws平台上面不被支援.
安裝MySQL就不多說了,網上一大堆,簡明扼要。
A:192.168.1.251 – Data node和Management Server.
B:192.168.1.254 – SQL node.
當然,你也可以讓一個機器同時為3者。
A,B my.inf加上:
- [MySQLD]
- ndbcluster # run NDB engine
- ndb-connectstring=192.168.1.251 # location of MGM node
-
- # Options for ndbd process:
- [MySQL_CLUSTER]
- ndb-connectstring=192.168.1.251 # location of MGM node
-
- A: /var/lib/MySQL-cluster/config.ini
- [NDBD DEFAULT]
- NoOfReplicas=1 # Number of replicas
- DataMemory=80M # How much memory to allocate for data storage
- IndexMemory=18M # How much memory to allocate for index storage
- # For DataMemory and IndexMemory, we have used the
- # default values. Since the "world" database takes up
- # only about 500KB, this should be more than enough for
- # this example Cluster setup.
- # TCP/IP options:
- [TCP DEFAULT]
- portnumber=2202 # This the default; however, you can use any
- # port that is free for all the hosts in cluster
- # Note: It is recommended beginning with MySQL 5.0 that
- # you do not specify the portnumber at all and simply allow
- # the default value to be used instead
- # Management process options:
- [NDB_MGMD]
- hostname=192.168.1.251 # Hostname or IP address of MGM node
- datadir=/var/lib/MySQL-cluster # Directory for MGM node logfiles
- # Options for data node "A":
- [NDBD]
- # (one [NDBD] section per data node)
- hostname=192.168.1.251 # Hostname or IP address
- datadir=/usr/local/MySQL/data # Directory for this data node's datafiles
- # SQL node options:
- [MySQLD]
- hostname=192.168.1.254
- #[MySQLD] #這個相當於192.168.1.251
-
4. 啟動測試
在管理伺服器上面(這裡是192.168.1.251
):
- shell>ndb_mgmd -f /var/lib/MySQL-cluster/config.ini
在資料結點伺服器上面(依然是192.168.1.251
and more):
- shell>ndbd--initial (第一次時加--initial參數)
SQL結點伺服器上面(192.168.1.254
):
- shell>MySQLd &
在251上面察看
- ./ndb_mgm
-
- -- NDB Cluster -- Management Client --
- ndb_mgm> show
- Connected to Management Server at: 192.168.1.251:1186
- Cluster Configuration
- ---------------------
- [ndbd(NDB)] 1 node(s)
- id=2 @192.168.1.251 (Version:5.0.22, Nodegroup: 0, Master)
-
- [ndb_mgmd(MGM)] 1 node(s)
- id=1 @192.168.1.251 (Version:5.0.22)
-
- [MySQLd(API)] 1 node(s)
- id=3 @192.168.1.254 (Version:5.0.22)
ok
關閉叢集:
- shell>ndb_mgm -e shutdown
5.基本的叢集說明
1)在MySQL叢集中.當table引擎為NDBCLUSTER時才做叢集,其他非NDBCLUSTER表和一般MySQL資料庫表一樣,不會共用資料. NDBCLUSTER表資料存放區在Data node伺服器記憶體中,Data Node可以為1台或多台伺服器,它們之間存放共用資料。Data Node伺服器可以分組資料copy。
例如:2,3,4,5為四台Data Node伺服器ID. 2,3為組0。 4,5為組1。 2,3鑑效組資料相同,4,5鑑效組資料相同。 組0和組1鑑效組資料不同。
2)sql node伺服器中,非NDBCLUSTER資料存在本身資料庫中,table引擎為NDBCLUSTER時,資料存放區在Data Node中。當查詢NDBCLUSTER表時,它會從Data node叢集中提起資料.
3)Manager server
管理SQl node和Data node狀態。
6深入瞭解http://dev.MySQL.com/doc/refman/5.0/en/ndbcluster.html