1.从官网下载mysql-cluster安装包: https://dev.mysql.com/downloads/cluster/

2.解压安装包

#上传到服务器目录/usr/softwares并解压
tar -xzvf mysql-cluster-gpl-7.5.-linux-glibc2.-x86_64.tar.gz #新建/usr/local/mysql目录
mkdir /usr/local/mysql
#将解压的文件重命名为mysql,并放到/usr/local/mysql目录下 mv mysql-cluster-gpl-7.6.-linux-glibc2.-x86_64 /usr/local/mysql

3.配置安装管理节点

  1)新增管理节点命令

#将文件ndb_mgm和ndb_mgmd拷贝到/usr/local/bin/目录下
cp /usr/local/mysql/bin/ndb_mgm* /usr/local/bin/ #ndb_mgm,ndb客户端命令
#ndb_mgmd,ndb管理节点启动命令
#ndb_mgm是ndb_mgmd(MySQL Cluster Server)的客户端管理工具,通过它可以方便的检查Cluster的状态、启动备份、关闭Cluster等功能。

  2)修改管理节点的配置文件

#创建数据库集群配置文件的目录
mkdir /var/lib/mysql-cluster #创建并编辑配置文件
vim /var/lib/mysql-cluster/config.ini [ndbd default]
NoOfReplicas= #数据节点的个数
DataMemory=512M
IndexMemory=64M [ndb_mgmd] #管理节点
NodeId=
hostname=192.168.17.130
datadir=/var/lib/mysql-cluster/ [ndbd] #数据节点
NodeId=
hostname=192.168.17.131
datadir=/usr/local/mysql/data/
[ndbd]
NodeId=
hostname=192.168.17.132
datadir=/usr/local/mysql/data/ [mysqld] #sql节点
NodeId=
hostname=192.168.17.133
[mysqld]
NodeId=
hostname=192.168.17.134

[NDBD DEFAULT]:表示每个数据节点的默认配置,在每个节点的[NDBD]中不用再写这些选项,只能有一个。

NoOfReplicas:副本数量,数据节点数必须是副本数的整数倍。

[NDB_MGMD]:表示管理节点的配置,只有一个,默认的对其他节点的端口是1186,故服务器需要开放1186端口。

[NDBD]:表示每个数据节点的配置,可以有多个,分别写上不同数据节点的IP地址。

[MYSQLD]:表示SQL节点的配置,可以有多个,分别写上不同SQL节点的IP地址。

  3)启动管理节点

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

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

3.配置安装数据节点

  1)配置my.cnf文件

[mysqld]
datadir=/usr/local/mysql/data
basedir=/usr/local/mysql
character_set_server=utf8 [mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid [mysql_cluster]
ndb-connectstring=192.168.17.130:

  2)新增用户和权限

#分别添加mysql组和mysql用户
groupadd mysql
useradd mysql -g mysql #进入mysql目录
cd /usr/local/mysql/ #把mysql的目录设置成所有者为root
chown -R root . #创建data目录,并把data目录设置所有者为mysql
mkdir data
chown -R mysql data #把mysql的目录改成所属组为mysql
chgrp -R mysql .

  3)安装数据库

#执行安装脚本,初始化数据库
./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ #注意其中用户为mysql的名称需要跟配置文件my.cnf中的user=mysql相同
#另外,这里一定要把--basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ 加上,
#否则会最后启动MySQL服务的时候会出现"table mysql.plugin doesn't exist","Can\'t open the mysql.plugin table. Please run mysql_upgrade to create it."错误,以及"PID"获取失败的错误

在安装的打印信息最后,有首次登陆的密码,需要特别注意;

  4)设置mysqld服务开机自启

#加入到service服务
cp support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld #加入到开机自启动列表
chkconfig --add mysqld

  5)修改数据库密码

#启动数据库
[root@localhost bin]# service mysqld start #进入客户端
[root@localhost bin]# ./mysql -uroot -p
Enter password:这里输入之前的临时密码 #修改密码
mysql> set password=password('新密码'); #注意此密码必须要与其他服务器上的数据库设置的密码相同

  6)启动数据节点

cd /usr/local/mysql
./bin/ndbd --initial #非第一次启动,命令如下
./bin/ndbd

