一、配置环境:

  OS:Linux CentOS 5.0

  MySQL: mysql-cluster-gpl-7.1.13-linux-i686-glibc23.tar.gz (注意:需用Cluster版本,可在官网上下载 http://dev.mysql.com/downloads/cluster/#downloads)

MySQL-Cluster架构图文详解_MySQL

节点配置情况:

  MGM:192.168.20.231

  NDBD1:192.168.20.232

  NDBD2:192.168.20.233

  SQL1:192.168.20.234

  SQL2:192.168.20.235

修改CentOS IP地址

  (1)打开/etc/sysconfig/network-scripts/ifcfg-eth0文件,做如下修改

  # Intel Corporation 82545EM Gigabit Ethernet Controller (Copper)

  DEVICE=eth0

  BOOTPROTO=static

  ONBOOT=yes

  HWADDR=00:0c:29:be:b3:53

  IPADDR=192.168.20.231

  NETMASK=255.255.255.0

  GATEWAY=192.168.20.1

MySQL-Cluster架构图文详解_mysql_02

(2)修改/etc/resolv.conf文件, 如下(修改DNS服务)

  nameserver 202.101.172.35

  search localdomain

(3)重启网络服务

  [root@localhost ~]# service network restart

 

二、软件安装:

(一)管理节点MGM

  配置管理节点

  首先在合适的位置,创建一个管理节点的配置文件,步骤如下:

  [root@localhost ~]# mkdir /var/lib/mysql-cluster

  [root@localhost ~]# cd /var/lib/mysql-cluster

  [root@localhost mysql-cluster]# vi config.ini

  配置文件config.ini内容如下:

  [ndbd default]

  NoOfReplicas=2

  DataMemory=80M

  IndexMemory=18M

  [tcp default]

  portnumber=2202

  [ndb_mgmd]

  hostname=192.168.20.231

  datadir=/var/lib/mysql-cluster

  [ndbd]

  hostname=192.168.20.232

  datadir=/usr/local/mysql/data

  [ndbd]

  hostname=192.168.20.233

  datadir=/usr/local/mysql/data

  [mysqld]

  hostname=192.168.20.234

  [mysqld]

  hostname=192.168.20.235

MySQL-Cluster架构图文详解_bc_03


     安装管理节点,不需要mysqld二进制文件,只需要MySQL Cluster服务端程序(ndb_mgmd)和监听客户端程序(ndb_mgm)。这两个文件都在下载的MySQL-cluster文件解压后的bin文件夹中。执行如下步骤,在集群的管理节点上安装ndb_mgmd 和 ndb_mgm。

  1、改变地址到/var/tmp目录下,解压MySQL-Cluster压缩文件,取出ndb_mgm和ndb_mgmd复制到/usr/local/bin 目录下。

  [root@localhost ~]# cd /var/tmp

  [root@localhost tmp]# tar –xzvf mysql-cluster-gpl-7.1.13-linux-i686-glibc23.tar.gz

  [root@localhost tmp]# cd mysql-cluster-gpl-7.1.13-linux-i686-glibc23

  [root@localhost tmp]# cp bin/ndb_mgm* /usr/local/bin

MySQL-Cluster架构图文详解_mysql_04

2、改变路径为拷贝到的目录下,并确保这两个文件可执行。

  [root@localhost tmp]# cd /usr/local/bin

  [root@localhost bin]# chmod +x ndb_mgm*

3、在/usr/local下创建mysql文件夹。

  [root@localhost ~]# cd /usr/local

  [root@localhost local]# mkdir mysql

 

(二)、数据节点NDBD和SQL节点

  配置数据节点NDBD和SQL节点

  在每一个SQL节点中的/etc目录下找到my.cnf文件,并做如下配置:

    [root@localhost ~]# vi /etc/my.cnf

    [client]

  socket=/usr/local/mysql/sock/mysql.sock

  [mysqld]

  ndbcluster

  datadir=/usr/local/mysql

  socket=/usr/local/mysql/sock/mysql.sock

  ndb-connectstring=192.168.20.231

  old_passwords=1

  [mysql_cluster]

  ndb-connectstring=192.168.20.231

MySQL-Cluster架构图文详解_bc_05

 

在每一个数据节点NDBD和SQL节点的机器上,用root用户执行下面的步骤。

 

1、检查/etc/passwd 和 /etc/group 文件,是否存在mysql组和mysql用户,如果没有,用下面的命令创建一个mysql组,并在改组中添加mysql用户。

  [root@localhost ~]# groupadd mysql

  [root@localhost ~]# useradd –g mysql mysql

2、改变文件夹位置到mysql压缩包的存放位置,解压文件,准备安装,步骤如下:

  (下载文件可以从其他电脑映射, 在/home/下面创建一个download文件夹,如果是在本机Linux下下载的文件,则不需要此映射步骤。)

  [root@localhost ~]# mount -t cifs -o username="name",password="password" //192.168.20.210/MySQL /home/download

  [root@localhost ~] cp /home/download/ mysql-cluster-gpl-7.1.13-linux-i686-glibc23.tar.gz /var/tmp

  [root@localhost ~]# cd /var/tmp

  [root@localhost tmp]# tar –C /usr/local –xzvf mysql-cluster-gpl-7.1.13-linux-i686-glibc23.tar.gz

3、改变位置到local文件夹,改变mysql解压后的文件夹名称为mysql,然后执行提供的脚本,创建系统数据库。

  [root@localhost tmp]# cd /usr/local

  [root@localhost local]# mv mysql-cluster-gpl-7.1.13-linux-i686-glibc23/ mysql/

  [root@localhost local]# cd mysql

    [root@localhost mysql]# mkdir sock

  [root@localhost mysql]# scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql

MySQL-Cluster架构图文详解_MySQL_06

4、为MySQL服务及数据目录设置必要的服务。

  [root@localhost mysql]# chown -R root .

  [root@localhost mysql]# chown -R mysql.mysql /usr/local/mysql/data

  [root@localhost mysql]# chown -R mysql.mysql /usr/local/mysql/sock

  [root@localhost mysql]# chgrp -R mysql .

  [root@localhost mysql]# ls -l

MySQL-Cluster架构图文详解_MySQL_07

5、复制MySQL的启动脚本到如下的文件夹,确保可以执行。并设置为当系统启动时,同时启动MySQL。

  [root@localhost mysql]# cp support-files/mysql.server /etc/rc.d/init.d/

  [root@localhost mysql]# chmod +x /etc/rc.d/init.d/mysql.server

  [root@localhost mysql]# chkconfig --add mysql.server

MySQL-Cluster架构图文详解_bc_08

三、Cluster环境启动

  注意启动顺序:首先是管理节点,然后是NDBD节点,最后是SQL节点。

  1、[MGM]

  [root@localhost ~]# ndb_mgmd -f /var/lib/mysql-cluster/config.ini

  使用ndb_mgm来监听客户端,如下:

  [root@localhost ~]# ndb_mgm

MySQL-Cluster架构图文详解_MySQL_09

2、[NDBD]

  首次启动,则需要添加--initial参数,以便进行NDB节点的初始化工作。在以后的启动过程中,则是不能添加该参数的,否则ndbd程序会清除在之前建立的所有用于恢复的数据文件和日志文件。

  [root@localhost ~]# /usr/local/mysql/bin/ndbd --initial

  如果不是首次启动,则执行下面的命令。

 

  [root@localhost ~]# /usr/local/mysql/bin/ndbd

MySQL-Cluster架构图文详解_MySQL_10

3、[SQLD]

  /usr/local/mysql/bin/mysqld_safe --user=mysql &

MySQL-Cluster架构图文详解_MySQL_11

有可能出现上图问题,是系统数据库创建问题,只需再次创建系统数据库,方法如下:

  [root@localhost mysql]# scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql

  再次启动

 

  /usr/local/mysql/bin/mysqld_safe --user=mysql &

MySQL-Cluster架构图文详解_bc_12


查看管理节点,启动成功

MySQL-Cluster架构图文详解_mysql_13

四、测 试

  1、常规测试:

  在节点4上面:

  为了让表在cluster中正常复制,创建一个表必须使用ndbcluster引擎(engine=ndb Or engine=ndbcluster)方法如下:

  mysql>use test

  mysql>create table teacher(t_id int) engine=ndb;

MySQL-Cluster架构图文详解_bc_14

如果是一个已经存在的表,用alter table修改表的引擎。

 

  mysql>alter table student engine=ndb;

MySQL-Cluster架构图文详解_MySQL_15

插入一条数据:

  mysql>insert into teacher values(133);

  然后在节点5上:

  mysql>select * from teacher;

MySQL-Cluster架构图文详解_bc_16

两个节点数据保持一致,恭喜你,测试成功!

  2、模拟NDB节点Crash:

  在节点2上终止掉NDB进程,然后再分别通过两个SQL节点去访问teacher表,查看是否可以正常访问,数据是否一致。如下:

  查看进程

 

  [root@localhost ~]# ps -ef

MySQL-Cluster架构图文详解_MySQL_17

       [root@localhost ~]# kill 3344

  [root@localhost ~]# ps -ef  

查看管理节点,显示节点2已关闭。

MySQL-Cluster架构图文详解_bc_18

节点4上面:

MySQL-Cluster架构图文详解_mysql_19

节点5上面:

MySQL-Cluster架构图文详解_mysql_20

MySQL-Cluster架构图文详解_bc_21


再回到节点4上面:

MySQL-Cluster架构图文详解_mysql_22

测试成功,当有一个NDB节点Crash后,整个MySQL Cluster环境仍可以正常服务。

  3、模拟SQL节点Crash:

  Kill掉节点4的mysqld进程,然后通过节点5进行访问,如下:

MySQL-Cluster架构图文详解_bc_23

可以看到节点4 Crash之后,节点5仍然可以继续正常服务,测试成功。
 
 
 


  • MySQL-Cluster架构图文详解_MySQL_24

  • 大小: 20.7 KB
  • MySQL-Cluster架构图文详解_mysql_25

  • 大小: 69.8 KB
  • MySQL-Cluster架构图文详解_MySQL_26

  • 大小: 96.2 KB
  • MySQL-Cluster架构图文详解_bc_27

  • 大小: 6.1 KB
  • MySQL-Cluster架构图文详解_mysql_28

  • 大小: 58.2 KB
  • MySQL-Cluster架构图文详解_mysql_29

  • 大小: 119.9 KB
  • MySQL-Cluster架构图文详解_MySQL_30

  • 大小: 139.3 KB
  • MySQL-Cluster架构图文详解_mysql_31

  • 大小: 187.6 KB
  • MySQL-Cluster架构图文详解_MySQL_32

  • 大小: 27.6 KB
  • MySQL-Cluster架构图文详解_mysql_33

  • 大小: 76.8 KB
  • MySQL-Cluster架构图文详解_MySQL_34

  • 大小: 100.9 KB
  • MySQL-Cluster架构图文详解_bc_35

  • 大小: 96.1 KB
  • MySQL-Cluster架构图文详解_mysql_36

  • 大小: 74.6 KB
  • MySQL-Cluster架构图文详解_MySQL_37

  • 大小: 4.7 KB
  • MySQL-Cluster架构图文详解_bc_38

  • 大小: 5.6 KB
  • MySQL-Cluster架构图文详解_bc_39

  • 大小: 7.4 KB
  • MySQL-Cluster架构图文详解_bc_40

  • 大小: 103.3 KB
  • MySQL-Cluster架构图文详解_MySQL_41

  • 大小: 95.2 KB
  • MySQL-Cluster架构图文详解_mysql_42

  • 大小: 12.1 KB
  • MySQL-Cluster架构图文详解_MySQL_43

  • 大小: 57.4 KB
  • MySQL-Cluster架构图文详解_bc_44

  • 大小: 5.1 KB
  • MySQL-Cluster架构图文详解_bc_45

  • 大小: 7 KB
  • MySQL-Cluster架构图文详解_bc_46

  • 大小: 18.4 KB
  • 查看图片附件