windows下的mysql集群配置

网上有很多关于windows下做mysql集群的文档,但是基本都有些细节没提,我踩了2天的坑,终于上岸。因此,特意写下这篇,以作记录。

 

注意,部署mysql集群前不需要安装mysql server,如果安装过请清理干净(卸载,并删除文件夹,注册表删除mysql相关键值,并重启)

本文的服务器环境皆为windows_server_2008_r2。

 

一、前期准备工作,下载DirectX修复工具(DirectX Repair) v3.9 中文版,在所涉及的服务器上运行。

请先点击“工具”-》“实验室”-》勾选“C++强力修复”,再点击“检测并修复”,修复完成后需重启服务器。

不执行此步,后期会报缺失xxx.dll等错误

 

二、官网下载MySQL Cluster,我下载的版本是MySQL Cluster 7.6.13,建议下载压缩包

官网下载地址

 

三、集群结构:

我这里是3台服务器,分别为:

192.168.14.128(管理节点)

192.168.14.129(数据节点、SQL节点)

192.168.14.130(数据节点、SQL节点)

 

注:管理节点同时作为其他节点时会有警告,大意就是管理节点与其他节点host一致,如果该节点瘫痪,可能导致整个集群不可用。

这里需要保障3台服务器的网络可互相ping通,并关闭3个服务器的防火墙(网上有说仅开放3306、2202、1168端口即可,亲测不行),不关闭防火墙可能导致无法连接管理节点、SQL节点不稳定(刷新连接中、再刷新未连接)等。

 

以下步骤的配置文件请保证为ANSI编码,否则可能导致服务无法启动等情况

四、配置管理节点:

在192.168.14.128(管理节点服务器)的C盘创建文件夹mysql,

在C:\mysql\下创建3个文件夹,“bin”、“cluster-logs”、“mysql-cluster”,结构如图:

在C:\mysql\bin\文件夹下创建2个配置文件:

my.ini

[mysql_cluster]
# Options for management node process
config-file=C:/mysql/bin/config.ini

config.ini

[NDBD DEFAULT]
NoOfReplicas=2
DataDir=c:/mysql-cluster/datanode/mysql/bin/cluster-data
DataMemory=80M
IndexMemory=18M

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

[NDB_MGMD]
Nodeid=1
#管理节点服务器
HostName=192.168.14.128
# Storage Engines
DataDir=C:/mysql/cluster-logs

[NDBD]
Nodeid=2
#数据节点IP地址
HostName=192.168.14.129

[NDBD]
Nodeid=3
#数据节点IP地址
HostName=192.168.14.130

[MYSQLD]
Nodeid=4
#SQL节点IP地址
HostName=192.168.14.129

[MYSQLD]
Nodeid=5
#SQL节点IP地址
HostName=192.168.14.130

将压缩包中的bin\目录下的ndb_mgm.exe和ndb_mgmd.exe,解压至C:\mysql\bin\文件夹中:

 

五、配置数据节点:

192.168.14.129、192.168.14.130两台服务器都需要如下配置

在C盘创建mysql-cluster\datanode\mysql目录,并在该目录创建“my.ini”配置文件和“bin”文件夹:

my.ini

[mysql_cluster]    
# Options for data node process:  
ndb-connectstring=192.168.14.128

注意,这里指向管理节点的IP地址

在C:\mysql-cluster\datanode\mysql\bin文件夹下创建“cluster-data”文件夹,这里要与管理节点的config.ini中的第一个DataDir对应。

将压缩包中的bin\ndbd.exe解压到C:\mysql-cluster\datanode\mysql\bin目录下。

 

六、配置SQL节点:

192.168.14.129、192.168.14.130两台服务器都需要如下配置:

在C盘创建mysql-cluster\sqlnode\mysql目录,创建“my.ini”配置文件和“data”文件夹,

my.ini

[mysqld]
# Options for mysqld process:
ndbcluster                      # run NDB storage engine
ndb-connectstring=192.168.14.128  # location of management server

sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

注意,这里指向管理节点的IP地址

将压缩包中mysql-cluster-gpl-7.6.13-winx64文件夹里的文件,全部解压至C:\mysql-cluster\sqlnode\mysql文件夹中:

