Mysql-cluster 集群搭建

CentOs 版本 CentOS Linux release 7.5.1804 (Core)
查看CentOs 版本指令

cat /etc/redhat-release

mysql-cluster 版本
mysql-cluster-gpl-7.2.34-linux-glibc2.12-x86_64.tar.gz

准备工作

三台虚拟机 分别用来创建管理节点 sql节点 数据节点

解压缩mysql-cluster 至 /user/local/mysql 目录下, 并重命名

tar -zxvf mysql-cluster-gpl-7.2.34-linux-glibc2.12-x86_64.tar.gz -C /usr/local
mv mysql-cluster-gpl-7.2.34-linux-glibc2.12-x86_64 mysql

关闭防火墙

systemctl stop firewalld

创建用户组, 添加用户并授权

groupadd mysql
useradd -g mysql mysql
chown -R mysql.mysql /usr/local/mysql

管理节点搭建

mkdir /var/lib/mysql-cluster   #创建存放配置文件的文件夹
vi /var/lib/mysql-cluster/config.ini  #创建配置文件

文件内容:

[ndbd default]
NoOfReplicas=1
DataMemory=512M
IndexMemory=18M

[ndb_mgmd]
HostName=192.168.59.131  #管理节点ip
DataDir=/var/lib/mysql-cluster  #用于存放节点数据, 可以自己指定目录

[ndbd]
HostName=192.168.59.133  #数据节点ip
DataDir=/var/lib/mysql-cluster

[mysqld]
NodeId=23  
HostName=192.168.59.135  #sql节点ip

管理节点初始化:

/usr/local/mysql/bin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini --initial  #第一次需要 initial 参数
ndb_mgm  #进入管理节点

在这里插入图片描述

数据节点搭建

解压mysql-cluster 并创建mysql组, 授权mysql 用户之后
配置文件 vi /etc/my.cnf

[mysqld]
ndbcluster
ndb-connectstring=192.168.59.131

[mysql_cluster]
ndb-connectstring=192.168.59.131
/usr/local/mysql/bin/ndbd --initial    #初始化  第一次携带 --initial 参数

sql节点搭建

解压mysql-cluster 并创建mysql组, 授权mysql 用户之后
配置文件 vi /etc/my.cnf

[mysqld]
ndbcluster
ndb-connectstring=192.168.59.131

[mysql_cluster]
ndb-connectstring=192.168.59.131
scripts/mysql_install_db   --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data 
/usr/local/mysql/support-files/mysql.server start   #启动sql节点

备注

启动mysql集群。启动顺序为:管理节点→数据节点→SQL节点。
关闭时只需要关闭管理节点,后面的数据节点会同时被关闭,mysql就和原来一样即可
管理节点关闭命令:ndb_mgm -e shutdown
(执行完成之后管理节点会关闭,数据节点也会关闭,但SQL节点不会,也就是数据库服务需要手动到每一台服务器上停止以保证数据同步)

参考: https://www.cnblogs.com/linkstar/p/6510713.html

疑问?

1.数据节点和mysq节点my。ini怎么配置?
2.ndb-connectstring=192.168.1.10 是自己还是别人?
3.数据节点和mysql节点是用一套程序还是两套?
4.只有一个数据节点可以吗?
5.动态扩展一个节点元数据可以保留吗?
6.动态增加节点需要关闭集群吗?

//
“Illegal value 0 for parameter NodeId.” —— NodeId 不能用0

//20181010 重试
参考
https://www.cnblogs.com/liangyihui/p/5886799.html

管理节点(能启动和停止节点,不能停止SQL节点)

./bin/ndb_mgmd --config-file="/usr/local/mysql/config.ini" --configdir="/usr/local/mysql" --initial #首次启动(参数不能省)
./bin/ndb_mgmd --config-file="/usr/local/mysql/config.ini" --configdir="/usr/local/mysql" #再次启动
./bin/ndb_mgm #查看状态
./bin/ndb_mgm -e shutdown #关闭节点(不能停止SQL节点)
./bin/ndb_mgm -e status #查看状态
./bin/ndb_mgm -e show #查看状态

