MySQL-Cluster架构图文详解

这是我第一次接触Linux,CentOS, MySQL,用了5天的时间终于将基于CentOS5.0系统下MySQL-Cluster架构成功,下面将我这些经验分享给大家。

  注:本文经过整理,有些精简。

  原文链接:http://www.cnblogs.com/StanBlogs/archive/2011/06/14/2080986.html

  PDF图文版下载地址:http://download.csdn.net/source/3365704

  配置之前,先补充一些Linux常用命令:

  ls 浏览

  ls -l 查看文件夹及文件权限

  vi 文本编辑器(搜索、编辑)

  i 状态为修改

  退出:“Esc”键后,然后输入":",然后输入“wq”写入、退出

  :q! 强制退出

  vim -f [文件名] 强制恢复文件

  cp 拷贝文件命令

  rm 删除文件

  mkdir 创建文件夹

  ln 连接问价或目录

  man [命令] 查看命令参数

  ifconfig 网卡信息命令

  dig (域信息搜索器)

  df 查看系统文件

  vmstat 系统状态

  ps 查看进程(-e显示全部,-f全格式输出)

  ps -ef|grep mysql 查看所有mysql进程

  Tips:输入一个文件或文件名,按一下Tab键,会自动完成改文件名(前提是这个文件或文件夹必须存在)。

  例 如:

  输入

  [root@localhost tmp]# tar –xzvf mysql-c

  按一下Tab键自动完成:

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

  下面,我们一起来架构吧!


  一、配置环境:

  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)

  节点配置情况:

  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

  (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


  安装管理节点,不需要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

 

 

  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文件,并做如下配置:

   [ 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


  在每一个数据节点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
 


  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

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

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


  三、Cluster环境启动

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

  1、[MGM]

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

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

  [root@localhost ~]# ndb_mgm

  2、[NDBD]

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

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

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

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

  3、[SQLD]

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


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

   [ 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 &

  查看管理节点,启动成功:

  四、测 试

  1、常规测试:

  在节点4上面:

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

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

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

  mysql > alter   table  student engine = ndb;


  插入一条数据:

  mysql > insert   into  teacher  values ( 133 );

  然后在节点5上:

  mysql > select   *   from  teacher;

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

  2、模拟NDB节点Crash:

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

  查看进程

   [ root@localhost ~ ] # ps  - ef

   [ root@localhost ~ ] kill   3344
  
[ root@localhost ~ ] # ps  - ef 


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

  节点4上面:

  在节点5上面:


  再回到节点4上面:

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

  3、模拟SQL节点Crash:

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值