以管理员身份运行CMD命令行,切换到C:\mysql-cluster\sqlnode\mysql\bin下:

分别执行以下命令(初始化mysql数据库,后续再设置密码):

mysqld --initialize-insecure
mysqld --install

打开注册表(运行“regedit”),找到

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\MySQL

修改ImagePath的值为:

C:\mysql-cluster\sqlnode\mysql\bin\mysqld --defaults-file="C:\mysql-cluster\sqlnode\mysql\my.ini" MySQL

注意空格。

 

注意:启动顺序为 管理节点-》数据节点-》SQL节点,请启动完管理节点后,再启动所有数据节点,最后启动所有SQL节点。

 

七、启动管理节点:

切换至管理节点服务器192.168.14.128,以下分为A方法(测试用,cmd命令行不可关闭,关闭则停止服务)、B方法(注册为services服务),执行其一即可

A.以管理员身份运行cmd命令行,切换到“C:\mysql\bin”路径下,执行

ndb_mgmd -f C:\mysql\bin\config.ini --configdir=C:\mysql\mysql-cluster

执行完不要关闭cmd窗口(这里未注册成服务,关闭窗口服务就停了)

 

B.以管理员身份运行cmd命令行,切换到“C:\mysql\bin”路径下,执行

ndb_mgmd.exe --install=ndb_mgmd --config-file="C:\\mysql\\bin\\config.ini"  --configdir="C:\\mysql\\mysql-cluster" 

注意反向双斜杠,执行完成后,到services中启动ndb_mgmd服务即可(服务自动启动,无需保持命令行常开)

 

八、启动数据节点:

切换至:192.168.14.129、192.168.14.130两台服务器都需要如下操作,以下分为A方法(测试用,cmd命令行不可关闭,关闭则停止服务)、B方法(注册为services服务),执行其一即可

A.以管理员身份运行cmd命令行,切换到“C:\mysql-cluster\datanode\mysql\bin”路径下,执行

ndbd

执行完不要关闭cmd窗口(这里未注册成服务,关闭窗口服务就停了)

如果提示“unbale to connect with connect string nodeid=0",则表示管理节点的服务已经停了或无法连接至管理节点

 

B.以管理员身份运行cmd命令行,切换到“C:\mysql-cluster\datanode\mysql\bin”路径下,执行

ndbd.exe --install=ndbd

执行完成后,到services中启动ndbd服务即可(服务自动启动,无需保持命令行常开)

 

九、启动SQL节点:

切换至:192.168.14.129、192.168.14.130两台服务器都需要如下操作,到到services中启动MySQL服务即可

 

十、查看连接状态:

切换至192.168.14.128管理节点服务器,命令行里分别执行

C:\mysql\bin\ndb_mgm
show

如图:

即表示各节点启动成功。

 

十一、测试

在192.168.14.129、192.168.14.130两台SQL节点服务器中,

任选一台服务器A中,启动Navicat连接mysql,创建数据库test,并执行以下语句

CREATE TABLE `country` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '国家id',
  `country_code` varchar(20) NOT NULL COMMENT '国家代码',
  `name` varchar(20) NOT NULL COMMENT '国家名称',
  PRIMARY KEY (`id`)
) ENGINE=ndbcluster DEFAULT CHARSET=utf8 COMMENT='国家';

ENGINE=ndbcluster表示该表为数据节点可操作,没有则不同步。

并插入数据:

insert into country (country_code,name) values ('086','China');

再到另一台服务器B中,启动Navicat连接mysql,查看数据是否同步过去了。

 

十二、修改MYSQL密码

在192.168.14.129、192.168.14.130两台SQL节点服务器中,运行CMD命令行,切换至C:\mysql-cluster\sqlnode\mysql\bin路径下,分别执行:

mysql -uroot
use mysql
set password for 用户名@localhost = password('新密码');
 //如set password for root@localhost = password('123456');
flush privileges;
exit

 

十三、Java访问mysql集群:

jdbc:mysql:loadbalance://192.168.14.129:3306,192.168.14.130:3306/test?roundRobinLoadBalance=true

使用roundRobin算法,若是其中一台机器down掉以后,将会自动将不能访问的数据库服务器 踢除,如果还原后将继续进行压力分载。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值