mysql cluster (mysql 集群)安装配置方案

一、说明

本文参考:http://www.cnblogs.com/jackluo/archive/2013/01/19/2868152.html

1.准备服务器

计划建立有5个节点的MySQL CLuster体系,需要用到5台服务器,但是我们做实验时没有这么多机器,可以只用3台,提供5个节点的MySQL CLuster体系,将SQL节点和数据节点共用一台机器,具体如下。


主机名


节点


对应的IP和端口


DB-mgm


管理节点


10.10.6.201:1186


DB-node1


数据节点


10.10.6.211:2202


DB-node1


SQL节点


10.10.6.211:3306


DB-node2


数据节点


10.10.6.212:2202


DB-node2


SQL节点


10.10.6.212:3306

2.准备软件包

现在的mysql提供了一个专门作集群的安装包,这样就不用一个个的下载所需要的工具了。从官网下载。

http://cdn.mysql.com/Downloads/MySQL-Cluster-7.4/mysql-cluster-gpl-7.4.5-linux-glibc2.5-x86_64.tar.gz

二、安装

(一)数据节点和SQL节点(各两台)

1.添加mysql用户和组,这是必需的。

[[email protected] ~]# groupadd mysql

[[email protected] ~]# useradd -g mysql mysql

[[email protected] ~]#

2.开始安装,下载的版本是免编译的,复制过来就可以用了。

[[email protected] ~]# http://cdn.mysql.com/Downloads/MySQL-Cluster-7.4/mysql-cluster-gpl-7.4.5-linux-glibc2.5-x86_64.tar.gz
[[email protected] ~]# tar -zxvf mysql-cluster-gpl-7.4.5-linux-glibc2.5-x86_64.tar.gz -C /usr/local/

[[email protected] ~]# ln -sv /usr/local/mysql-cluster-gpl-7.4.5-linux-glibc2.5-x86_64/ /usr/local/mysql

[[email protected] ~]#

3.修改目录权限,这也是必需的,不然第四步会报错的。

[[email protected] ~]# chown -R mysql.root /usr/local/mysql

[[email protected] ~]# chown -R mysql.root /usr/local/mysql/

[[email protected] ~]#

4.安装初始的数据库表

[[email protected] ~]# /usr/local/mysql/scripts/mysql_install_db --user=mysql

FATAL ERROR: Could not find ./bin/my_print_defaults

If you compiled from source, you need to run ‘make install‘ to

copy the software into the correct location ready for operation.

If you are using a binary release, you must either be at the top

level of the extracted archive, or pass the --basedir option

pointing to that location.

如果出现上面错误,说明没有指定mysql目录,需手工指定。

解决方法

[[email protected] ~]# /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/

5.设置mysql服务为开机自启动并启动

[[email protected] ~]# cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld

[[email protected] ~]# chmod +x /etc/rc.d/init.d/mysqld

[[email protected] ~]# chkconfig --add mysqld

[[email protected] ~]# chkconfig --list mysqld

mysqld          0:off   1:off   2:on    3:on    4:on    5:on    6:off

[[email protected] ~]#

[[email protected] ~]# service mysqld start

到这一步,在数据节点和SQL节点上就算安装好了。

(二)管理节点

管理节点的安装更简单,只要在数据节点和SQL节点服务器上复制些文件出来就行了,虽然只有一步,[[email protected] ~]# scp 10.10.6.211:/usr/local/mysql/bin/ndb_mgm* /usr/local/bin/

[[email protected] ~]# ll /usr/local/bin/ndb*

-rwxr-xr-x 1 root root  7137184 Apr 13 09:45 /usr/local/bin/ndb_mgm

-rwxr-xr-x 1 root root 16336025 Apr 13 09:45 /usr/local/bin/ndb_mgmd

[[email protected] ~]#

管理节点只要ndb_mgm和ndb_mgmd两个文件和一个配置文件即可,因此把这三个文件复制到那里,那里就是管理节点了。ndb_mgmd是mysql cluster管理服务器,ndb_mgm是客户端管理工具,等一下会用到它们的。到目前为止两个SQL节点两个数据节点和一个管理节点都安装完成了,但是还不能工作,得进行配置,把这几个节点联系在一起协同工作。

三、配置

(一)数据节点和SQL节点(各两台)

mysql服务启动时会默认加载/etc/my.cnf作为其配置文件,要将一个mysql服务器配置成一个数据节点和SQL节点也非常的简单:

只要在内容结尾加上下面4行就将这个mysql服务器变成了一个数据节点和SQL节点。

ndbcluster                             \\运行NDB存储引擎

ndb-connectstring=10.10.6.201          \\指定管理节点  这两行声明其为SQL节点

[mysql_cluster]

