1、官网下载对应版本mysql_cluster安装包
https://dev.mysql.com/downloads/cluster/
2、搭建环境
搭建过程中,用三台计算机来实现MySQL-Cluster环境的配置,具体环境如下:
管理节点(MGM)服务器:192.168.131.130 主机名:jwing nodeid=1
数据节点1(NDB ):192.168.131.131 nodeid=2
数据节点2(NDB):192.168.131.132 nodeid=3
SQL节点1:192.168.131.131 nodeid=4
SQL节点2:192.168.131.132 nodeid=5
3、如果之前安装过mysql-server,在进行此次实验之前,需要将mysql-server卸载,执行以下指令卸载mysql
sudo apt-get autoremove –purge mysql-server
sudo apt-get remove mysql-server
sudo apt-get autoremove mysql-server
sudo apt-get remove mysql-common
管理节点配置
这里将主机ip为192.168.131.130的服务器作为管理节点,进行下面的配置:
// 将下载好的安装包解压到自己选择的目录下,并修改个短一点的名字
cd /usr/local
tar -zxvf /home/jwing/Downloads/mysql-cluster-gpl-7.3.18-linux-glibc2.12-x86_64.tar.gz
mv mysql-cluster-gpl-7.3.18-linux-glibc2.12-x86_64 mysql_cluster
// 将管理命令(ndb_mgm,ndb_mgmd)复制到/usr/local/bin下
cd mysql_cluster/bin
cp ndb_mgm* /usr/local/bin
// 新建管理文件并配置
mkdir /var/lib/mysql-cluster
cd /var/lib/mysql-cluster
vi config.ini
config.ini文件内容:
# Options affecting ndbd processes on all data nodes:
[NDBD DEFAULT]
NoOfReplicas=2
DataMemory=80M
IndexMemory=18M
# TCP/IP options:
[TCP DEFAULT]
#portnumber=2202
# Management process options:
[NDB_MGMD]
nodeid=1
HostName=192.168.131.130
DataDir=/var/lib/mysql-cluster/
# Options for data node :
[NDBD]
nodeid=2
HostName=192.168.131.131
DataDir=/usr/local/mysql_cluster/data/
# Options for data node :
[NDBD]
nodeid=3
HostName=192.168.131.132
DataDir=/usr/local/mysql_cluster/data/
# SQL node options:
[MYSQLD]
nodeid=4
HostName=192.168.131.131
[MYSQLD]
nodeid=5
HostName=192.168.131.132
数据节点与sql节点配置
在192.168.131.131主机与192.168.131.132主机上均进行以下配置
1、检查是否已有mysql用户与mysql组,若不存在,手动新增
查看:
cat /etc/passwd
cat /etc/group
新增:
groupadd mysql
useradd -g mysql mysql
2、解压
// 将下载好的安装包解压到自己选择的目录下,并修改个短一点的名字
cd /usr/local
tar -zxvf /home/jwing/Downloads/mysql-cluster-gpl-7.3.18-linux-glibc2.12-x86_64.tar.gz
mv mysql-cluster-gpl-7.3.18-linux-glibc2.12-x86_64.tar.gz mysql_cluster
// 将ndbd命令复制到/usr/local/bin下
cd mysql_cluster/bin
cp ndbd /usr/local/bin
3、创建系统数据库:
cd /usr/local/mysql_cluster
apt-get install libaio1 libaio-dev
scripts/mysql_install_db --user=mysql
(报错提示主机名不匹配,可能是压缩包下载的版本(确认操作系统是32位还是64位)问题。若是提示文件夹不存在,可能是压缩包版本(有些版本没有scripts文件夹)问题或是因为之前mysql没有完全卸载。或者在bin目录底下)
4、设置权限
chown -R root .
chown -R mysql data
chgrp -R mysql .
5、设置自启动
// 将MySQL启动脚本拷贝恰当的目录下
cp support-files/mysql.server /etc/init.d
// 使之成为可执行的脚本
chmod +x /etc/init.d/mysql.server
// 设置它能在启动操作系统时启动
apt-get install sysv-rc-conf
sysv-rc-conf mysql.server on
6、配置my.cnf
数据节点与sql节点可在同一个文件中配置,配置文件的默认位置为/etc/my.cnf
// 新建并编辑my.cnf
vi /etc/my.cnf
6、配置my.cnf
数据节点与sql节点可在同一个文件中配置,配置文件的默认位置为/etc/my.cnf
// 新建并编辑my.cnf
vi /etc/my.cnf
my.cnf内容:
[MYSQLD]
ndbcluster
ndb-connectstring=192.168.131.130
#管理节点ip
[MYSQL_CLUSTER]
ndb-connectstring=192.168.131.130
#管理节点ip
7、配置mysql环境变量
vi /etc/profile
source /etc/profile
在文件最下方配置内容如下:
export MYSQL_HOME=/usr/local/mysql_cluster
PATH=${MYSQL_HOME}/bin:$PATH
export PATH
运行
1、管理节点:
配置结束后运行ndb_mgmd --ndb-nodeid=1 --initial --configdir=/var/lib/mysql-cluster/ -f /var/lib/mysql-cluster/config.ini。失败的情况请用命令ndb_mgmd --help查看参数提示。确保配置文件路径与配置文件内容是正确的。
ndb_mgm可进入管理模式,再输入show可查看当前各节点状态:
2、数据节点:
运行ndbd --initial
(参数--initial
只有第一次运行需要添加,该参数会导致之前的内容清空)
数据节点连接后:
3、sql节点:
/usr/local/mysql_cluster/bin/mysqld_safe --user=mysql &
// 若执行上方命令时出现不能同时写syslog和error.log的情况,则使用以下指令:
/usr/local/mysql_cluster/bin/mysqld_safe --user=mysql --skip-syslog &
均连接成功后:
测试
1、登录mysql(以下数据库的操作方式不多做赘述)
在192.168.131.131与192.168.131.132登录mysql
mysql -u root -p // 安装的默认密码
2、同步测试
在192.168.131.131主机的mysql上新建数据库、表与数据。在192.168.131.132主机的mysql中查看数据是否已经被同步。
create database cluster;
use cluster;
// 创建表时需要指定引擎为ndbcluster(engine=ndb or engine=ndbcluster)
create table test(id int, name char(10))engine=ndb;
insert into test(id, name)values(1,"myname");
3、高可用测试
在192.168.131.131主机中关闭ndbd连接
pkill ndbd //关闭ndbd有关进程
修改其中一个节点,查看数据是否同步。
在192.168.131.132主机中关闭sql节点的连接
pkill mysqld //关闭mysqld有关进程
在192.168.131.131主机中修改数据,再将192.168.131.132主机中的节点连接回去,查看数据是否同步。
(关闭节点后能在管理节点的ndb_mgm观察到状态)此时继续测试集群的同步性时可以发现数据仍然同步,说明了当有一个SQL节点或数据节点宕机后,整个MySQL-Cluster环境仍然可以工作。
---------------------
以上参考:https://blog.csdn.net/a807557328/article/details/78247269
注意:(远程连接授权是新建用户不是直接授权。否则会报错的)
二、为需要远程登录的用户赋予权限
1、新建用户远程连接mysql数据库
grant all on *.* to admin@'%' identified by '123456' with grant option;
flush privileges;
允许任何ip地址(%表示允许任何ip地址)的电脑用admin帐户和密码(123456)来访问这个mysql server。
注意admin账户不一定要存在。
2、支持root用户允许远程连接mysql数据库
grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
flush privileges;