重要说明:mysql-cluste与非集群时用的mysql-server与mysql-client没有任何关系,mysql-cluste安装包中已自带了集群用的server与client,启动mysql也是启动mysql-cluste中的mysql,与原先的mysql-server没有任何关系。

一:基本概念

“NDB” 是一种“内存中”的存储引擎,也是事务型存储引擎,具备ACID属性。

管理(MGM)节点:负责管理MySQL Cluster内的其他节点,如提供配置数据、启动并停止节点、运行备份等。由于这类节点负责管理其他节点的配置,应在启动其他节点之前首先启动这类节点。MGM节点是用命令“ndb_mgmd”启动的。

数据节点:用于保存 Cluster的数据。数据节点的数目与副本的数目相关,是片段的倍数。数据节点是用命令“ndbd”启动的。

SQL节点:用来访问 Cluster数据的节点。也就是Mysql服务,可以使用service mysqld start启动。

管理服务器(MGM节点)负责管理 Cluster配置文件和 Cluster日志。 Cluster中的每个节点从管理服务器检索配置数据,并请求确定管理服务器所在位置的方式。当数据节点内出现新的事件时,节点将关于这类事件的信息传输到管理服务器,然后,将这类信息写入 Cluster日志。

二:mysql-cluste安装包下载

mysql-cluste官方下载地址:http://dev.mysql.com/downloads/cluster/

本文测试下载的版本是linux 64位的tar包

三:集群配置概述

安装版本:mysql cluster 7.4.13

操作系统 :centos6.5(X64)

软件名称 :mysql-cluster-gpl-7.4.13-linux-glibc2.5-x86_64.tar.gz (通用版)

管理节点IP:192.168.1.240

数据节点-SQL节点IP:192.168.1.238

数据节点-SQL节点IP:192.168.1.248

四:安装

不需要安装mysql-server软件了,所以可以关掉mysql服务

在集群中的所有主机上安装mysql-cluster集群软件

mysql-cluster软件提供3种进程:

1,mysqld进程:供用户访问和执行sql语句

2,数据进程ndbd:存储数据

3,管理进程mgmd:管理集群中的所有的主机

安装mysql-cluster,集群中的每台服务都要安装

groupadd mysql
useradd mysql -g mysql
tar xvf mysql-cluster-gpl-7.4.13-linux-glibc2.5-x86_64.tar.gz
mv mysql-cluster-gpl-7.4.13-linux-glibc2.5-x86_64 /usr/local/mysql
cd /usr/local/mysql
./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql
chown -R mysql:mysql mysql
cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf

为便于以后启动mysql服务,我们接着做如下步骤:

复制配置文件

[root@localhost mysql] cp support-files/my-default.cnf /etc/my.cnf

h.  将mysqld服务加入开机自启动项。

*首先需要将scripts/mysql.server服务脚本复制到/etc/init.d/,并重命名为mysqld。

[root@localhostmysql]  cp support-files/mysql.server /etc/init.d/mysqld

会有提示是否覆盖,输入yes

这样就可以用 service mysqld start  service mysqld restart service mysqld stop

*通过chkconfig命令将mysqld服务加入到自启动服务项中,这一步就不做了,因为mysql集群启动是有顺序的,sql节点要最后启动。

[root@localhost mysql]#chkconfig --add mysqld

*注意服务名称mysqld就是我们将mysql.server复制到/etc/init.d/时重命名的名称。

*查看是否添加成功

[root@localhost mysql]#chkconfig --list mysqld

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

mysql客户端启动:

为了避免每次都输入mysql的全路径/usr/local/mysql/bin/mysql,可将其加入环境变量中,在vi /etc/profile最后加入两行命令:

MYSQL_HOME=/usr/local/mysql

export PATH=$PATH:$MYSQL_HOME/bin

修改好后再执行source /etc/profile

这样就可以在shell中直接输入mysql命令来启动客户端程序了

五:管理节点配置

vi /etc/mysql-cluster.ini (该文件不存在,需要创建,文件名可随便命名)

文件内容如下:

[NDBD DEFAULT]
NoOfReplicas=2 #定义在Cluster环境中相同数据的份数,最大为4
DataMemory=200M #每个数据节点中给数据分配的内存
IndexMemory=20M #每个数据节点中给索引分配的内存
MaxNoOfAttributes=20480 #该参数用于设置簇中触发程序对象的最大数目。该参数的默认值为768,不修改建表时可能会报708错误
[NDB_MGMD]
NodeId=1
#设置管理节点服务器
HostName=192.168.1.240
DataDir=/usr/local/mysql/data
[NDBD]
NodeId=2
#设置存储节点服务器(NDB节点)
HostName=192.168.1.238
DataDir=/usr/local/mysql/data
[NDBD]
NodeId=3
#第二个NDB节点
HostName=192.168.1.248
DataDir=/usr/local/mysql/data
[MYSQLD]
NodeId=4
HostName=192.168.1.238
[MYSQLD]
NodeId=5
HostName=192.168.1.248

