mysql-cluster集群搭建步骤
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集群搭建步骤的更多相关文章
- 重要参考步骤---ProxySQL Cluster 集群搭建步骤
		
环境 proxysql-1:192.168.20.202 proxysql-2:192.168.20.203 均采用yum方式安装 # cat <<EOF | tee /etc/yum.r ...
 - centos7 mysql cluster集群搭建基于docker
		
1.准备 mn:集群管理服务器用于管理集群的其他节点.我们可以从管理节点创建和配置集群上的新节点.重新启动.删除或备份节点. db2/db3:这是节点间同步和数据复制的过程发生的层. db4/db5: ...
 - redis cluster 集群搭建步骤和注意事项
		
1.安装Ubuntu ,修改root的密码. sudo passwd (apt-get update 更新系统) 2.安装 Gcc 和G++ sudo apt-get install build- ...
 - MySQL Cluster 集群
		
本文转载 http://www.cnblogs.com/gomysql/p/3664783.html MySQL Cluster是一个基于NDB Cluster存储引擎的完整的分布式数据库系统.不仅仅 ...
 - Redis Cluster集群搭建与应用
		
1.redis-cluster设计 Redis集群搭建的方式有多种,例如使用zookeeper,但从redis 3.0之后版本支持redis-cluster集群,redis-cluster采用无中心结 ...
 - MySQL Cluster 集群部署
		
前言 此篇博客用以介绍 MySQL Cluster 集群部署方法 一.节点规划 序号 IP地址 节点名称 1 172.16.1.201 mysql-manage 2 172.16.1.202 mysq ...
 - 【Data Cluster】真机环境下MySQL数据库集群搭建
		
真机环境下MySQL-Cluster搭建文档 摘要:本年伊始阶段,由于实验室对不同数据库性能测试需求,才出现MySQL集群搭建.购置主机,交换机,双绞线等一系列准备工作就绪,也就开始集群搭建.起初笔 ...
 - MySQL优化之——集群搭建步骤具体解释
		
转载请注明出处:http://blog.csdn.net/l1028386804/article/details/46833179 1 概述 MySQL Cluster 是MySQL 适合于分布式计算 ...
 - Mysql Innodb cluster集群搭建
		
之前搭建过一个Mysql Ndb cluster集群,但是mysql版本是5.7的,看到官网上mysql8的还是开发者版本,所以尝试搭建下mysql Innodb cluster集群. MySQL的高 ...
 
随机推荐
- vmware安装ubuntu的简单配置
			
介绍:ubuntu是一个桌面体验比较好的linux操作系统,尝试使用vmware安装一个虚拟机试用一下,做个简单记录,安装操作系统步骤省略 一.配置root用户,并使用root登录图像界面 Ubunt ...
 - c++简单实现二叉树
			
专业术语: 节点 父节点 根节点 子孙 堂兄弟 深度: 从根节点到最底层节点的层数称为深度 叶子节点: 没有子节点的节点称为叶子节点 非终端节点: 实际就是非叶子节点 度: 子节点的个数称为度 树的分 ...
 - 关于Mac VMFusion Centos7虚拟机网络的配置
			
1.环境配置: 创建完快照后启动虚拟机,使用root用户和root密码登录系统 1.1 停止防火墙 #停止防火墙 [root@localhost ~]#systemctl stop firewalld ...
 - 如何解决Selenium句柄、多窗口问题
			
有时我们在打开浏览器浏览网页时,当点击网页上某些链接时,它不是直接在当前页面上跳转,而是重新打开一个新标签页面,对于这种情况,想在新页面上操作,就得先切换窗口了.获取窗口的唯一标识用句柄表示,所以只需 ...
 - Python 处理Excel内的数据(案例介绍*2)
			
(一)案例一介绍 现在有一匹电商产品跟当日销量的数据,如下,总共有上万笔的数据,现在需要统计每个品牌当日的销售量,比如美宝莲今天总共卖出了多少的商品,另外需要统计每个品牌下面的每个子品类当日销售量(品 ...
 - jedis的scan操作要注意cursor数据类型
			
环境 jedis3.0.0 背景 在使用jedis的"scan"操作获取redis中某些key时,发现总是出现类型转换的异常--"java.lang.ClassCastE ...
 - React Native的缓存和下载
			
一般我们有3种数据需要缓存和下载:纯文本(比如API返回,状态标记等),图片缓存和其他静态文件. 纯文本 纯文本还是比较简单的,RN官方模块AsyncStorage就够了.它就跟HTML5里面的Loc ...
 - KMP 和 扩展KMP
			
KMP:在主串S中找子串T的位置KMP算法的时间复杂度O(|S|+|T|). #define maxn 1000 char s[maxn],t[maxn];//s为主串,t为子串 int net[ma ...
 - 金三银四,磨砺锋芒;剑指大厂,扬帆起航(2020年最全大厂WEB前端面试题精选)上
			
金三银四,磨砺锋芒:剑指大厂,扬帆起航(2020年最全大厂WEB前端面试题精选)上 引言 元旦匆匆而过,2020年的春节又接踵而来,大家除了忙的提着裤子加班.年底冲冲冲外,还有着对于明年的迷茫和期待! ...
 - python中end=''
			
end = '' 用于连接下一条的print输出内容 效果图: 代码: # end='' 用于连接下一条输出语句 print('哈哈哈') print('嘻嘻嘻') print('\n\n') pr ...