话不多说奔主题,精神抖擞就是干!
1.选用版本
官网一般提供两种包
mysql-cluster-8.0.20-winx64.zip免安装版
mysql-cluster-8.0.20-winx64.msi安装版
这里我选用免安装版
最新包请去官网下载
http://dev.mysql.com/downloads/cluster/
2.搭建环境
这里我使用三台Win10虚拟机进行搭建
(1)管理节点
10.6.10.250
(2)其中一台数据节点和Mysql节点
10.6.10.251
(3)剩下一台数据节点和Mysql节点
10.6.10.252
*选用三台的原因是将管理节点单独部署,因为一旦管理节点宕机,集群服务将不可用
,数据节点和Mysql节点(把他俩看作一个整体)可以同时部署在一台机器上,当然也可以不在,这里我为了节省资源所以部署在一起
3.创建必须的文件夹
假设我这三台虚拟机的mysql-cluster程序文件路径都为:
c:\mysql
我们进到bin目录下
c:\mysql\bin
创建三个文件目录
cluster-data集群数据节点文件夹(如果你的数据节点和Mysql节点是分开部署,那么这个文件夹只需要在数据节点下建立)
cluster-logs集群日志文件夹(这个文件夹其实只需要在管理节点下建立)
config配置文件夹(这个文件夹其实只需要在管理节点下建立)
*这里为了省事我在一台上建好这三个文件夹以后,直接拷贝到另外两台的相同路径下了
4.管理节点(10.6.10.250)
我们进到bin目录下
c:\mysql\bin
这里有我们上一步创建的三个文件夹
我们进到config目录下
c:\mysql\bin\config
创建两个启动所必须的文件
config.ini
my.ini
(1)config.ini配置信息如下
[ndbd default]
NoOfReplicas=2 #集群数量
DataDir=C:/mysql/bin/cluster-data
DataMemory=80M #默认
IndexMemory=18M #默认
[ndb_mgmd]
HostName=10.6.10.250 #管理节点地址
DataDir=C:/mysql/bin/cluster-logs
[ndbd]
HostName=10.6.10.251 #数据节点地址
[ndbd]
HostName=10.6.10.252 #数据节点地址
[mysqld]
HostName=10.6.10.251 #Mysql节点地址
[mysqld]
HostName=10.6.10.252 #Mysql节点地址
(2)my.ini配置信息如下
[mysql_cluster]
config-file=C:/mysql/bin/config/config.ini
5.启动管理节点(在10.6.10.250这台机器上)
为保险起见,我们统一用管理员权限启动cmd.exe
新打开一个cmd进到bin目录下
c:\mysql\bin
键入命令
ndb_mgmd.exe --configdir=c:\mysql\bin\config --config-file=c:\mysql\bin\config\config.ini --ndb-nodeid=1 --reload –-initial
*将该节点作为管理节点启动并指定节点id=1
6.启动数据节点(分别在10.6.10.251和10.6.10.252机器上)
为保险起见,我们统一用管理员权限启动cmd.exe
新打开一个cmd进到bin目录下
c:\mysql\bin
键入命令
ndbd.exe --ndb-connectstring=10.6.10.250
*将该节点作为数据节点启动并连接到管理节点
7.启动Mysql节点(分别在10.6.10.251和10.6.10.252机器上)
为保险起见,我们统一用管理员权限启动cmd.exe
新打开一个cmd进到bin目录下
c:\mysql\bin
(1)键入命令
mysqld.exe --initialize-insecure
*该命令会在mysql目录下创建data文件夹,并且创建无密码的root用户,少了这一步下面那个命令多半会报错
键入命令
mysqld.exe -install *安装mysql服务,这步貌似可以不做,做了也无碍,但千万不要随后又手贱启动Mysql服务,例如键入命令net start mysql,如果启动了Mysql服务,那么下面那个命令指定会报错
(2)键入命令
mysqld.exe --ndbcluster --ndb-connectstring=10.6.10.250 --console
*将该节点作为Mysql节点启动并连接到管理节点
*如果依然报错,说是[The innodb_system data file 'ibdata1' must be writable]这种错误信息,
那可能是这台机器上已经运行了mysql服务,那么如下操作也许可以治疗:
键入命令
net stop mysql //停止服务
mysqld.exe -remove //卸载服务
将mysql目录下的data目录删除
重复步骤(1)(2)
8.查看集群状态
在任意一台机器上,新打开一个cmd进到bin目录下
c:\mysql\bin
键入命令
ndb_mgm.exe
进入到ndb_mgm>,键入命令show
ndb_mgm>show
如果前面7步全部正确,会显示出当前有一个管理节点,两个数据节点和两个Mysql节点并显示相关节点ID和IP地址信息等
*如果不是正常显示,请回过头来一步步检查问题所在,直到放弃治疗
9.创建数据库,表,插入数据,验证集群的数据同步是否有效
在任意一台Mysql节点上,新打开一个cmd进到bin目录下
c:\mysql\bin
键入命令
mysql.exe -uroot -p
*这是我们第(7)步中,命令mysqld.exe --initialize-insecure创建的无密码root用户
进入到mysql>,键入命令
mysql>show databases;
*检查基础数据库是否健全
mysql>create database test;
mysql>use test;
mysql>create table tt(name varchar(23),age int) engine=ndbcluster;
*如果不小心忘记加后缀了,也可以直接用修改表的方式添加上,例如:alter table tt engine=ndbcluster;
*创建表的时候如果不加engine=ndbcluster后缀,那么该表将不会进行集群同步
mysql>show tables;
mysql>insert into tt values('cluster',18);
10.到另外一台Mysql节点上检查看看是否正确同步过来了
新打开一个cmd进到bin目录下
c:\mysql\bin
键入命令
mysql.exe -uroot -p
进入到mysql>,键入命令
mysql>show databases;
mysql>use test;
mysql>show tables;
mysql>select * from tt;
最后,祝诸君好运,一次成功!
喜欢秋天温暖的阳光和一杯沁人心脾的下午茶~