启动(必须用参数“-f”告诉 ndb_mgm 配置文件所在位置,默认是在ndb_mgmd相同目录下)

cd  /usr/local/mysql/bin

./ndb_mgmd -f /etc/mysql-cluster.ini

./ndb_mgmd -f /etc/mysql-cluster.ini --initial  (#--initial:第一次启动时加上,其它时候不要加,不然会数据清空,除非是在备份、恢复或配置变化后重启时)

启动成功后会显示当前mysql-cluster的信息

通过netstat -lntpu或者ps -aux |grep ndb_mgmd查看是否启动成功

让管理节点开机自动启动:以下路径根据自己实际的来。
 vi /etc/rc.d/rc.local
加入下面的内容:
/usr/local/mysql/bin/ndb_mgmd -f /etc/mysql-cluster.ini

六:数据节点与sql节点的配置

在238与248服务上做。

vi /etc/my.cnf

增加如下内容:

[mysqld]
ndbcluster #使用ndb集群引擎
ndb-connectstring=192.168.1.240 #指定管理集群的ip地址,多个以,分隔
default-storage-engine=ndbcluster #设置默认引擎
#user=mysql
#log-error=/usr/local/mysql/mysqld.err #指定管理集群的ip地址,多个以,分隔
[mysql_cluster]
ndb-connectstring=192.168.1.240

在每台存储节点(ndbd)服务器上,如果是第一次启动ndbd进程的话,必须先执行以下命令: 
cd /usr/local/mysql/bin

./ndbd --initial  #注意,仅应在首次启动ndbd时,或在备份/恢复数据或配置文件发生变化后重启ndbd时使用“--initial”参数。因为该参数会使节点删除由早期ndbd实例创建的、用于恢复的任何文件,包括用于恢复的日志文件。

如果不是第一次启动,直接运行如下命令即可:

cd /usr/local/mysql/bin
./ndb

启动后的效果:

查看是否启动成功:

netstat -lntpu或者ps -aux |grep ndbd

关闭数据节点:


启动sql节点:

service mysqld start

启动sql节点成功后,修改下mysql的连接为任意ip,然后再设置连接的用户名为root,密码为test,这样客户端工具SQLyog等就可以连接到mysql服务上了。

新安装的mysql密码是空的。

./mysql -u root -p
use mysql
SELECT `Host`,`User` FROM user;
UPDATE user SET `Host` = '%' WHERE `User` = 'root' LIMIT 1;
FLUSH PRIVILEGES;

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'test' WITH GRANT OPTION;

SELECT `Host`,`User` FROM user;

七:查看集群状态

 

启动顺序:

管理节点 -> 数据节点 -> SQL节点

关闭顺序:

SQL节点 -> 数据节点 -> 管理节点

数据节点与sql节点都启动成功后在管理节点上查看集群状态。

cd /usr/local/mysql/bin
./ndb_mgm -e show

示例如下:已全部连接成功的

或者

如果节点已确认启动并且配置无误,还是not connected那就试下关闭防火墙与selinux

可能原因:防火墙开启,阻止集群数据通信;关闭防火墙:service iptables stop;

关闭 selinux:setenforce 0;

管理和维护命令:

cd /usr/local/mysql/bin

关闭mysql集群: pkill -9 ndbd_mgmd

启动mysql集群:./ndb_mgmd -f /var/lib/mysql-cluster/config.ini

启动SQL节点:./mysqld_safe --user=mysql & 或 service mysqld restart

查看mysql状态:./ndb_mgm -e show

八:测试集群

创建数据库表,简单查看配置效果:

由于为分布式集群,所以,在Mysql中创建的表的存储引擎必须修改为:NDB Cluster,否则数据不会同步到其他节点服务器上。

以下建表与插入数据在一台服务上操作,操作后直接查看其他节点中的mysql,可以看到数据库、表、数据都会同步的。

先创建个数据库mytest

CREATE TABLE tb_city(
id MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
NAME VARCHAR(20) NOT NULL DEFAULT '')
ENGINE = NDBCLUSTER DEFAULT CHARSET utf8mb4;

INSERT INTO tb_city VALUES(1, 'city1');
INSERT INTO tb_city VALUES(2, 'city2');
INSERT INTO tb_city VALUES(3, 'city3');

示例如下

九:更改表的ENGINE

ALTER TABLE tablename ENGINE=NDBCLUSTER

示例:

ALTER TABLE tb_bank ENGINE=NDBCLUSTER
集群的每一张表必须修改ENGINE = NDBCLUSTER

 

十:jdbc连接

原先配置:jdbc:mysql://192.168.1.238:3306/palm_2_0_16
集群后配置:jdbc:mysql:loadbalance://192.168.1.238:3306,192.168.1.248:3306/palm_2_0_16?roundRobinLoadBalance=true

mysql-cluster集群(亲测)的更多相关文章

  1. MySQL Cluster 集群

    本文转载 http://www.cnblogs.com/gomysql/p/3664783.html MySQL Cluster是一个基于NDB Cluster存储引擎的完整的分布式数据库系统.不仅仅 ...

  2. MySQL Cluster 集群部署

    前言 此篇博客用以介绍 MySQL Cluster 集群部署方法 一.节点规划 序号 IP地址 节点名称 1 172.16.1.201 mysql-manage 2 172.16.1.202 mysq ...

  3. centos7 mysql cluster集群搭建基于docker

    1.准备 mn:集群管理服务器用于管理集群的其他节点.我们可以从管理节点创建和配置集群上的新节点.重新启动.删除或备份节点. db2/db3:这是节点间同步和数据复制的过程发生的层. db4/db5: ...

  4. 基于Docker的Mysql Cluster集群

    参考 mysql-cluster镜像 https://medium.com/@ahmedamedy/mysql-clustering-with-docker-611dc28b8db7 使用Docker ...

  5. MySQL Cluster 集群简介

    简介 MySQL集群是一种在无共享架构(SNA,Share Nothing Architecture)系统里应用内存数据库集群的技术.这种无共享的架构可以使得系统使用低廉的硬件获取高的可扩展性. My ...

  6. Mysql Cluster 集群 windows版本

    VM1:192.168.220.102 管理节点(MGM) VM2:192.168.220.103 数据节点(NDBD1),SQL节点(SQL1) VM3:192.168.220.104 数据节点(N ...

  7. Windows系统搭建Mysql Cluster集群

    简单介绍一下MySQL集群涉及的三种节点:     管理节点(也可以称管理服务器)是整个集群环境的核心,类似于集群中起调度作用的枢纽,由它来负责管理其它节点(数据节点和SQL节点)的开启.关闭或重启某 ...

  8. 关于MySQL Cluster集群NoOfReplicas参数问题

    摘自:http://www.itpub.net/thread-1845295-1-1.html 官方网站上说参数NoOfReplicas的值表示数据的备份份数,例如:NoOfReplicas=2,若在 ...

  9. MySQL集群---②Windows平台搭建MySQL CLUSTER集群

    原文:http://blog.csdn.net/mazhaojuan/article/details/42211857 本文将通过两台电脑来简单介绍一下Windows平台如何搭建MySQL集群. My ...

  10. 安装k8s集群(亲测)

    先安装一台虚拟机,然后进行克隆,因为前面的步骤都是一样的,具体代码如下: Last login: Mon Nov 25 00:40:34 2019 from 192.168.180.1 ##安装依赖包 ...

随机推荐

  1. zabbixproxy安装

    目录 1     zabbix3.2安装.... 1 2     安装proxy. 1 2.1      安装zabbix-proxy. 1 2.1.1 配置zabbix yum源.... 1 2.1 ...

  2. 基于HTTP协议的轻量级开源简单队列服务:HTTPSQS[转]

    HTTPSQS(HTTP Simple Queue Service)是一款基于 HTTP GET/POST 协议的轻量级开源简单消息队列服务,使用 Tokyo Cabinet 的 B+Tree Key ...

  3. Redis、Mongodb、memcache区别在哪里?

    最近在看一本书<php mvc开发实战>看到Redis实战部分,详细介绍了几种缓存的区别和对比,帮助解决这方面的疑惑 Redis适合哪些业务场景?

  4. asp.net 条码 一维条码 生成, 一共有32中格式类型

    想用asp.net 实现条码功能,网上找了代码都不全. 终于找到了一个非常全的DLL 是winForm的,原以为不能用在WEB 上结果 可以使用. 首先,引用 DLL 不必说了,下面是 使用设置.还有 ...

  5. Android开发中Parcelable接口的使用方法

    在网上看到很多Android初入门的童鞋都在问Parcelable接口的使用方法,小编参考了相关Android教程,看到里面介绍的序列化方法主要有两种分别是实现Serializable接口和实现Par ...

  6. [AtCoder AGC27A]Candy Distribution Again

    题目大意:把$x$个糖果分给$n$个人,必须分完,如果第$i$个人拿到$a_i$个糖果,就会开心,输出最多多少人开心 题解:从小到大排序,判断是否可以让他开心,注意最后判断是否要少一个人(没分完) 卡 ...

  7. [poj] 3347 Kadj Square || 计算几何的“线段覆盖”

    原题 多组数据,给出n个正方形的边长,使他们以45度角倾斜的情况下最靠左(在第一象限内),如图.求从上看能看到哪几个完整的正方形. 借鉴于https://www.cnblogs.com/Ritchie ...

  8. vs2012 有效产品密钥

    VS2012 有效注册密钥 下载地址:https://www.malavida.com/en/soft/visual-studio-2012/ Microsoft Visual Studio Ulti ...

  9. 结构型设计模式之适配器模式(Adapter)

    结构 意图 将一个类的接口转换成客户希望的另外一个接口.A d a p t e r 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. 适用性 你想使用一个已经存在的类,而它的接口不符合你 ...

  10. C# 代码片段

    StringBuilder拼接小技巧 Stopwatch watch = new Stopwatch(); watch.Start(); var sb = new StringBuilder(); ; ...