MySQL集群简介与配置详解



MySQL集群主要用于解决MySQL性能不足的问题,在这里我们将要介绍集群的基本概念,以及一些配置知识。

AD:2013云计算架构师峰会课程资料下载

1.先了解一下你是否应该用MySQL集群。

减少数据中心结点压力和大数据量处理,采用把MySQL分布,一个或多个application对应一个MySQL数据库。把几个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加上:


  1. [MySQLD]
  2. ndbcluster#runNDBengine
  3. ndb-connectstring=192.168.1.251#locationofMGMnode
  4. #Optionsforndbdprocess:
  5. [MySQL_CLUSTER]
  6. ndb-connectstring=192.168.1.251#locationofMGMnode
  7. A:/var/lib/MySQL-cluster/config.ini
  8. [NDBDDEFAULT]
  9. NoOfReplicas=1#Numberofreplicas
  10. DataMemory=80M#Howmuchmemorytoallocatefordatastorage
  11. IndexMemory=18M#Howmuchmemorytoallocateforindexstorage
  12. #ForDataMemoryandIndexMemory,wehaveusedthe
  13. #defaultvalues.Sincethe"world"databasetakesup
  14. #onlyabout500KB,thisshouldbemorethanenoughfor
  15. #thisexampleClustersetup.
  16. #TCP/IPoptions:
  17. [TCPDEFAULT]
  18. portnumber=2202#Thisthedefault;however,youcanuseany
  19. #portthatisfreeforallthehostsincluster
  20. #Note:ItisrecommendedbeginningwithMySQL5.0that
  21. #youdonotspecifytheportnumberatallandsimplyallow
  22. #thedefaultvaluetobeusedinstead
  23. #Managementprocessoptions:
  24. [NDB_MGMD]
  25. hostname=192.168.1.251#HostnameorIPaddressofMGMnode
  26. datadir=/var/lib/MySQL-cluster#DirectoryforMGMnodelogfiles
  27. #Optionsfordatanode"A":
  28. [NDBD]
  29. #(one[NDBD]sectionperdatanode)
  30. hostname=192.168.1.251#HostnameorIPaddress
  31. datadir=/usr/local/MySQL/data#Directoryforthisdatanode'sdatafiles
  32. #SQLnodeoptions:
  33. [MySQLD]
  34. hostname=192.168.1.254
  35. #[MySQLD]#这个相当于192.168.1.251

4.启动测试

在管理服务器上面(这里是192.168.1.251):


  1. shell>ndb_mgmd-f/var/lib/MySQL-cluster/config.ini

在数据结点服务器上面(依然是192.168.1.251and more):


  1. shell>ndbd--initial(第一次时加--initial参数)

SQL结点服务器上面(192.168.1.254):


  1. shell>MySQLd&

在251上面察看


  1. ./ndb_mgm
  2. --NDBCluster--ManagementClient--
  3. ndb_mgm>show
  4. ConnectedtoManagementServerat:192.168.1.251:1186
  5. ClusterConfiguration
  6. ---------------------
  7. [ndbd(NDB)]1node(s)
  8. id=2@192.168.1.251(Version:5.0.22,Nodegroup:0,Master)
  9. [ndb_mgmd(MGM)]1node(s)
  10. id=1@192.168.1.251(Version:5.0.22)
  11. [MySQLd(API)]1node(s)
  12. id=3@192.168.1.254(Version:5.0.22)

ok

关闭集群:


  1. shell>ndb_mgm-eshutdown

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

原文链接:http://blog.19lou.com/10131711/viewspace-338346