MySql集群配置
时间:2010-09-05 来源:zhjkzjf
根据老大技术储备的安排,近段时间搞了一下MySql集群,现在把配置的过程和大家分享一下。
首先去http://www.mysql.com/downloads/cluster#downloads下载MySql的集群版本。原来在网上查了好多说明,都是说用什么MySql的max版本,你抄我的我抄你的,都是不能用。好了,废话不多说,一下是配置过程。
我下载的版本是mysql-cluster-gpl-7.1.3的linux版本。
一、检查linux环境:
检查监控端口(1186)和数据端口(3306)是否打开。第一次配置的时候,1186被防火墙关闭,怎么也不成功,后来关了防火墙好了。
二、配置管理节点:
1、解压下载的MySql压缩包,tar -zxvf MySql.tar.gz(文件名是你下载的文件的名称)
2、把解压后的目录复制到/usr/local/mysql下
3、在mysql下创建mysql-cluster文件夹,进入文件夹,创建config.ini文件,在文件中写入以下内容:
# Options affecting ndbd processes on all data nodes:
[NDBD DEFAULT]
NoOfReplicas=2 # Number of replicas
DataMemory=80M # How much memory to allocate for data storage
IndexMemory=18M # How much memory to allocate for index storage
# For DataMemory and IndexMemory, we have used the
# default values. Since the "world" database takes up
# only about 500KB, this should be more than enough for
# this example Cluster setup.
# TCP/IP options:
[TCP DEFAULT]
portnumber=1186 # This the default; however, you can use any
# port that is free for all the hosts in cluster
# Note: It is recommended beginning with MySQL 5.0 that
# you do not specify the portnumber at all and simply allow
# the default value to be used instead
# Management process options:
[NDB_MGMD]
hostname=192.168.81.129 # Hostname or IP address of MGM node
datadir=/usr/local/mysql/mysql-cluster # Directory for MGM node logfiles
# Options for data node "A":
[NDBD]
hostname=192.168.81.130 # Hostname or IP address
datadir=/usr/local/mysql/data # Directory for this data node's datafiles
# Options for data node "B":
[NDBD]
hostname=192.168.81.131 # Hostname or IP address
datadir=/usr/local/mysql/data # Directory for this data node's datafiles
# SQL node options:
[MYSQLD]
hostname=192.168.81.132
[MYSQLD]
hostname=192.168.81.133
其中,NoOfReplicas表示一个数据在几个存储节点存储,推荐设为2,这样的话,在一个服务器出错的情况下,数据还能正常处理。其他的内存大小的设置,根据具体情况设置,我是在本地装的虚拟机,没有做具体的测试。
4、启动管理节点:
进入mysql的bin目录下,执行./ndb_mgmd -f /var/lib/mysql-cluster/config.ini(在以后修改ndb_1_config.bin.1,然后重启管理节点即可)
想查看mysql集群,执行bin目录下的ndb_mgm,在里面输入show命令就可以查看当前的状态。
三、安装存储节点(NDBD)和SQL节点:
安装存储节点和SQL节点都执行如下操作:
1、创建mysql用户组和mysql用户:
groupadd mysql
useradd -g mysql mysql
2、解压mysql文件压缩包
tar -zxvf mysql.tar.gz
然后把解压后的目录复制为/usr/local/mysql目录
3、把mysql目录下的data文件夹的权限设为mysql:mysql执行命令chown mysql:mysql data
4、初始化mysql数据库,在mysql目录下执行./scripts/mysql_install_db --user=mysql
5、在/etc下创建my.cnf文件,并写入以下内容:
# Options for mysqld process:
[MYSQLD]
ndbcluster # run NDB engine
ndb-connectstring=192.168.81.129 # location of MGM node
# Options for ndbd process:
[MYSQL_CLUSTER]
ndb-connectstring=192.168.81.129 # location of MGM node
四、启动NDBD节点:
在mysql的bin目录下,执行./ndbd --initial启动存储节点(第一次启动时,加上initial参数,以后就不用了)
五、启动SQL节点:
在mysql的斌目录下,执行./mysqld --user=mysql命令启动SQL节点(为了启动时的方便,可以把user=mysql写入/etc/my.conf文件中)
通过管理节点查看成功后的状态:
ndb_mgm> show
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 @192.168.81.130 (mysql-5.1.41 ndb-7.0.13, Nodegroup: 0, Master)
id=3 @192.168.81.131 (mysql-5.1.41 ndb-7.0.13, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.81.129 (mysql-5.1.41 ndb-7.0.13)
[mysqld(API)] 2 node(s)
id=4 @192.168.81.132 (mysql-5.1.41 ndb-7.0.13)
id=5 @192.168.81.133 (mysql-5.1.41 ndb-7.0.13) 注意,在SQL节点中创建表的时候,引擎必须为ndbcluster,否则,无法同步。
以下为在配置过程中遇到的一些问题及原因,与大家分享:
1、提示存储节点连接成功,但是管理节点查看状态,两个节点都为(Nodegroup: 0),并且跟踪mysql-cluster下的log, 两个存储节点一直交替提示正在连接。 原因:管理节点和存储节点的1186端口别防火墙屏蔽,无法正常传递信息。 2、创建表时,表引擎虽然指定为ndbcluster,但是提示无法创建表(不好意思,具体提示的信息忘了) 原因:是SQL节点的1186和3306端口没有打开,找不到管理节点的时候,提示无法创建。 偶觉得提示的错误信息有歧义,当时查了好多资料都说没有写的权限。郁闷了好一阵子。