CentOS 6.5上安装MySQL-Cluster

CentOS 6.5上安装MySQL-Cluster

参考博文:

CentOS 6.2下MySQL Cluster 7.2 配置数据库集群   

CentOS 6.5上安装MySQL-Cluster 7.3.4过程笔记--下一步学习

MySQL Cluster Installation 官方文档地址: http://dev.mysql.com/doc/refman/5.6/en/mysql-cluster-installation.html

Mysql Cluster7.4.6安装与配置   参考这篇博文配置

  

一、Mysql Cluster概述

MySql Cluster最显著的优点就是高可用性,高实时性,高冗余,扩展性强。

它允许在无共享的系统中部署"内存中"数据库的Cluster.通过无共享体系结构,系统能够使用廉价的硬件.此外,由于每个组件有自己的内存和磁盘,所以不存在单点故障.

它由一组计算机构成,每台计算机上均运行着多种进程,包括mysql服务器,NDB cluster的数据节点,管理服务启,以及专门的数据访问程序

所有的这些节点构成一个完整的mysql集群体系.数据保存在"NDB存储服务器"的存储引擎中,表(结构)则保存在"mysql服务器"中.应用程序通过"mysql服务器"访问这些数据表,集群管理服务器通过管理工具(ndb_mgmd)来管理"NDB存储服务器".

基本概念

   "NDB"是一种"内存中"的存储引擎,它具有可用性高和数据一致性好的特点.下面介绍mysql cluster 节点时,它表示进程.在单台计算机上可以有任意数目的节点.

    管理节点(MGM):这类节点的作用是管理mysql cluster内的其他节点,如配置文件和cluster 日志,启动并停止节点,运行备份等.cluster中的每个节点从管理服务器上检索配置数据,并请求管理服务器所在位置的方式.当数据节点内出现新的事件时,节点将关于这类事件的信息传输到管理服务器上,然后,又将这类信息写入cluster日志。由于这类节点负责管理其他节点的配置,所以应在启动其他节点之前首先启动这类节点.MGM节点是用命令"ndb_mgmd"来启动

    数据节点(NDB):这类节点用于保存cluster的数据.数据节点的数目与副本的数目相关,是片段的倍数.假设有2个副本,每个副本有2个片段,那么就有4个数据节点.不过没有必要设置多个副本.数据节点是用命令"ndbd"来启动的.

   SQL节点:这是用来访问cluster数据的节点.对于MYSQL cluster来说,客户端节点是使用NDB cluster存储引擎的传统Mysql服务器.通常,sql节点使用将"ndbcluster"添加到"my.cnf"后使用"mysqld" 启动

   此外,可以有任意数目的cluster客户端进程或应该程序.它们分为两种类型,即标准mysql客户端和管理客户端.

   标准mysql客户端:能够从php,perl,c,c++,java,python,ruby等编写的现有mysql应用程序上访问mysql cluster

   管理客户端:这类客户端与管理服务器相连,并提供了启动和停止节点,启动和停止消息跟踪,显示节点版本和状态,启动和停止备份等命令.

   以下是mysql cluster 架构示意图:

CentOS 6.5上安装MySQL-Cluster_第1张图片

由于Mysql Cluster采用的是TCP/IP方式连接,并且节点之间的数据传输没有加密,最后使用单独的子网里

为了方便 这里我把管理节点,数据节点,sql节点放在一台机器上.

管理节点1 192.168.239.128

数据节点1 192.168.239.128
数据节点2 192.168.239.130

sql节点1 192.168.239.128
sql节点2 192.168.239.130

、Mysql Cluster下载安装

1.1下载安装