安装后第一次启动数据节点时要加上--initial参数。在以后的启动过程中,则是不能添加该参数的,否则ndbd程序会清除在之前建立的所有用于恢复的数据文件和日志文件。

4.配置安装sql节点

  1)配置my.cnf文件

[mysqld]
ndbcluster
datadir=/usr/local/mysql/data
basedir=/usr/local/mysql
character_set_server=utf8
default-storage-engine=ndbcluster
port= [mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid [mysql_cluster]
ndb-connectstring=192.168.17.130:

  2)安装mysql数据库

  3)启动sql节点

service mysqld start

如果提示:mysql:mysql is neither service nor target!?报错,则执行:

systemctl unmask mysqld
service mysql start

5.测试

  1)管理节点查看

ndb_mgm

ndb_mgm> show
Cluster Configuration
---------------------
[ndbd(NDB)] node(s)
id= @192.168.17.131 (mysql-5.7. ndb-7.6., Nodegroup: , *)
id= @192.168.17.132 (mysql-5.7. ndb-7.6., Nodegroup: ) [ndb_mgmd(MGM)] node(s)
id= @192.168.17.130 (mysql-5.7. ndb-7.6.) [mysqld(API)] node(s)
id= @192.168.17.133 (mysql-5.7. ndb-7.6.)
id= @192.168.17.134 (mysql-5.7. ndb-7.6.)

  2)测试数据

#登陆数据库
cd /usr/local/mysql
./bin/mysql -uroot -p
Enter password:输入密码 #创建数据库mytest
mysql> create database mytest; #切换到mytest数据库
mysql> use mytest; #创建表结构sys_myfirst
mysql> create table sys_myfirst(id varchar() primary key, name varchar(), memo varchar()); #在sys_myfirst中添加几条数据
mysql> insert into sys_myfirst(id, name, memo) values('','test1','hello world!');
mysql> insert into sys_myfirst(id, name, memo) values('','test2','hello world haha!');
mysql> insert into sys_myfirst(id, name, memo) values('','test3','hello world hehe!'); #查看数据
mysql> select * from sys_myfirst;
+----+-------+-------------------+
| id | name | memo |
+----+-------+-------------------+
| | test2 | hello world haha! |
| | test1 | hello world! |
| | test3 | hello world hehe! |
+----+-------+-------------------+
rows in set (0.00 sec)

  3)在另一个sql节点查询

#这里就省去登陆mysql客户端的步骤了
#查看数据
mysql> select * from sys_myfirst;
+----+-------+-------------------+
| id | name | memo |
+----+-------+-------------------+
| | test1 | hello world! |
| | test3 | hello world hehe! |
| | test2 | hello world haha! |
+----+-------+-------------------+
rows in set (0.00 sec)

6.启动和停止管理节点

启动顺序:管理节点—数据节点—sql节点

停止顺序:管理节点(会同时停止管理节点和数据节点)—sql节点

停止管理节点:

#第一种方法
ndb_mgm -e shutdown #第二种方法
ndb_mgm
ndb_mgm> shutdown;

停止sql节点:

service mysqld stop

7.数据存放位置

在数据节点上通过lsof -c ndb命令(以root身份运行)来找出包含ndb进程所有打开的文件,

发现其真正存储数据的位置在mysql/data/ndb_3_fs/下面(3数字是config.ini的节点id),

各个文件夹中的文件是以16.7M为单位存储的,临时文件达到16.7M后就另起一个。

参考文档:

1.mysql-cluster集群搭建:

https://blog.csdn.net/qq_15092079/article/details/82665307

https://blog.csdn.net/csolo/article/details/87086086

https://www.cnblogs.com/linkstar/p/6510713.html

2.增加管理节点:

https://blog.csdn.net/cf20160405/article/details/77864123

3.增加数据节点:

https://blog.csdn.net/yabingshi_tech/article/details/47953109

4.官方文档:

https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-configuration.html

5.mysqlcluster+haproxy+keepalived

https://blog.csdn.net/csolo/article/details/87363388

