MySQL Cluster 是用于解决高可用和高可靠性的解决方案。
MySQL Cluster 具有故障恢复、节点修复、数据同步、非单点故障等优点。
MySQL Cluster是为提供99.999%以上的高可用性而设计的,采用分布式节点设计技术,不会因为单点故障而使整个Cluster瘫痪。
MySQL Cluster由3类节点组成:管理节点、数据节点、SQL节点。

1:数据节点
  数据节点是整个系统中最主要的节点,它负责存储所有的数据以及数据的同步复制,以防单个或者更多的节点故障而使MySQL Cluster瘫痪。

2:管理节点
  管理节点用于管理系统的配置信息,只在启动和重新配置MySQL Cluster的时候才起作用。一般情况下只需要1个管理节点,当然也可以运行几个管理节点。

3:SQL节点
  SQL节点用于数据节点存取数据,提供统一的标准SQL接口,跟平常的MySQL Serve一样,让应用程序和开发人员不用关心系统内部究竟是如何运行的。

os:centos5/rhel5    mysql version:5.1.22 rc

准备:
mysql-max-5.1.5-alpha-linux-i686-glibc23.tar

环境:
管理节点
IP:192.168.0.118 主机名:mgm
存?节点1/sql节点1: 192.168.0.146  主机名: node1
存?节点2/sql节点2: 192.168.0.221主机名: node2

三台主机的hosts 文件要一样

192.168.0.118           mgm
192.168.0.146           node1
192.168.0.221           node2
这里只有用一台管理节点

存?节点和SQL节点分别在在两台电脑上,也就是存?节点同时也当数据节点
========================================================================
安装:分别在三台电脑安装数据库

  1. shell>tar xvf mysql-max-5.1.5-alpha-linux-i686-glibc23.tar

  2. shell> groupadd mysql

  3. shell> useradd -g mysql mysql

  4. shell> cd /usr/local

  5. shell> mv mysql-max-5.1.5-alpha-linux-i686-glibc23 mysql

  6. shell> cd mysql

  7. shell> chown -R mysql .

  8. shell> chgrp -R mysql .

  9. shell> scripts/mysql_install_db --user=mysql

  10. shell> chown -R root .

  11. shell> chown -R mysql data

  12. shell> bin/mysqld_safe --user=mysql &

复制代码


CP启动脚本到/etc/init.d 目录
  1. shell>cp support-files/mysql.server /etc/init.d/mysqld

复制代码


停止mysql 数据库
  1. shell>/etc/init.d/mysqld stop

复制代码

加入systemV服务
  1. shell>chkconfig --add mysqld

复制代码

cp MYSQL配置文件到/etc/目录
  1. shell>cp support-files/my-small.cnf /etc/my.cnf

复制代码

测试三台上面的数据库启动是否正常

二:配置管理节点
MGM:
1,配置/etc/my.cnf文件
在后面添加如下内容
  1. [ndb_mgm]

  2. connect-string=mgm

  3. [ndb_mgmd]

  4. config-file=/etc/config.ini

  5. ##connect-string=mgm  ##ndb_mgm 管理节点的计算机名

  6. ##config-file=/etc/config.ini ##ndb_mgmd的启动所要的配置文件

复制代码


2,ndb_mgmd的配置文件 config.ini配置如下
  1. #

  2. # DEFAULT SETTINGS

  3. #


  4. # Default settings for all data nodes

  5. [NDBD DEFAULT]

  6. NoOfReplicas=2

  7. DataMemory=644245094

  8. IndexMemory=322122547


  9. #

  10. # COMPUTER DEFINITIONS

  11. #


  12. # Datanode Computer #1

  13. [COMPUTER]

  14. Id=1

  15. HostName=node1


  16. # Datanode Computer #2

  17. [COMPUTER]

  18. Id=2

  19. HostName=node2


  20. # Management Node Computer #1

  21. [COMPUTER]

  22. Id=3

  23. HostName=mgm


  24. #

  25. # NODE DEFINITIONS

  26. #


  27. # Data Nodes


  28. # Node group #1


  29. [NDBD]

  30. Id=1

  31. ExecuteOnComputer=1


  32. [NDBD]

  33. Id=2

  34. ExecuteOnComputer=2


  35. # Management node


  36. [NDB_MGMD]

  37. Id=3

  38. ExecuteOnComputer=3


  39. # Anonymous API nodes  ##

  40. [MYSQLD]

  41. [MYSQLD]

  42. [MYSQLD]

复制代码


分另在两点节点配置:在/etc/my.cnf下面添加如下内容
  1. [MYSQLD]

  2. ndbcluster

  3. ndb-connectstring=mgm

  4. #default_table_type=NDBCLUSTER


  5. [MYSQL_CLUSTER]

  6. ndb-connectstring=mgm


  7. # my.cnf

  8. [MYSQL_CLUSTER]

  9. ndb-connectstring=mgm #管理节点的主机名



  10. /

  11. mysql cluster实战


  12. 192.168.0.118是管理节点,192.168.0.146、192.168.0.221是数据节点和sql节点一体化