1、下载,这里为了方便安装过程,这里直接使用了RPM包来安装,避开了编译安装的痛苦:
 首先先到www.msyql.com下载如下的RPM安装包 (http://dev.mysql.com/downloads/cluster/);选择:Linux - Generic (注意:是  mysql-cluster-gpl-7.4.10-linux-glibc2.5-x86_64.tar.gz)

2、环境清理及安装

       清理CentOS6.5自带的mysql服务,其中第一个命令我不执行也可以,其他系统如果不可以,还是建议执行   参考:如何卸载rpm包

      ( 创建用户群,groupadd mysql , 创建用户,useradd -g mysql mysql  )

3、解压缩Mysql Cluster包到 /usr/local 注意权限设置

tar -C /usr/local -xzvf mysql-cluster-gpl-7.4.10-linux-glibc2.5-x86_64.tar.gz
cd /usr/local/
ln -s /usr/local/mysql-cluster-gpl-7.4.10-linux-glibc2.5-x86_64 /usr/local/mysql #这么改是因为 后续中 启动函数调用目录是 mysql
chown -R mysql:mysql /usr/local/mysql -R 
cd mysql

  4、开始安装

scripts/mysql_install_db --user=mysql # 安装mysql-cluster 
cp support-files/mysql.server /etc/rc.d/init.d/mysqld # 注册mysql的service

chmod +x /etc/rc.d/init.d/mysqld
chkconfig --add mysqld
运行service mysqld start 即可启动mysql  #暂时不启动

1.2 开始配置

一、管理节点安装步骤:

1.在管理节点服务器完成上述sql节点和ndb节点安装步骤后,输入cd /usr/local/mysql进入目录
2.cp bin/ndb_mgm* /usr/local/bin
3.cd /usr/local/bin
4.chmod +x ndb_mgm*

三、配置sql节点和ndb节点

mysql服务启动时会默认加载/etc/my.cnf作为其配置文件,要将一个mysql服务器配置成一个数据节点和SQL节点也非常的简单,这是配置前的my.cnf的内容:
1.[client]
port=3306
socket=/tmp/mysql.sock
[mysqld]
basedir=/usr/local/mysql/
datadir=/usr/local/mysql/data
user= mysql
log-error=/var/lib/mysql/mysqld.err

2.在此基础上在最下方分别加入以下语句:
a) 如果是NDB服务器的情况下输入:
ndbcluster
ndb-connectstring=192.168.239.128
b) 如果是SQL节点服务器的情况下输入
[mysql_cluster]
ndb-connectstring=192.168.239.128
注意所有服务器必须具有相同的配置

配置后my.cnf文件如下:

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html

[client]
port=3306
socket=/tmp/mysql.sock

[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin

basedir=/usr/local/mysql/
datadir=/usr/local/mysql/data
user = mysql
log-error=/var/lib/mysql/mysqld.err

# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M

# Disabling symbolic-links is recommended to prevent assorted security risks

# Recommended in standard MySQL setup
ndbcluster
ndb-connectstring=192.168.239.128

[mysql_cluster]
ndb-connectstring=192.168.239.128

#[mysqld_safe]
#log-error=/var/lib/mysql/mysqld.err
#pid-file=/var/run/mysqld/mysqld.pid

三、管理节点服务器的配置

1.cd /var/lib
2.mkdir mysql-cluster
3.vi config.ini,创建配置文件
4.在config.ini文件中添加以下内容:(由于报错把注释去掉了 去掉注释的在后面)

[NDBD DEFAULT]
#每个数据节点的镜像数量
NoOfReplicas=1
#每个数据节点中给数据分配的内存
DataMemory=500M
#每个数据节点中给索引分配的内存
IndexMemory=300M

[TCP DEFAULT]
#数据节点的默认连接端口
portnumber=2202

#配置管理节点
[NDB_MGMD]
#MGM1       
hostname=192.168.239.128
#管理节点数据(日志)目录
datadir=/var/lib/mysql-cluster/

#数据节点配置
[NDBD]
#NDB1
hostname=192.168.239.128
#数据节点目录
datadir=/usr/local/mysql/data/

[NDBD]
#NDB2
hostname=192.168.239.130
datadir=/usr/local/mysql/data/

#SQL节点目录
[MYSQLD]
#SQL1
hostname=192.168.239.128

[MYSQLD]
#SQL2
hostname=192.168.239.130

//启动时报错

2014-02-25 18:57:04 [MgmtSrvr] ERROR -- at line 1: Value specified outside section
2014-02-25 18:57:04 [MgmtSrvr] ERROR -- at line 1: Could not parse name-value pair in config file.
2014-02-25 18:57:04 [MgmtSrvr] ERROR -- Could not load configuration from '/usr/local/mysql/cluster-conf/config.ini'
2014-02-25 18:57:04 [MgmtSrvr] ERROR -- Could not determine which nodeid to use for this node. Specify it with --ndb-nodeid= on command line
检查是从window下copy到liux下,某些空格失效了。 后来把所有的注释写到单独一行好了 

修改错误后结果如下:  (使用id时报错:修改为:NodeId  )

[NDBD DEFAULT]
NoOfReplicas=1
DataMemory=300M
IndexMemory=100M
[TCP DEFAULT]
portnumber=2202
[NDB_MGMD]
NodeId = 1       
hostname=192.168.239.128
datadir=/var/lib/mysql-cluster/
[NDBD]
NodeId = 2
hostname=192.168.239.128
datadir=/usr/local/mysql/data/
[NDBD]
NodeId = 3
hostname=192.168.239.130
datadir=/usr/local/mysql/data/
[MYSQLD]
NodeId = 4
hostname=192.168.239.128
[MYSQLD]
NodeId = 5
hostname=192.168.239.130

 

四、启动
1.管理节点的启动: (注意防火墙开启:3306 和 1186 端口)
a) Mysql cluster需要各个节点进行启动后方能够工作,节点的启动顺序为:管理节点——》NDB数据节点——》Sql节点。因此首先启管理节点
b) cd /usr/local/bin
c) ndb_mgmd -f /var/lib/mysql-cluster/config.ini
d) 注意以上为第一次配置的情况下,如果新增节点,使用./ndb_mgmd -f /var/lib/mysql-cluster/config.ini --initial  进行加载,不然添加的节点不会出现在集群中
e) 启动时可能会报个WARNING,如WARNING -- at line 7: [TCP] portnumber is deprecated,这个不用管。可以正常工作的。
f) 启动后可以使用 ndb_mgm -e show 查看运行状态

