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