应用场景
数据存储在mysql中,单节点存储如果数据量十分大,数据就很可能存不下。因此我们需要搭建部署mysql的集群模式,增加数据的存储量,而且提到数据库访问的并发。
操作步骤
1. 概述
MySQL 群集是 MySQL 适合于分布式计算环境的高可用、高冗余版本。它采用了 NDB Cluster 存储引擎,允许在 1
个群集中运行多个 MySQL 服务器。
MySQL Cluster 由一组计算机构成,每台计算机上均运行着多种进程,包括 MySQL 服务器,NDB Cluster 的数据节点,管理服务器,以及(可能存在的)专门的数据访问程序。
2. 系统环境
2.1 拓扑结构
Mysql集群拓扑结构如下所示:
节点环境说明:
节点/hostname | IP地址 | 系统 | 作用 |
---|---|---|---|
管理节点 /node1 | 192.168.202.20 | CentOS 6.6 64位 | 管理数据节点、sql节点 |
数据节点 /node2 | 192.168.202.21 | 存储数据 | |
数据节点 /node3 | 192.168.202.22 | ||
数据节点 /node4 | 192.168.202.23 | ||
数据节点 /node5 | 192.168.202.24 | ||
Sql节点 /sql1 | 192.168.202.7 | 给客户端提供sql服务 | |
Sql节点 /sql2 | 192.168.202.8 |
2.2 服务器配置
服务端硬件配置要求 | |
---|---|
CPU | Xeon 2.4GHz 双CPU处理器 |
内存 | 12G + |
硬盘 | 300G + |
操作系统 | CentOS 6.6×64 |
数量 | 7台服务器,能互相通信 |
3. 安装配置
3.1 准备工作
下载MySQL安装包,放于每台服务器的/usr/local/src目录下。
3.2 环境清理
安装服务端软件之前,务必检查当前服务器是否“干净”,即计算机在安装完操作系统和更新过重要补丁后没有安装过其他版本MySQL软件(解压缩等基本工具除外);
如果之前已经安装过服务端相关MySQL软件,请务必按照软件卸载说明卸载删除之前的版本。 具体操作如下:
清理之前操作系统自带的MySQL安装:
# yum -y remove mysql
然后使用如下命令查找mysql包:
# rpm -qa | grep mysql*
如果查找到,例如:mysql-libs-5.1.71-1.el6.x86_64,我们要对1个剩余的M与SQL包进行手动删除清理:
# rpm -e --nodeps mysql-libs-5.1.71-1.el6.x86_64
3.3 关闭防火墙和selinux
关闭防火墙
# chkconfig iptables off
关闭 selinux
# vim /etc/selinux/config #(改为SELINUX=disabled)保存退出,
重启服务器
# reboot
3.4 软件安装
由于软件安装包在/usr/local/src/目录下,需要切换到该目录进行操作。
# cd /usr/local/src/
# tar -xzvf mysql-cluster-gpl-7.4.5-linux-glibc2.5-x86_64.tar.gz
# mv /usr/local/src/mysql-cluster-gpl-7.4.5-linux-glibc2.5-x86_64/* /usr/local/src/mysql
注:第二个语句,解压mysql压缩包,并不一定解压到当前/usr/local/src/目录下,可能默认安装到/root/目录下,所以第三个语句要适当的改变。
3.5 新建mysql用户及用户组
按如下命令,一步步执行,进行新建mysql用户及用户组:
# groupadd mysql
# useradd -g mysql mysql
# chown -R mysql:mysql /usr/local/src/mysql
# chown -R root /usr/local/src/mysql
# chgrp -R mysql /usr/local/src/mysql
3.6 初始化mysql集群
# cd /home/data/usr/local/mysql
# ./scripts/mysql_install_db --user=mysql --basedir=/usr/local/src/mysql --datadir=/usr/local/src/mysql/data
安装目录是datadir=/usr/local/src/mysql/data
3.7 配置管理节点node1
注:删除自带的 /etc/my.cnf
切记:一定要删除掉! 因为ndb_mgmd启动的时候,也会加上/etc/my.cnf的配置内容,干扰我们,所以要删除它
具体操作如下:
# rm -rf /etc/my.cnf
新建配置文件存放目录:
# mkdir /usr/local/src/mysql/etc
# chown mysql:mysql /usr/local/src/mysql/etc
创建配置文件 config.ini
# vim //usr/local/src/mysql/etc/config.ini
config.ini内容如下:
[ndb_mgmd default]
datadir = /usr/local/src/mysql/data
[ndbd default]
NoOfReplicas = 2 #
DataMemory = 6G #
IndexMemory = 2G #
datadir = /usr/local/src/mysql/data
Default value = 20
Changed it to TimeBetweenLocalCheckpoints =6
Default value = 16M
Changed it to FragmentLogFileSize=256M
MaxNoOfTables = 10000
MaxNoOfAttributes = 100000
MaxNoOfOrderedIndexes = 10000
FileSystemPath =/usr/local/src/mysql/data
[ndb_mgmd]
NodeId = 1
HostName = 192.168.202.20
[ndbd]
NodeId = 2
HostName = 192.168.202.21
[ndbd]
NodeId = 3
HostName = 192.168.202.22
[ndbd]
NodeId = 4
HostName = 192.168.202.23
[ndbd]
NodeId = 5
HostName = 192.168.202.24
[mysqld]
NodeId = 6
HostName = 192.168.202.7
[mysqld]
NodeId = 7
HostName = 192.168.202.8
[mysqld]
[mysqld]
[mysqld]
[mysqld]
设置完成,保存退出!
3.8 配置数据节点和sql节点
注:所有的sql节点和data节点的配置文件都是一样的,都指向主节点,接受主节点管理。
拷贝文件
# cp -rf /usr/local/src/mysql/support-files/mysql.server /etc/init.d/mysqld
mysql服务启动时会默认加载/etc/my.cnf作为其配置文件,修改节点上的my.cnf配置文件,内容如下:
[mysqld]
max_connections=100
datadir=/usr/local/src/mysql/data
basedir=/usr/local/src/mysql
ndbcluster
lower_case_table_names=1
innodb_lock_wait_timeout=500
ndb-connectstring=192.168.202.20
port=3306
[mysql_cluster]
ndb-connectstring=192.168.202.20
[ndb_mgm]
connect-string=192.168.202.20
[ndb_mgmd]
config-file=/usr/local/src/mysql/etc/config.ini
配置完成,保存退出!
MySql集群到此已经配置完成!下面我们就可以对它进行使用!
4. 集群启动
注:集群搭建完毕后,启动节点,必须按照如下启动顺序:
先启动管理节点(168.202.20 node1)
然后启动数据节点(192.168.202.21~192.168.202.24,node2 node3 node4 node5分别开启)
最后启动sql节点(192.168.202.7,192.168.202.8,sql1 sql2),具体启动操作如下所示。
4.1 启动管理节点
注:–initial 首次加载/usr/local/src/mysql/etc/config.ini文件,其它时候不要加,除非是在备份、恢复或配置变化后重启时,不然数据就清空。
初始化启动方式
# /usr/local/src/mysql/bin/ndb_mgmd -f /usr/local/src/mysql/etc/config.ini --initial
正常启动方式
# /usr/local/src/mysql/bin/ndb_mgmd -f /usr/local/src/mysql/etc/config.ini
查看ndb_mgmd是否启动
# ps -ef | grep ndb_mgmd
查看集群状态
# /usr/local/src/mysql/bin/ndb_mgm
-- NDB Cluster -- Management Client --
# ndb_mgm> show
关闭集群
# ndb_mgm> shutdown
退出ndb-mgm
# ndb_mgm> exit
4.2 启动数据节点
注:安装后第一次启动数据节点时要加上–initial参数,其它时候不要加,除非是在备份、恢复或配置变化后重启时。
初始化启动方式
# /usr/local/src/mysql/bin/ndbd --initial
正常启动:
# /usr/local/src/mysql/bin/ndbd
4.3 启动sql节点
启动 SQL 节点(等数据节点启动完后等待30秒后执行)
# service mysqld start
关闭 SQL 节点
# service mysqld stop
重启 SQL 节点
# service mysqld restart
检验mysql是否运行
# service mysqld status
到此,mysql集群已启动完毕,但是要像本地单机的mysql数据库一样使用,还需要以下一步操作。