2.NDB节点的启动
a) cd /usr/local/bin 注意:如果目录下没有 从/usr/local/mysql/bin 下拷贝过来
b) ./ndbd --initial
c) 如果出现类似以下信息则表明成功连接到管理节点服务器:
2015-06-25 12:48:03 [ndbd] INFO -- Angel connected to 'MGM1:1186'
2015-06-25 12:48:03 [ndbd] INFO -- Angel allocated nodeid: 3

3.SQL节点的启动:
a) service mysqld start
//启动时报错
Starting MySQL....................... ERROR! The server quit without updating PID file (/var/local/mysql/data/localhost.localdomain.pid).

[root@localhost bin]# ps -A|grep mysql
2336 ? 00:00:00 mysql-proxy
2340 ? 00:01:02 mysql-proxy
3047 ? 00:00:00 mysqld_safe
3150 ? 00:01:50 mysqld
[root@localhost bin]# kill 3150

后来发现是 my.cnf 中  datadir=/usr/local/mysql/data 写成了 datadir=/var/local/mysql/data   改过了就好了

4.客户端管理
a) 在管理服务器中输入cd /usr/local/bin/
b) ./ndb_mgm
c) 在ndb_mgm> 提示符下输入show:

ndb_mgm> show
ClusterConfiguration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 @NDB1 (mysql-5.6.24 ndb-7.4.6,Nodegroup:0,Master)
id=3 @NDB2 (mysql-5.6.24 ndb-7.4.6,Nodegroup:1)
[ndb_mgmd(MGM)]1 node(s)
id=1 @MGM1 (mysql-5.6.24 ndb-7.4.6)
[mysqld(API)] 2 node(s)
id=4 @SQL1 (mysql-5.6.24 ndb-7.4.6)
id=5 @SQL2 (mysql-5.6.24 ndb-7.4.6)

我的显示如下:还有问题

[root@localhost mysql-cluster]# /usr/local/bin/ndb_mgm
-- NDB Cluster -- Management Client --
ndb_mgm> show
Connected to Management Server at: 192.168.239.128:1186
Cluster Configuration
---------------------
[ndbd(NDB)]    2 node(s)
id=2 (not connected, accepting connect from 192.168.239.128)
id=3 (not connected, accepting connect from 192.168.239.130)

[ndb_mgmd(MGM)]    1 node(s)
id=1    @192.168.239.128  (mysql-5.6.28 ndb-7.4.10)

[mysqld(API)]    2 node(s)
id=4 (not connected, accepting connect from 192.168.239.128)
id=5 (not connected, accepting connect from 192.168.239.130)

5.关闭mysql cluster

a) cd /usr/local/bin
b) ./ndb_mgm -e shutdown
c) 虽然mysql cluster 关闭了,但是SQL节点的mysql服务并不会停止的。接下来就可以做各种试验了。

 

posted @ 2016-01-14 17:51 wuling129 阅读(...) 评论(...) 编辑 收藏

你可能感兴趣的:(负载均衡,php+mysql+数据库相关)