复制代码

启动管理节点

  1. /usr/local/mysql/bin/ndb_mgmd -f /etc/config.ini

复制代码


注意,必须用“-f”或“--config-file”选项,告诉ndb_mgmd到×××到配置文件(详情请参见17.5.3节,“ndb_mgmd,“管理服务器”进程”)。

6.启动数据节点

第一次启动

  1. /usr/local/mysql/bin/ndbd --initial

复制代码


注意,仅应在首次启动ndbd时,或在备份/恢复或配置变化后重启ndbd时使用“--initial”参数,这很重要。原因在于,该参数会使节点删除由早期ndbd实例创建的、用于恢复的任何文件,包括恢复用日志文件。

非第一次启动:
/usr/local/mysql/bin/ndbd

7.启动sql节点
service mysqld start  start

8.调用ndb_mgm管理节点客户端,可对其进行测试

  1. #/usr/local/mysql/bin/ndb_mgm

  2. ndb_mgm> show

  3. Connected to Management Server at: mgm:1186

  4. Cluster Configuration

  5. ---------------------

  6. [ndbd(NDB)]     2 node(s)

  7. id=1    @192.168.0.146  (Version: 5.1.5, Nodegroup: 0)

  8. id=2    @192.168.0.221  (Version: 5.1.5, Nodegroup: 0, Master)


  9. [ndb_mgmd(MGM)] 1 node(s)

  10. id=3    @192.168.0.118  (Version: 5.1.5)


  11. [mysqld(API)]   3 node(s)

  12. id=4    @192.168.0.221  (Version: 5.1.5)

  13. id=5    @192.168.0.146  (Version: 5.1.5)

  14. id=6 (not connected, accepting connect from any host)

复制代码


查看网络连接情况

234管理节点:

  1. [root@mgm local]# netstat -anp | grep mgm

  2. tcp        0      0 0.0.0.0:1186                0.0.0.0:*                   LISTEN      10059/ndb_mgmd      

  3. tcp        0      0 192.168.0.118:47504         192.168.0.118:1186          ESTABLISHED 10302/ndb_mgm      

  4. tcp        0      0 192.168.0.118:47503         192.168.0.118:1186          ESTABLISHED 10302/ndb_mgm      

  5. tcp        0      0 192.168.0.118:47502         192.168.0.118:1186          ESTABLISHED 10302/ndb_mgm      

  6. tcp        0      0 127.0.0.1:34878             127.0.0.1:1186              ESTABLISHED 10059/ndb_mgmd      

  7. tcp        0      0 192.168.0.118:1186          192.168.0.221:2689          ESTABLISHED 10059/ndb_mgmd      

  8. tcp        0      0 127.0.0.1:1186              127.0.0.1:34878             ESTABLISHED 10059/ndb_mgmd      

  9. tcp        0      0 192.168.0.118:1186          192.168.0.146:57511         ESTABLISHED 10059/ndb_mgmd      

  10. tcp        0      0 192.168.0.118:1186          192.168.0.118:47502         ESTABLISHED 10059/ndb_mgmd      

  11. tcp        0      0 192.168.0.118:1186          192.168.0.118:47503         ESTABLISHED 10059/ndb_mgmd      

  12. tcp        0      0 192.168.0.118:1186          192.168.0.118:47504         ESTABLISHED 10059/ndb_mgmd      

  13. tcp        0      0 192.168.0.118:1186          192.168.0.221:2356          ESTABLISHED 10059/ndb_mgmd      

  14. tcp        0      0 192.168.0.118:1186          192.168.0.221:2355          ESTABLISHED 10059/ndb_mgmd      

  15. tcp        0      0 192.168.0.118:1186          192.168.0.146:34588         ESTABLISHED 10059/ndb_mgmd

复制代码



数据和SQL节点:

  1. [root@node1 data]# netstat -anp | grep 192.168.0.146

  2. tcp        0      0 192.168.0.221:1284          192.168.0.146:51311         ESTABLISHED 3053/mysqld        

  3. tcp        0      0 192.168.0.221:4182          192.168.0.146:42435         ESTABLISHED 2714/ndbd          

  4. tcp        0      0 192.168.0.221:1545          192.168.0.146:55286         ESTABLISHED 2714/ndbd  




  5. tcp        0      0 192.168.0.221:2356          192.168.0.118:1186          ESTABLISHED 2714/ndbd          

  6. tcp        0      0 192.168.0.221:2355          192.168.0.118:1186          ESTABLISHED 2714/ndbd          

  7. tcp        0      0 192.168.0.221:1284          192.168.0.146:51311         ESTABLISHED 3053/mysqld

复制代码