安哥网络 发表于 2015-2-12 19:39:38

MySQL-Cluster架构图文详解

MySQL-Cluster架构图文详解
前言:这是我第一次接触Linux,CentOS, MySQL,用了5天的时间终于将基于CentOS5.0系统下MySQL-Cluster架构成功,下面将我这些经验分享给大家。若发现有什么错误和疏忽之处,请发邮件给我: stan_home@qq.com。(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键,会自动完成改文件名(前提是这个文件或文件夹必须存在); 例如:输入# tar –xzvf mysql-c按一下Tab键自动完成:# tar –xzvf mysql-cluster-gpl-7.1.13-linux-i686-glibc23.tar.gz
下面,我们一起来架构吧!
一、配置环境:OS:Linux CentOS 5.0MySQL: mysql-cluster-gpl-7.1.13-linux-i686-glibc23.tar.gz (注意:需用Cluster版本,可在官网上下载 http://dev.mysql.com/downloads/cluster/#downloads)
节点配置情况:MGM:192.168.20.231NDBD1:192.168.20.232NDBD2:192.168.20.233SQL1:192.168.20.234SQL2:192.168.20.235

修改CentOS IP地址(1)打开/etc/sysconfig/network-scripts/ifcfg-eth0文件,做如下修改# Intel Corporation 82545EM Gigabit Ethernet Controller (Copper)DEVICE=eth0BOOTPROTO=staticONBOOT=yesHWADDR=00:0c:29:be:b3:53IPADDR=192.168.20.231NETMASK=255.255.255.0GATEWAY=192.168.20.1
(2)修改/etc/resolv.conf文件, 如下(修改DNS服务)nameserver 202.101.172.35search localdomain(3)重启网络服务# service network restart
二、软件安装:(一)管理节点MGM配置管理节点首先在合适的位置,创建一个管理节点的配置文件,步骤如下:# mkdir /var/lib/mysql-cluster# cd /var/lib/mysql-cluster# vi config.ini配置文件config.ini内容如下:NoOfReplicas=2DataMemory=80MIndexMemory=18M
portnumber=2202
hostname=192.168.20.231datadir=/var/lib/mysql-cluster
hostname=192.168.20.232datadir=/usr/local/mysql/data
hostname=192.168.20.233datadir=/usr/local/mysql/data
hostname=192.168.20.234
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 目录下。# cd /var/tmp# tar –xzvf mysql-cluster-gpl-7.1.13-linux-i686-glibc23.tar.gz# cd mysql-cluster-gpl-7.1.13-linux-i686-glibc23# cp bin/ndb_mgm* /usr/local/bin
2、改变路径为拷贝到的目录下,并确保这两个文件可执行。
# cd /usr/local/bin# chmod +x ndb_mgm*3、在/usr/local下创建mysql文件夹。
# cd /usr/local# mkdir mysql
(二)、数据节点NDBD和SQL节点配置数据节点NDBD和SQL节点在每一个SQL节点中的/etc目录下找到my.cnf文件,并做如下配置: socket=/usr/local/mysql/sock/mysql.sock
ndbclusterdatadir=/usr/local/mysqlsocket=/usr/local/mysql/sock/mysql.sockndb-connectstring=192.168.20.231old_passwords=1
ndb-connectstring=192.168.20.231
在每一个数据节点NDBD和SQL节点的机器上,用root用户执行下面的步骤。1、检查/etc/passwd 和 /etc/group 文件,是否存在mysql组和mysql用户,如果没有,用下面的命令创建一个mysql组,并在改组中添加mysql用户。# groupadd mysql# useradd –g mysql mysql 2、改变文件夹位置到mysql压缩包的存放位置,解压文件,准备安装,步骤如下:(下载文件可以从IT论坛电脑映射, 在/home/下面创建一个download文件夹,如果是在本机Linux下下载的文件,则不需要此映射步骤。)# mount -t cifs -o username="name",password="password" //192.168.20.210/MySQL /home/download cp /home/download/ mysql-cluster-gpl-7.1.13-linux-i686-glibc23.tar.gz /var/tmp# cd /var/tmp# tar –C /usr/local –xzvf mysql-cluster-gpl-7.1.13-linux-i686-glibc23.tar.gz
3、改变位置到local文件夹,改变mysql解压后的文件夹名称为mysql,然后执行提供的脚本,创建系统数据库。# cd /usr/local# mv mysql-cluster-gpl-7.1.13-linux-i686-glibc23/ mysql/# cd mysql # mkdir sock# scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql
4、为MySQL服务及数据目录设置必要的服务。# chown -R root .# chown -R mysql.mysql /usr/local/mysql/data# chown -R mysql.mysql /usr/local/mysql/sock# chgrp -R mysql .# ls -l
5、复制MySQL的启动脚本到如下的文件夹,确保可以执行。并设置为当系统启动时,同时启动MySQL。# cp support-files/mysql.server /etc/rc.d/init.d/# chmod +x /etc/rc.d/init.d/mysql.server# chkconfig --add mysql.server
三、Cluster环境启动注意启动顺序:首先是管理节点,然后是NDBD节点,最后是SQL节点。1、# ndb_mgmd -f /var/lib/mysql-cluster/config.ini使用ndb_mgm来监听客户端,如下:# ndb_mgm
2、首次启动,则需要添加--initial参数,以便进行NDB节点的初始化工作。在以后的启动过程中,则是不能添加该参数的,否则ndbd程序会清除在之前建立的所有用于恢复的数据文件和日志文件。# /usr/local/mysql/bin/ndbd --initial如果不是首次启动,则执行下面的命令。# /usr/local/mysql/bin/ndbd
3、/usr/local/mysql/bin/mysqld_safe --user=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 testmysql>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表,查看是否可以正常访问,数据是否一致。如下:查看进程# ps -ef
# kill 3344# ps -ef 查看管理节点,显示节点2已关闭。
节点4上面: 在节点5上面: 再回到节点4上面: 测试成功,当有一个NDB节点Crash后,整个MySQL Cluster环境仍可以正常服务。
3、模拟SQL节点Crash:Kill掉节点4的mysqld进程,然后通过节点5进行访问,如下: 可以看到节点4 Crash之后,节点5仍然可以继续正常服务,测试成功。

MySQL-Cluster架构图文详解
摘自:http://www.cnblogs.com/StanBlogs/archive/2011/06/14/2080986.html
页: [1]
查看完整版本: MySQL-Cluster架构图文详解