ndb-connectstring=10.10.6.201          \\指定管理节点  这两行声明其为数据节点

新建mysql的配置文件

[[email protected] ~]# vi /etc/my.cnf

[[email protected] ~]# more /etc/my.cnf

[client]

port=3306

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

[mysqld]

basedir=/usr/local/mysql/

datadir=/usr/local/mysql/data

user= mysql

pid-file=/usr/local/mysql/mysqld.pid

log-error=/usr/local/mysql/mysqld.err

以下四行为新增加内容

ndbcluster                             \\运行NDB存储引擎

ndb-connectstring=10.10.6.201          \\指定管理节点  这两行声明其为SQL节点

[mysql_cluster]

ndb-connectstring=10.10.6.201          \\指定管理节点  这两行声明其数据节点

[[email protected] ~]#

注意两台服务器都得这样配置。

(二)管理节点

管理节点的配置复杂一点,在管理服务器/usr/local/mysql/目录中创建config.ini文件。

网上说 使用mysql-cluster,但是启动时 总时有如下提示:

[[email protected] ~]# ndb_mgmd -f /usr/local/mysql-cluster/config.ini

MySQL Cluster Management Server mysql-5.6.23 ndb-7.4.5

2015-04-13 14:13:28 [MgmtSrvr] INFO     -- The default config directory ‘/usr/local/mysql/mysql-cluster‘ does not exist. Trying to create it...

Failed to create directory ‘/usr/local/mysql/mysql-cluster‘, error: 2

2015-04-13 14:13:28 [MgmtSrvr] ERROR    -- Could not create directory ‘/usr/local/mysql/mysql-cluster‘. Either create it manually or specify a different directory with --configdir=<path>

[[email protected] ~]#

最后改成了/usr/local/mysql,就可以了

[[email protected] ~]# mkdir /usr/local/mysql

[[email protected] ~]# vi /usr/local/mysql/config.ini

[[email protected] ~]# more /usr/local/mysql/config.ini

[NDBD DEFAULT]

NoOfReplicas=1           \\每个数据节点的镜像数量

DataMemory=500M          \\每个数据节点中给数据分配的内存

IndexMemory=300M         \\每个数据节点中给索引分配的内存

[TCP DEFAULT]

portnumber=2202          \\数据节点的默认连接端口

[NDB_MGMD]               \\配置管理节点

hostname=10.10.6.201

datadir=/usr/local/mysql/            \\管理节点数据(日志)目录

[NDBD]

hostname=10.10.6.211                  \\数据节点配置

datadir=/usr/local/mysql/data/        \\数据节点目录

[NDBD]

hostname=10.10.6.212

datadir=/usr/local/mysql/data/

[MYSQLD]                             \\SQL节点目录

hostname=10.10.6.211

[MYSQLD]

hostname=10.10.6.212

[[email protected] ~]#

[NDBD DEFAULT]:表示每个数据节点的默认配置在每个节点的[NDBD]中不用再写这些选项,只能有一个。
[NDB_MGMD]:表示管理节点的配置,只有一个。
[NDBD]:表示每个数据节点的配置,可以有多个。
[MYSQLD]:表示SQL节点的配置,可以有多个,分别写上不同SQL节点的IP地址,也可以什么都不写,只保留一个空节点,表示任意一个IP地址都可以进行访问,此节点的个数表明了可以用来连接数据节点的SQL节点总数。

四、启动

(一)管理节点

1.启动管理节点

mysql cluster 需要各个节点都 进行启动后才可以工作,节点的启动顺序为管理节点->数据节点->SQL节点。首先启动管理节点

[[email protected] ~]# ndb_mgmd -f /usr/local/mysql/config.ini

MySQL Cluster Management Server mysql-5.6.23 ndb-7.4.5

2015-04-13 14:14:14 [MgmtSrvr] INFO     -- The default config directory ‘/usr/local/mysql/mysql-cluster‘ does not exist. Trying to create it...

2015-04-13 14:14:14 [MgmtSrvr] INFO     -- Sucessfully created config directory

2015-04-13 14:14:14 [MgmtSrvr] WARNING  -- at line 7: [TCP] portnumber is deprecated

[[email protected] ~]#

[[email protected] ~]# echo "/usr/local/bin/ndb_mgmd -f /usr/local/mysql/config.ini "  >>/etc/rc.local

[[email protected] ~]#

命令行中的ndb_mgmd是mysql cluster的管理服务器,后面的-f表示后面的参数是启动的参数配置文件。如果在启动后过了几天又添加了一个数据节点,这时修改了配置文件启动时就必须加上--initial参数,不然添加的节点不会作用在mysql cluster中。

./ndb_mgmd -f /var/lib/mysql-cluster/config.ini --initial