关闭子节点:
./bin/ndb_mgm
12 stop #(不能停止SQL节点)

show #

#数据节点
vi /etc/my.cnf
./bin/ndbd --initial #首次连接
./bin/ndbd #再次连接

#sql节点
./scripts/mysql_install_db --user=mysql #没想到还必须初始化表
./support-files/mysql.server start
./support-files/mysql.server restart #重启
./support-files/mysql.server stop #关闭

报错".The server quit without updating PID file"
解决:

#启动集群
启动的顺序是 1:管理节点 2:数据节点 3:SQL节点

#关闭集群
./support-files/mysql.server stop #手动关闭SQL节点
./bin/ndb_mgm -e shutdown #(不能停止SQL节点)

//动态添加节点

管理节点

./bin/ndb_mgmd --config-file="/usr/local/mysql/config.ini" --configdir="/usr/local/mysql" --reload
./bin/ndb_mgmd --config-file="/usr/local/mysql/config.ini" --configdir="/usr/local/mysql" --initial #后面需要跟这句
./bin/ndb_mgm -e show #发现新节点信息

//建表
唯一需要注意的是,创建表的时候必须选择表的引擎为NDBCLUSTER,否则表不会进行同步
create table test1(id int,name varchar(10)) engine=ndb ;

//集群测试
1建表 2插入数据
1故障 2写入 1接入 2故障 1查询
#故障
1断网 2写数据 1联网查数据
备份
1故障 备份
还原
1故障 还原

//默认
/usr/local/mysql/mysql-cluster
The default config directory ‘/usr/local/mysql/mysql-cluster’ does not exist. Trying to create it…

启动管理节点

./bin/ndb_mgmd --config-file="/usr/local/mysql-cluster/config.ini" --configdir="/usr/local/mysql-cluster/"
“MySQL Cluster Management Server mysql-5.5.61 ndb-7.2.34” //启动成功,监听1186端口
./bin/ndb_mgm //查看
./bin/ndb_mgm -e shutdown //关闭

//启动数据节点

“at line 15: Parse error” —— windows 换行符和linux不同
#启动数据节点
./bin/ndbd --initial
报错"Unable to connect with connect string: nodeid=0,localhost:1186",哪来的nodeid=0?
解决:真正的配置文件在 /etc/my.cnf,而且不可以指定。
“Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf”

启动mysql节点

错误: "[ERROR] Can’t find messagefile '/usr/local/mysql/share/errmsg.sys"

解决1:指定 --basedir=""
./bin/mysqld --default-file="/usr/local/mysql-cluster/my.ini" --basedir="/usr/local/mysql-cluster" --datadir="/usr/local/mysql-cluster/data"
解决2:(未测试)/mysql/my.cnf
basedir=
datadir=
报错: “[ERROR] Fatal error: Can’t change to run as user ‘mysql’ ; Please check that the user exists!”
解决:
useradd mysql
chown -R mysql:mysql mysql

报错:" [ERROR] Can’t open the mysql.plugin table. Please run mysql_upgrade to create it."
解决:

疑问:究竟是my.ini 还是 my.cnf?
解决:
windows: my.ini
linux: my.cnf

./bin/mysqld --defaults-file="/etc/my.cnf" --basedir="/usr/local/mysql-cluster" --datadir="/usr/local/mysql-cluster/data"

[ndb_mgmd]
NodeId=2
HostName=192.168.2.1
DataDir=D:\program\mysql-cluster-gpl-7.2.34-winx64\data

#/etc/my.cnf 源文件
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
#Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

#/etc/my.cnf 修改后

//全部功能都是单节点测试
报错: “Starting MySQLCouldn’t find MySQL server (/usr/local/mysql/[失败]sqld_safe)”

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值