windows下面部署MySQL Cluster7.4/7.5

来源:互联网 发布:淘宝聚便宜 编辑:程序博客网 时间:2024/06/10 12:44
下载MySQL Cluster 7.5.6的zip压缩包.
实际使用过程中,

遇到的问题1
WARNING  -- Failed to allocate nodeid for NDB at 192.168.1.7. Returned error: 'No free node id found for ndbd(NDB).'
1.7是后面追加的数据节点,最初节点编号是从1到5.看了MySQL官方文档,最好的是数据节点编号最小,管理节点居中,SQL节点最大,且三种节点的id中间要有预留,比如数据节点是1.2.3.4,管理节点是10,SQL节点是20.21

遇到的问题2
Got error 763 'DDL is not supported with mixed data-node versions' from NDBCluster
我这里的情况是实验机器是64位,下载的4.5.6,虚拟机是32位,没有下载最新版本使用的7.4.7,因此datanode的版本不一致造成的。
因此Cluster的情况下,DataNode节点的版本改为一致的就行,不区分计算机是否32位或64位。
管理节点是7.5.6

实际操作步骤:
解压缩
1、目录结构如下


2、非空目录中的文件
2.1管理节点:
D:\mysqlcluster\managementnode\bin 的目录包括四个文件: config.ini my.ini ndb_mgm.exe ndb_mgmd.exe
2.2数据节点:
D:\mysqlcluster\datanode\mysql\bin 的目录包括两个文件: my.ini ndbd.exe
2.3SQL节点:
D:\mysqlcluster\sqlnode\mysql 的目录中增加my.ini

3、配置文件
3.11管理节点managementnode节点下my.ini的内容
[mysql_cluster]
# Options for management node process
config-file=D:\mysqlcluster\managementnode\bin\config.ini

3.12managementnode节点下config.ini的内容
[NDBD DEFAULT]
NoOfReplicas=2
DataDir=D:\mysqlcluster\datanode\mysql\cluster-data
DataMemory=80M
IndexMemory=18M

[MYSQLD DEFAULT]
[NDB_MGMD DEFAULT]
[TCP DEFAULT]

[NDB_MGMD]
NodeId=1
HostName=192.168.1.50 #管理节点服务器
DataDir=D:\mysqlcluster\managementnode\bin\cluster-logs

[NDBD]
NodeId=2
HostName=192.168.1.5
[NDBD]
NodeId=4
HostName=192.168.1.6
[MYSQLD]
NodeId=3
HostName=192.168.1.5
[MYSQLD]
NodeId=5
HostName=192.168.1.6

3.2datanode节点下面的my.ini的内容如下
[mysql_cluster]
db-connectstring=192.168.1.50

3.3sqlnode节点下面的my.ini的内容如下
[mysqld]
ndbcluster
ndb-connectstring=192.168.1.50
log-bin=D:/mysqlcluster/sqlnode/mysql.log
character-set-server=utf8
ndb-wait-setup=0
[mysql]
default-character-set=utf8
[mysql_cluster]
ndb-connectstring=192.168.1.50


4、启动服务
这个需要手动启动,启动顺序是启动管理节点、数据节点、API节点,数据节点需要连接管理节点,API节点需要连接数据节点。

1、管理节点
D:\mysqlcluster\managementnode\bin\ndb_mgmd -f config.ini --configdir=D:\mysqlcluster\managementnode\bin

查看集群运行状态
D:\mysqlcluster\managementnode\bin\ndb_mgm
show

2、所有数据节点
D:\mysqlcluster\datanode\mysql\bin\ndbd --connect-string="host=192.168.1.50:1186"

3、SQL节点
(仅限第一次初始化)
"D:\mysqlcluster\sqlnode\mysql\bin\mysqld.exe" --default-file="D:\mysqlcluster\sqlnode\mysql\my.ini"
之后每次启动
d:\mysqlcluster\sqlnode\mysql\bin\mysqld.exe --console
-------------------------------------------------------------------------------------------------------
增加数据节点,因为NoOfReplicas=2,所以增加数据节点需要是2的倍数
192.168.1.7
192.168.1.2
在配置文件中增加
[NDBD]
NodeId=6
HostName=192.168.1.7
[NDBD]
NodeId=8
HostName=192.168.1.2

停止管理节点
ndb_mgm> 1 stop

重新加载配置文件并启动管理节点
D:\mysqlcluster\managementnode\bin> ndb_mgmd -f config.ini--initial--configdir=D:\mysqlcluster\managementnode\bin

再次看集群运行状态

ndb_mgm> show
Cluster Configuration
---------------------
[ndbd(NDB)] 4 node(s)
id=2 @192.168.1.5 (mysql-5.6.25 ndb-7.4.7, Nodegroup: 0, *)
id=4 @192.168.1.6 (mysql-5.6.25 ndb-7.4.7, Nodegroup: 0)
id=6 (not connected, accepting connect from 192.168.1.7)
id=8 (not connected, accepting connect from 192.168.1.2)

[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.1.50 (mysql-5.7.18 ndb-7.5.6)

[mysqld(API)] 2 node(s)
id=3 @192.168.1.5 (mysql-5.6.25 ndb-7.4.7)
id=5 @192.168.1.6 (mysql-5.6.25 ndb-7.4.7)

这个时候启动37和102的数据节点,总是提示“WARNING -- Failed to allocate nodeid for NDB at 192.168.1.7. Returned error: 'No free node id found for ndbd(NDB).'

没有办法,只能全部关闭在全部重新启动,
创建Nodegroup
CREATE NODEGROUP 6,8  
再次看集群状态


-----------------------------------------------------------------------
SQL节点服务器本机登录MySQL初始化数据库
mysql -u root -p

--创建数据库
create database aaa character set utf8 collate utf8_general_ci;
create database bbb character set utf8 collate utf8_general_ci;
create database ccc character set utf8 collate utf8_general_ci;

集群中的每个SQLNODE都要授权
use aaa
GRANT ALL PRIVILEGES ON *.* TO 'u'@'%' IDENTIFIED BY 'u' WITH GRANT OPTION;
flush privileges;

use bbb
GRANT ALL PRIVILEGES ON *.* TO 'u'@'%' IDENTIFIED BY 'u' WITH GRANT OPTION;
flush privileges;

use ccc
GRANT ALL PRIVILEGES ON *.* TO 'u'@'%' IDENTIFIED BY 'u' WITH GRANT OPTION;
flush privileges;

查看数据分区情况
select partition_name,table_rows from information_schema.PARTITIONS where table_name='ttt' and table_schema='aaa';