启动时可能会报个WARNING,如WARNING  -- at line 7: [TCP] portnumber is deprecated,这个不用管。可以正常工作的。

2.查看有无启动成功

[[email protected] ~]# ls /usr/local/mysql/

config.ini  mysql-cluster  ndb_1_cluster.log  ndb_1_out.log  ndb_1.pid

[[email protected] ~]#

[[email protected] ~]# netstat -tlnp | grep 1186

tcp        0      0 0.0.0.0:1186                0.0.0.0:*                   LISTEN      3075/ndb_mgmd

[[email protected] ~]# ndb_mgm

-- NDB Cluster -- Management Client --

ndb_mgm> show

Connected to Management Server at: localhost:1186

Cluster Configuration

---------------------

[ndbd(NDB)]     2 node(s)

id=2 (not connected, accepting connect from 10.10.6.211)

id=3 (not connected, accepting connect from 10.10.6.212)

[ndb_mgmd(MGM)] 1 node(s)

id=1    @10.10.6.201  (mysql-5.6.23 ndb-7.4.5)

[mysqld(API)]   2 node(s)

id=4 (not connected, accepting connect from 10.10.6.211)

id=5 (not connected, accepting connect from 10.10.6.212)

ndb_mgm> exit

[[email protected] ~]#

(二)数据节点(两台)

安装后第一次启动数据节点时要加上--initial参数,其它时候不要加,除非是在备份、恢复或配置变化后重启时。

[[email protected] ~]# /usr/local/mysql/bin/ndbd --initial

2015-04-13 14:49:59 [ndbd] INFO     -- Angel connected to ‘10.10.6.201:1186‘

2015-04-13 14:49:59 [ndbd] INFO     -- Angel allocated nodeid: 2

[[email protected] ~]# netstat -tlnp |grep 2202

tcp        0      0 10.10.6.211:2202            0.0.0.0:*                   LISTEN      14780/ndbd

[[email protected] ~]#

[[email protected] ~]# echo /usr/local/mysql/bin/ndbd >>/etc/rc.local

[[email protected] ~]#

(三)SQL节点(两台)

[[email protected] ~]# service  mysqld start

Starting MySQL SUCCESS!

[[email protected] ~]#

(四)客户端管理

这时就进入到客户端或管理节点,可以对mysql cluster进行各项操作,进入后会有ndb_mgm > 提示符出现,首先来查看各节点的连接情况,在ndb_mgm> 提示符下输入show:

[[email protected] ~]# ndb_mgm

-- NDB Cluster -- Management Client --

ndb_mgm> show

Connected to Management Server at: localhost:1186

Cluster Configuration

---------------------

[ndbd(NDB)]     2 node(s)

id=2    @10.10.6.211  (mysql-5.6.23 ndb-7.4.5, Nodegroup: 0, *)

id=3    @10.10.6.212  (mysql-5.6.23 ndb-7.4.5, Nodegroup: 1)

[ndb_mgmd(MGM)] 1 node(s)

id=1    @10.10.6.201  (mysql-5.6.23 ndb-7.4.5)

[mysqld(API)]   2 node(s)

id=4    @10.10.6.211  (mysql-5.6.23 ndb-7.4.5)

id=5    @10.10.6.212  (mysql-5.6.23 ndb-7.4.5)

ndb_mgm> exit

可以看到各个节点已经连接上了,至此,mysql cluster配置完成。

(五)关闭

mysql cluster的关闭也很简单,只需在ndb_mgm> 提示符下输入 shutdown即可,这时会显示各节点的关闭信息,再输入exit即可退出ndb_mgm管理,回到shell中。虽然mysql cluster 关闭了,但是SQL节点的mysql服务并不会停止的。接下来就可以做各种试验了。

五、测试

(一)在一个SQL节点新建一个测试数据库,jedy_db

[[email protected] mysql]# /usr/local/mysql/bin/mysql

mysql> create database jedy_db;

Query OK, 1 row affected (0.10 sec)

mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| jedy_db            |

| mysql              |

| ndb_2_fs           |

| ndbinfo            |

| performance_schema |

| test               |

+--------------------+

7 rows in set (0.05 sec)

mysql> \q

Bye

[[email protected] mysql]#

(二)在另一个SQL节点查看

[[email protected] mysql]# /usr/local/mysql/bin/mysql

mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| jedy_db            |

| mysql              |

| ndb_3_fs           |

| ndbinfo            |

| performance_schema |

| test               |

+--------------------+

7 rows in set (0.06 sec)

mysql> \q

Bye

[[email protected] mysql]#

所有配置完成

时间: 2024-07-28 21:11:48

mysql cluster (mysql 集群)安装配置方案的相关文章

mysql cluster (mysql 集群)安装配置方案(转)

