1、MySQL集群简介
MySQL群集技术在分布式系统中为MySQL数据提供了冗余特性,增强了安全性,使得单个MySQL服务器故障不会对系统产生巨大的负面效应,系统的稳定性得到保障。
MySQL群集需要有一组计算机,每台计算机的角色可能是不一样的。MySQL群集中有三种节点:管理节点、数据节点和SQL节点。群集中的某计算机可能是某一种节点,也可能是两种或三种节点的集合。这三种节点只是在逻辑上的划分,所以它们不一定和物理计算机是一一对应的关系。
管理节点(也可以称管理服务器)主要负责管理数据节点和SQL节点,还有群集配置文件和群集日志文件。它监控其他节点的工作状态,能够启动、关闭或重启某个节点。其他节点从管理节点检索配置数据,当数据节点有新事件时就把事件信息发送给管理节点并写入群集日志。
数据节点用于存储数据。
SQL节点跟一般的MySQL服务器是一样的,我们可以通过它进行SQL操作。
下图中画出了三种群集节点及应用程序间的关系:
2、MySQL集群安装配置
下载MySQL集群:http://dev.mysql.com/downloads/cluster/
如果不使用最新版本,可以去MySQL :: Download MySQL Cluster (Archived Versions)
这样的历史版本页面查找
mysql-cluster-gpl-7.3.5-winx64.zip:
可以根据需要选择,适用于64位操作系统
mysql-cluster-gpl-7.3.5-win32.zip:
可以根据需要选择,适用于32位操作系统
2.1、环境规划简介
首先找三台电脑,或者是开三个虚拟机,管理节点部署在一台机子上,其他两台每台都部署一个数据节点和一个SQL节点。这里以两台机子举例,其中一台(IP为10.37.87.136)部署管理节点、数据节点和SQL节点,另一台(IP为10.37.88.208)部署数据节点和SQL节点。
实际应用中,不要将管理节点跟数据节点部署到一台机子上,因为如果数据节点宕机会导致管理节点不可用,同时整个MySQL群集也就都不可用了。所以一个MySQL群集理想情况下至少有三台服务器,将管理节点单独放到一台服务器上。这里以两台举例,只是为了说明三种节点的配置启动方法。
2.2、配置管理节点
2.2.1、在IP为10.37.87.136的主机的D盘中新建文件夹mysql,然后在此文件夹下新建子目录bin和mysql-cluster,再将安装包中的bin目录下的ndb_mgm.exe和ndb_mgmd.exe拷贝到D:\mysql\bin下。在目录D:\mysql\bin下新建cluster-logs目录、config.ini文件和my.ini文件。
2.2.2、config.ini文件内容如下:
[ndbd default]
# Options affecting ndbd processes on all data nodes:
# Number of replicas
NoOfReplicas=2
DataDir=D:/mysqlcluster/datanode/mysql/bin/cluster-data
# Directory for each data node's data files
# Memory allocated to data storage
DataMemory=80M
# Memory allocated to index storage
IndexMemory=18M
# For DataMemory and IndexMemory, we have used the
# default values.
[ndb_mgmd]
# Management process options:
# Hostname or IP address of management node
HostName=10.37.87.136
# Directory for management node log files
DataDir=D:/mysql/bin/cluster-logs
[ndbd]
# Options for data node "A":
# (one [ndbd] section per data node)
# Hostname or IP address
HostName=10.37.87.136
[ndbd]
# Options for data node "B":
# Hostname or IP address
HostName=10.37.88.208
[mysqld]
# SQL node options:
# Hostname or IP address
HostName=10.37.87.136
[mysqld]
# SQL node options:
# Hostname or IP address
HostName=10.37.88.208
2.2.3、my.ini中的内容如下:
[mysql_cluster]
# Options for management node process
config-file=D:/mysql/bin/config.ini
2.3、配置数据节点
2.3.1、在IP为10.37.87.136的主机中新建文件夹D:\mysqlcluster\datanode\mysql,然后在此文件夹中继续新建子目录bin和cluster-data,bin下再建一个子目录也叫cluster-data。
2.3.2、将安装包data目录下的所有文件拷贝到D:\mysqlcluster\datanode\mysql\cluster-data下
2.3.3、将安装包中bin目录下的ndbd.exe拷贝到D:\mysqlcluster\datanode\mysql\bin下,并在D:\mysqlcluster\datanode\mysql中新建my.ini文件,文件内容为:
[mysql_cluster]
# Optionsfor data node process:
#location of management server
ndb-connectstring=10.37.87.136
注:因为数据节点的配置是一样的,所以我们可以直接将10.37.87.136主机中的文件夹D:\mysqlcluster拷贝到10.37.88.208主机的D盘下。
2.4、配置SQL节点
2.4.1、在10.37.87.136主机的D:\mysqlcluster下新建子目录sqlnode,在D:\mysqlcluster\sqlnode下新建子目录mysql,将安装包文件解压到mysql目录下,然后在D:\mysqlcluster\sqlnode\mysql下新建my.ini文件,文件内容为:
[mysqld]
# Options for mysqld process:
# run NDB storage engine
ndbcluster
# location of management server
ndb-connectstring=10.37.87.136
2.4.2、将my-default.ini 文件删除或更名为my-default.ini.bak
注:因为SQL节点的配置也是一样的,所以我们可以直接将10.37.87.136主机中的文件夹D:\mysqlcluster\sqlnode文件夹整个拷贝到10.37.88.208主机的D盘下。
3、启动MySQL Cluster
3.1 简介
在启动MySQL Cluster之前,首先要做的是保证每个SQL节点上的MySQL服务能够启动成功,并为每个SQL节点进行相关权限的分配以保证能够远程登录访问。然后依次启动三种节点。三种节点服务启动时,一定要按照先启动管理节点,后启动数据节点,再启动SQL节点的顺序进行。
我启动时系统提示了install/remove of the service denied,网上找了办法,使用管理员权限
运行CMD命令后问题解决了。
3.2、启动MySQL服务
3.2.1、进入D:\mysqlcluster\sqlnode\mysql\bin目录下,使用mysqld –install安装MySQL服务,我使用的启动命令是mysqld -install。因为之前我安装成功过,所以再次执行该命令会提示下图内容。
3.2.2、 使用net start mysql命令启动MySQL服务
3.3 配置MySQL远程连接
3.3.1、 进入D:\mysqlcluster\sqlnode\mysql\bin目录下,使用mysql –uroot –p,然后输入密码,设置root用户密码。
我的执行命令是D:\mysqlcluster\sqlnode\mysql\bin\mysql –uroot –p
a、继续想办法解决,尝试不输入密码直接回车,也不行
b、继续想办法解决,
执行D:\mysqlcluster\sqlnode\mysql\bin\mysqld --init-file=E:\mysqlc.txt --console设置密码成功,
其中E:\mysqlc.txt的内容如下:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
发现还是不行。
c、尝试在D:\mysqlcluster\sqlnode\mysql\my.ini配置skip-grant-tables,
,重新启动mysql节点,然后执行D:\mysqlcluster\sqlnode\mysql\bin\mysql –uroot –p
然后不输入密码直接回车,
然后输入use mysql;换库
然后输入update user set password=password(“123456”) where user=”root”;改动成功。
,重新启动mysql节点,然后执行D:\mysqlcluster\sqlnode\mysql\bin\mysql –uroot –p
密码输入123456
然后下一步
3.3.2、 切换到mysql数据库,输入以下命令,为root用户分配远程连接的相关权限
use mysql;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
发现成功了,
3.4、启动管理节点
3.4.1、在10.37.87.136主机中打开命令行窗口,切到D:\mysql\bin目录,输入:
ndb_mgmd -f config.ini --configdir=D:\mysql\mysql-cluster
回车,管理节点服务就启动了,命令行上可能没有任何提示信息,可以打开D:\mysql\bin\cluster-logs\ndb_1_cluster.log日志文件查看启动信息。注意,此命令行窗口不能关闭,除非你想停止服务。
3.4.2、也可以将其做成服务,在命令行中输入:
ndb_mgmd --install=ndb_mgmd -f config.ini --configdir=D:\mysql\mysql-cluster
然后启动命令是net start ndb_mgmd(注意:本人操作时,该命令不能正常使用)。
3.5、启动数据节点
3.5.1、在10.37.87.136主机中打开新命令行窗口
进入D:\mysqlcluster\datanode\mysql\bin\,输入命令ndbd
3.5.2、也可以将其做成服务,在命令行中输入:ndbd --install=ndbd启动命令是net start ndbd
3.5.3、以相同的方法在其他数据节点,即10.37.88.208中启动数据节点服务。
3.5.4、在10.37.87.136主机中打开新命令行窗口,输入:
D:\mysql\bin\ndb_mgm
回车,然后再输入:
ALL STATUS
回车,就可以查看数据节点的连接信息了。
3.6、启动SQL节点
3.6.1、在10.37.87.136主机中打开新命令行窗口,进入D:\mysqlcluster\sqlnode\mysql\bin\,输入:mysqld --console
回车,SQL节点启动,但是报错,如下
3.6.2、也可以将其做成服务,
进入D:\mysqlcluster\sqlnode\mysql\bin\然后执行mysqld -install mysqld然后可以使用net start mysqld启动该服务,查看服务列表可参考windows 查看服务列表的方法_windows怎么查看所有服务_好装机
3.6.3、以相同的方法在其他SQL节点,即10.37.88.208中启动SQL节点。
3.6.4、想要查看SQL节点的启动情况可以在10.37.87.136主机中同样打开新命令行,输入:
D:\mysql\bin\ndb_mgm
回车,再输入:
SHOW
回车,就可以看到SQL节点的连接情况了。