目录
序言
如何应对业务量非常庞大的情景?你可以选择负载均衡你的数据库请求,但还是有一定的关于数据同步的问题。在业务量不大的时候,我们会使用主从复制的方法实现服务器数据同步,虽然进行了读写分离,但是对于读的方法限制还是比较大,所以解决数据同步的问题就是数据库集群的意义。
PS:博主已经将所有坑踩了一遍,只要按照步骤架设,100%成功
下载
OS: CentOS 6.7 三台, 使用VM ware虚拟机搭建,仅主机模式,IP 地址分别为:(192.168.0.100 ,192.168.0.101 192.168.0.102)
MySQL Cluster 版本:mysql-cluster-gpl-7.5.1 , 下载地址请点击此处: 32位 | 64位
需要注意的是:
MySQL Cluster 已经包含 MySQL5.7 不需要在进行下载
管理节点(MGM):MySQL Cluster 负责管理、配置、监控整个集群。
数据节点(NDB):使用内存存放数据,保存进数据节点的数据都会自动复制并存储到其他数据节点。
MySQL节点(API):也叫SQL节点,和我们平时使用的MySQL相同,作为数据库使用,数据节点和SQL节点可以在同一台机子上
安装
你可以通过 wget 获取,也可以使用上方所提供的连接进行下载。
如果通过上方的连接下载,请将下载好的文件通过WinSCP 将文件传输到 /usr/local 下(注:每台虚拟机都要)
解压
tar zxvf mysql-cluster-gpl-7.5.11-linux-glibc2.12-x86_64.tar.gz
进入解压之后的目录
cd mysql-cluster-gpl-7.5.11-linux-glibc2.12-x86_64
将 NDM_MGM 拷到系统目录下 ,并且赋予执行权限 方便使用
cp bin/ndb_mgm* /usr/local/bin
cd /usr/local/bin
chmod +x ndb_mgm*
新建配置文件 && 初始化管理节点
mkdir /var/lib/mysql-cluster
mkdir /usr/local/mysql
vi /var/lib/mysql-cluster/config.ini
以下是关于 config.ini 的配置
[ndbd default]
NoOfReplicas=2
DataMemory=512M
IndexMemory=18M
[ndb_mgmd]
HostName=192.168.0.100
DataDir=/var/lib/mysql-cluster
[ndbd]
HostName=192.168.0.101
DataDir=/var/lib/mysql-cluster
[ndbd]
HostName=192.168.0.102
DataDir=/var/lib/mysql-cluster
[mysqld]
HostName=192.168.0.101
[mysqld]
HostName=192.168.0.102
初始化管理节点
/usr/local/bin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini --initial
当显示 MySQL Cluster Management Server mysql-5.7.23 ndb-7.5.11 表示初始化成功
以下的所有操作需要在所有的集群节点都要进行相同的操作!!!
新增 用户和用户组
groupadd mysql
useradd -g mysql -s /bin/false mysql
新建文件夹并赋予权限
mkdir /var/lib/mysql-cluster
chown root:mysql /var/lib/mysql-cluster
解压
tar zxvf mysql-cluster-gpl-7.5.11-linux-glibc2.12-x86_64.tar.gz
创建短文件名的目录链接 并 切换目录
ln -s /usr/local/mysql-cluster-gpl-7.5.11-linux-glibc2.12-x86_64 /usr/local/mysql
cd /usr/local/mysql/bin
初始化 MySQL
./mysqld --initialize
注意:初始化成功后会产生随机密码,之后登录数据库会用到,请在notepad记录
紧接着切换到MySQL根目录
chown -R root .
mkdir data
chown -R mysql data
chgrp -R mysql .
cp support-files/mysql.server /etc/rc.d/init.d/
chmod +x /etc/rc.d/init.d/mysql.server
chkconfig --add mysql.server
配置数据节点
vi /etc/my.cnf
在原有的基础上按照规则 添加如下配置
[mysqld]
ndbcluster
ndb-connectstring=192.168.0.100
[mysql_cluster]
ndb-connectstring=192.168.0.100
启动MySQL节点
/etc/init.d/mysql.server start
登录MySQL 以及修改密码 和允许远程访问
cd bin
./mysql -uroot -p # 将刚才存储的随机MySQL密码 复制进来
以下是 MySQL 命令:
use mysql;
UPDATE userSET HOST = '%' WHERE USER ='root'; # 允许远程访问
ALTER USER 'root'@'localhost'IDENTIFIED BY '这里填你要修改的密码'; # 修改密码
启动NDB
/usr/local/mysql/bin/ndbd --initial
如果出现以下信息表示启动成功
2018-08-30 21:21:20 [ndbd] INFO -- Angel connected to '192.168.0.100:1186'
2018-08-30 21:21:20 [ndbd] INFO -- Angel allocated nodeid: 2
查看节点状态
进入 /usr/local/bin 输入 ndb_mgm
在 ndb_mgm 命令行输入 show 如以下所示
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 @192.168.0.101 (mysql-5.7.23 ndb-7.5.11, Nodegroup: 0, *)
id=3 @192.168.0.102 (mysql-5.7.23 ndb-7.5.11, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.0.100 (mysql-5.7.23 ndb-7.5.11)
[mysqld(API)] 2 node(s)
id=4 @192.168.0.101 (mysql-5.7.23 ndb-7.5.11)
id=5 @192.168.0.102 (mysql-5.7.23 ndb-7.5.11)
如果你已到达这一步,表示已经安装成功!
测试
使用Navicat for MySQL 创建两台连接,在任意一个连接创建数据库/表/记录 你会发现所有连接的数据都是同步的
注:建表时请注意 存储引擎 为 ENGINE=NDBCLUSTER
启动 && 停止
启动顺序:MGM初始化 —》 MySQL节点启动 —》 NDB启动
管理节点关闭命令:ndb_mgm -e shutdown
NBD关闭 初始化 去掉 --initial 即可
总结
爱生活,爱代码!以后想好再补吧