一.准备 1.准备服务器 计划建立有5个节点的MySQL CLuster体系,需要用到5台服务器,但是我们做实验时没有这么多机器,可以只用2台,我就是一台本机,一台虚拟机搭建了有5个节点的MySQL CLuster体系,将一个SQL节点一个数据节点一个SQL节点放在了一台服务器上(192.168.1.252),将另一个SQL节点和一个数据节点放在了另外一台服务器上(192.168.1.52). 节点配置说明 节点 对应的IP和端口 管理节点(1个) 192.168.1.252 SQL节点 (2个

LVS+Keepalived+Squid+Nginx+MySQL主从高性能集群架构部署方案

方案一,在tomcat的workers.properties里面配置相关条件 worker.tomcat.lbfactor=50 worker.tomcat.cachesize=10 worker.tomcat.cache_timeout=600 worker.tomcat.socket_keepalive=1 worker.tomcat.socket_timeout=300 Linux内核优化: vi /etc/sysctl.conf   # 编辑sysctl.conf文件添加以下内容net.

MySQL Study之--MySQL Cluster(集群)构建

MySQL Study之--MySQL Cluster(集群)构建 一.Mysql Cluster概述与部署 MySql Cluster最显著的优点就是高可用性,高实时性,高冗余,扩展性强. 它允许在无共享的系统中部署"内存中"数据库的Cluster.通过无共享体系结构,系统能够使用廉价的硬件.此外,由于每个组件有自己的内存和磁盘,所以不存在单点故障. 它由一组计算机构成,每台计算机上均运行者多种进程,包括mysql服务器,NDB cluster的数据节点,管理服务启,以及专门的数据访

LVS+Keepalived+Squid+Nginx+MySQL主从 高性能集群架构配置

原文地址:LVS+Keepalived+Squid+Nginx+MySQL主从 高性能集群架构配置 作者:gron 原文链接:http://www.linuxidc.com/Linux/2012-07/65547.htm 架构图 先进行优化 vi /etc/sysctl.conf   # 编辑sysctl.conf文件添加以下内容 net.ipv4.tcp_rmem = 4096 87380 4194304 net.ipv4.tcp_wmem = 4096 65536 4194304 net.c

高可用RabbitMQ集群安装配置

RabbitMQ集群安装配置+HAproxy+Keepalived高可用 rabbitmq 集群 消息队列 RabbitMQ简介 RabbitMQ是流行的开源消息队列系统,用erlang语言开发.RabbitMQ是AMQP(高级消息队列协议)的标准实现. AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计.消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然.AMQP的主

elk集群安装配置详解

#  一:简介 ``` Elasticsearch作为日志的存储和索引平台: Kibana 用来从 Elasticsearch获取数据,进行数据可视化,定制数据报表: Logstash 依靠强大繁多的插件作为日志加工平台: Filebeat 用来放到各个主机中收集指定位置的日志,将收集到日志发送到 Logstash: Log4j 直接与 Logstash 连接,将日志直接 Logstash(当然此处也可以用 Filebeat 收集 tomcat 的日志). ``` ####  port ```

Hadoop集群安装配置文档

Hadoop集群安装配置文档 日期 内容 修订人 2015.6.3 文档初始化 易新             目录 1 文档概要... 5 1.1软件版本... 5 1.2机器配置... 5 2 虚拟机配置... 5 2.1新建虚拟机... 5 2.2虚拟网络配置... 8 3 CentOS安装及配置... 9 3.1系统安装... 9 3.2系统配置... 10 3.2.1防火墙配置... 10 3.2.2 SElinux配置... 10 3.2.3 IP配置... 11 3.2.4安装vim

Hadoop2.2集群安装配置-Spark集群安装部署

配置安装Hadoop2.2.0 部署spark 1.0的流程 一.环境描写叙述 本实验在一台Windows7-64下安装Vmware.在Vmware里安装两虚拟机分别例如以下 主机名spark1(192.168.232.147),RHEL6.2-64 操作系统,usernameRoot 从机名spark2(192.168.232.152).RHEL6.2-64 操作系统,usernameRoot 二.环境准备 1.防火墙禁用.SSH服务设置为开机启动.并关闭SELINUX 2.改动hosts文件

spark集群安装配置

spark集群安装配置 一. Spark简介 Spark是一个通用的并行计算框架,由UCBerkeley的AMP实验室开发.Spark基于map reduce 算法模式实现的分布式计算,拥有Hadoop MapReduce所具有的优点:但不同于Hadoop MapReduce的是Job中间输出和结果可以保存在内存中,从而不再需要读写HDFS,节省了磁盘IO耗时,性能比Hadoop更快. 所以,相对来说Hadoop更适合做批处理,而Spark更适合做需要反复迭代的机器学习.下面是我在ubuntu1