MySQL集群是一个共享的、分布式节点架构的存储方案,其目的是提供容错性和高性能;“NDB”是一种“内存中”的存储引擎,也是事务型存储引擎,具备ACID属性。
管理节点:负责管理MySQL Cluster内的其他节点,如提供配置数据、启动并停止节点、运行备份等;由于这类节点负责管理其他节点的配置,应在启动其他节点之前首先启动这类节点。MGM节点是用命令“ndb_mgmd”启动的。
数据节点:用于保存Cluster的数据,数据节点的数目与副本的数目相关,是片段的倍数,数据节点是用命令“ndb”启动的。
SQL节点:用来访问Cluster数据的节点,也就是Mysql服务,可以使用service mysqld start启动的。
架构图
1、MySQL集群版安装环境配置
MySQL集群版安装过程的所有操作步骤都需要使用root用户进行(此项步骤需要在集群中所有主机上进行操作)
#mkdir setups
首先,把相关软件包上传到root家目录新建的“setups”目录下
#rmp -qa | grep mysql #匹配mysql关键字查询包
#yum list installed | grep mysql #列出本机yum方式安装的MySQL软件
#rpm -qa | grep mariadb #检查是否已经安装了MariaDB软件,该软件会与MySQL软件的数据库内核产生冲突,在安装MySQL数据库之前需要将其删除
#rpm -e --nodeps 软件包名 #将已安装的MariaDB软件删除,rpm源码安装删除方法
#rpm -qa | grep libiao #检查本机是否yum方式安装了libiao软件,MySQL数据库的安装需要依赖与该软件,若软件没有安装,使用“yum list installed | grep libiao”命令进行安装此软件
检查mysql用户组、用户是否存在,若不存在就创建;创建mysql用户并加入到mysql用户组,选项“-r”表示该用户是内部用户,
不允许外部登录
#sestatus -v #查看当前系统中SELinux服务的运行状态,需要进行永久关闭
#vi /etc/selinux/config
找到配置项“SELINUX”所在行,将其改为以下内容:SELINUX=disabled,然后重启虚拟机
2、MyS集群版基本安装配置
以下步骤需要在集群中所有主机上进行操作
将MySQL Cluster软件包解压到创建的“mysql”目录下
#In -s /mysql/mysql-cluster-gpl-7.5.7-linux-glibc2.12-x86_64 mysql
#在“/usr/local”目录下创建一个名为“mysql”的链接指向MySQL Cluster所在的目录,MySQL源路径以MySQL Cluster软件包实际解压解包的路径为准
#mkdir data #创建存放MySQL数据库数据的目录
#chmod 770 data #更改该数据目录的权限设置
#chown -R mysql . #chgrp -R mysql . #更改当前“mysql”目录的所属用户和所属组
#vi /etc/profile #配置MySQL相关的环境变量,修改系统的配置文件
在文件末尾添加以下内容,要确保输入正确,否则可能会导致所有命令无法使用,书写与定义顺序要一致
#source /etc/profile #使配置的环境变量立即生效
#echo $MYSQL_CLUSTER_HOME #echo $PATH
#查看新添加和修改的环境变量是否设置成功,以及环境变量的值是否正确
3、配置管理节点Cluster-01
以下步骤需要在集群中所有管理节点主机上进行操作
#cd /usr/local/mysql #进入MySQL Cluster软件所在的目录
#mkdir mysql-cluster #创建存放MySQL Cluster数据的目录
创建MySQL Cluster数据的目录后更改“mysql-cluster”目录的所属用户和所属组
#mkdir etc #创建用于存放MySQL Cluster管理节点配置文件的目录
#touch config.ini #创建MySQL Cluster管理节点的配置文件
#vi config.ini #对配置文件进行修改
#chown -R mysql. #chgrp -R mysql . #更改当前“etc”目录的所属用户和所属组
#ndb_mgmd -f /usr/local/mysql/etc/config.ini --initial
#启动MySQL Cluster的管理节点,首次启动或配置后启动需要添加参数“- -initial”,
正常启动时不需要添加参数“- -initial”
#ps -ef | grep ndb_mgmd #查看系统进程信息,若存在信息中包含“ndb_mgmd”关键字的进程则表示MySQL Cluster的管理节点启动成功
#ndb_mgm #进入MySQL Cluster管理节点的控制台
#show #在控制台使用命令“show”可以查看节点状况
4、配置数据服务节点Cluster-02、Cluster-03
以下步骤需要在集群中所有数据服务节点主机上进行操作
#touch my.cnf #创建MySQL Cluster数据服务节点的配置文件
#vi my.cnf #对配置文件进行修改,运行NDB存储引擎,指定管理节点地址
#启动数据服务节点节点,首次启动或配置后启动需要添加参数“- -initial”,正常启动时不需要添加参数“- -initial”
#ps -ef | grep ndb_ndbd #查看系统进程信息,若存在信息中包含“ndb”关键字的进程则表示MySQL Cluster的数据服务节点启动成功
#ndb_mgm #进入MySQL Cluster管理节点的控制台
#show #在控制台使用命令“show”可以查看节点状况,若有相应数据服务节点的链接信息,则表示数据服务节点启动并连接成功
5、配置SQL服务节点Cluster-04、Cluster-05
以下步骤需要在集群中所有SQL服务节点主机上进行操作
#touch my.cnf #创建MySQL Cluster数据服务节点的配置文件
#vi my.cnf #对配置文件进行修改,运行NDB存储引擎,指定管理节点地址
#mysqld - -initial - -user=mysql - -basedir=/usr/local/mysql - -datadir=/usr/local/
Mysql/data #对MySQL数据库的安装进行初始化,执行该命令后会有一些提示信息,特别注意最后一行的“[NOTE]”相关信息,信息内容如下:[NOTE] A temporary is generatedfor root@localhost:XXX,二“XXX”是初始密码,在首次扥估数据库时使用。
#cp /usr/local/mysql/support-fles/mysql.server /etc/ini.d/mysql
#将MySQL加入到系统的可控制启动服务目录内,并将服务名命名为“mysql”
#service mysql start #启动SQL服务节点
#ps -ef | grep #查看系统进程信息,若存在信息中包含“mysql”关键字的进程则表示MySQL Cluster的SQL服务节点启动成功
#ndb_mgm #进入MySQL Cluster管理节点的控制台
#show #在控制台使用命令“show”可以查看节点状况,若有相应数据服务节点的链接信息,则表示数据服务节点启动并连接成功
#mysql -u root -p #登录MySQL数据库,会提示输入密码,改密码为之前进行安装初始化时所显示的初始密码,正确输入密码成功登录MySQL数据库之后会进入MySQL的控制台
SET PASSWORD=PASSWORD(‘123456’); #在MySQL控制台使用此命令,重新设置数据库的“root”用户的登录密码,其中‘123456’部分为自定义密码
USE mysql; #在MySQL控制台使用命令“SE mysql”;切换到“mysql”数据库
UPDATE user SET host=’%’ WHERE user=’root’;
#在MySQL控制台使用此命令,修改数据库的root用户所接收请求来源范围,允许远程登录
select host from user where user=’root’; #查看数据库的host信息
FLUSH PRIVLEGES; #在MySQL控制台使用此命令刷新数据库权限信息使新配置的权限生效
exit #在MySQL控制台使用命令“exit”可以退出MySQL控制台返回到系统命令行界面
6、MySQL集群版验证
#mysql -u root -p #在任意一台SQL服务节点主机上使用此命令登录到MySQL数据库,会提示输入密码,输入密码成功登录MySQL数据库之后进入MySQL的控制台,如在Cluster-04
CREATE DATBASE test; #在MySQL控制台使用此命令创建数据库“test”
#mysql -u root -p #在任意一台SQL服务节点主机上使用此命令登录到MySQL数据库,会提示输入密码,输入密码成功登录MySQL数据库之后进入MySQL的控制台,如在Cluster-05
SHOW DATABASE; #在MySQL控制台使用此命令显示数据库列表,若存在名为“test”的数据库,则表示集群同步数据成功
在任意一台集群主机上执行:ndb_mgm -e show,如在Cluster-03主机上进行
启动顺序:管理节点->数据节点->SQL节点
命令分别是:ndb_mgmd -f /usr/local/mysql/etc/config.ini、ndbd、service mysql start
关闭顺序:SQL节点->数据节点->管理节点
命令分别是:service mysql stop、ndb_mgm -e shutdown
7、MySQL集群测试
1、测试一
在一个SQL节点上进行相关数据库的创建,然后到另外一个SQL节点上查看数据是否同步
在SQL节点即Cluster-04节点上执行:
然后在SQL节点即Cluster-05节点上查看数据是否同步过来
2、测试二
关闭一个数据节点,在另一个节点写输入,开启关闭的节点,看看数据是否同步过来
首先把数据节点1重启,然后在节点2上添加数据
在SQL节点2(Cluster-05)上操作如下
数据节点1(Cluster-04)上查看数据是否同步过去