mysql-cluster集群搭建步骤的更多相关文章

  1. 重要参考步骤---ProxySQL Cluster 集群搭建步骤

    环境 proxysql-1:192.168.20.202 proxysql-2:192.168.20.203 均采用yum方式安装 # cat <<EOF | tee /etc/yum.r ...

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

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

  3. redis cluster 集群搭建步骤和注意事项

    1.安装Ubuntu ,修改root的密码. sudo passwd  (apt-get update 更新系统) 2.安装 Gcc 和G++  sudo apt-get install build- ...

  4. MySQL Cluster 集群

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

  5. Redis Cluster集群搭建与应用

    1.redis-cluster设计 Redis集群搭建的方式有多种,例如使用zookeeper,但从redis 3.0之后版本支持redis-cluster集群,redis-cluster采用无中心结 ...

  6. MySQL Cluster 集群部署

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

  7. 【Data Cluster】真机环境下MySQL数据库集群搭建

    真机环境下MySQL-Cluster搭建文档  摘要:本年伊始阶段,由于实验室对不同数据库性能测试需求,才出现MySQL集群搭建.购置主机,交换机,双绞线等一系列准备工作就绪,也就开始集群搭建.起初笔 ...

  8. MySQL优化之——集群搭建步骤具体解释

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/46833179 1 概述 MySQL Cluster 是MySQL 适合于分布式计算 ...

  9. Mysql Innodb cluster集群搭建

    之前搭建过一个Mysql Ndb cluster集群,但是mysql版本是5.7的,看到官网上mysql8的还是开发者版本,所以尝试搭建下mysql Innodb cluster集群. MySQL的高 ...

随机推荐

  1. TCP/IP||UDP广播和多播

    1.概述 广播和多播应用于UDP,TCP是一个面向连接协议,意味着分别运行与两个主机内的两进程间存在一个连接,在考虑多个主机内的共享通信网络,每个以太网帧包含源主机和目的主机以太网地址(48bit), ...

  2. alpha week 2/2 Scrum立会报告+燃尽图 06

    此作业要求参见:https://edu.cnblogs.com/campus/nenu/2019fall/homework/9803 小组名称:“组长”组 组长:杨天宇 组员:魏新,罗杨美慧,王歆瑶, ...

  3. 【题解】P2521 [HAOI2011]防线修建(动态凸包)

    [题解]P2521 [HAOI2011]防线修建(动态凸包) 凸包是易插入不好删除的东西,按照剧情所以我们时光倒流 然后问题就是维护凸包的周长,支持加入 本来很简单,但是计算几何就是一些小地方经验不足 ...

  4. 使用EF操作Docker中的Mysql实例

    为啥我会选择mysql呢?因为我的服务器配置较低,而SqlServer在docker中的实例,服务器的运行内存应当保持在2G+,我没有这个条件,它会爆出这样的错误 sqlservr: This pro ...

  5. 吴恩达机器学习笔记 - cost function and gradient descent

    一.简介 cost fuction是用来判断机器预算值和实际值得误差,一般来说训练机器学习的目的就是希望将这个cost function减到最小.本文会介绍如何找到这个最小值. 二.线性回归的cost ...

  6. Intellij Idea插件使用记录之Alibaba Java Coding Guidelines

    目录 Intellij Idea插件Alibaba Java Coding Guidelines 前言 使用 感谢 Intellij Idea插件Alibaba Java Coding Guideli ...

  7. cometoj 茶颜悦色|扫描线+懒惰标记

    传送门 题目描述 茶颜悦色也太好喝了!鸡尾酒在长沙的各种茶颜悦色的店铺中流连忘返.他发现长沙有炒鸡多的茶颜悦色店,走两步就能遇到一家. “方圆一公里能有十家茶颜悦色!”鸡尾酒感叹了起来. 于是他想到了 ...

  8. Eureka 主动下线服务

    原因: 测试环境由于机器换ip,神奇的出现了更新之前,之后的IP同时在Eureka上注册了. 方法一:直接停掉服务 默认情况下,如果Eureka Server在90秒没有收到Eureka客户的续约,它 ...

  9. python 条件判断的三元表达式

    示例:求两数中最大者 在JavaScript中代码如下: x = 1; y = 2; console.log(x > y ? x : y) 在python中代码如下: # 条件为真时的返回结果 ...

  10. 《C# 爬虫 破境之道》:第二境 爬虫应用 — 第三节:处理压缩数据

    续上一节内容,本节主要讲解一下Web压缩数据的处理方法. 在HTTP协议中指出,可以通过对内容压缩来减少网络流量,从而提高网络传输的性能. 那么问题来了,在HTTP中,采用的是什么样的压缩格式和机制呢 ...