centos7 mysql集群
本文基于3台虚拟机搭建mysql集群,一台管理节点,两台数据节点
1.安装mysql集群版(如果已经装有其他版本,先卸载)
下载地址: https://dev.mysql.com/downloads/cluster/
我选择的是linux-generic版本
# 进入安装目录
cd /usr/local
# 下载
wget https://dev.mysql.com/get/Downloads/MySQL-Cluster-7.6/mysql-cluster-gpl-7.6.7-linux-glibc2.12-x86_64.tar.gz
# 解压
tar xvf mysql-cluster-gpl-7.6.7-linux-glibc2.12-x86_64.tar.gz
重点: 这一步管理节点和数据节点的机器都需要操作
2.配置mysql管理节点
# 将执行文件复制到用户执行目录下 方便之后可以直接执行运行命令
cp bin/ndb_mgm* /usr/local/bin
cd /usr/local/bin
# 添加执行权限
chmod +x ndb_mgm*
# 新建数据存放目录
mkdir /var/lib/mysql-cluster.
# 新建mysql目录
mkdir /usr/local/mysql
# 新增配置文件并编辑
vi /var/lib/mysql-cluster/config.ini
配置如下
[ndbd default]
NoOfReplicas=2
DataMemory=512M
IndexMemory=18M
[ndb_mgmd]
HostName=172.16.12.29 #管理节点ip 即当前ip
DataDir=/var/lib/mysql-cluster
[ndbd]
HostName=172.16.12.27 #数据节点ip
DataDir=/var/lib/mysql-cluster
[ndbd]
HostName=172.16.12.28 #数据节点ip
DataDir=/var/lib/mysql-cluster
[mysqld]
[mysqld]
# 初始化管理节点
ndb_mgmd -f /var/lib/mysql-cluster/config.ini --initial
# 查询端口是否开放
firewall-cmd --zone=public --query-port=1186/tcp
# 如果没有则执行以下命令 开放端口
firewall-cmd --zone=public --add-port=1186/tcp --permanent
firewall-cmd --reload
3.配置数据节点
# 新增mysql用户组
groupadd mysql
# 新增mysql用户 并禁止该用户用于登录
useradd -g mysql -s /bin/false mysql
# 创建mysql数据文件目录
mkdir /var/lib/mysql-cluster
# 分配权限
chown root:mysql /var/lib/mysql-cluster
# 进入bin目录
cd /usr/local/mysql-cluster-gpl-7.6.7-linux-glibc2.12-i686/bin
# 执行mysql初始化
./mysqld --initialize
# 回到安装目录
cd /usr/local/mysql-cluster-gpl-7.6.7-linux-glibc2.12-i686
# 分配权限
chown -R root .
chgrp -R mysql .
# 注册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
# 管理节点ip
ndb-connectstring=172.16.12.29
[mysql_cluster]
# 管理节点ip
ndb-connectstring=172.16.12.29
# 启动服务
/etc/init.d/mysql.server start
注意: 如果报错 mysqld_safe error: log-error set to '/var/log/mariadb/mariadb.log', however file don't exists. Create writable for user 'mysql' 则执行以下命令
# 创建日志文件 并分配权限
mkdir /var/log/mariadb
touch /var/log/mariadb/mariadb.log
chown -R mysql:mysql /var/log/mariadb/
如果又报错 Starting MySQL. ERROR! The server quit without updating PID file (/var/lib/mysql/localhost.pid).则执行以下
# 分配权限
chown -R mysql:mysql /var/lib/mysql
# 初始化数据节点
/usr/local/mysql/bin/ndbd --initial
# 将执行文件放到usr/local/bin下 方便执行
cp /usr/local/mysql/bin/ndbd /usr/local/bin/
到此就结束了,回到管理节点机器,运行以下命令
# 进入管理控制台
ndb_mgm
# 展示节点 可以看到已连接上的数据节点
show
之后在数据节点新增数据库和表,都会同步到另外一个数据节点中,表引擎要设置为NDBCLUSTER
启动方式
管理节点 执行以下命令
ndb_mgm
数据节点 执行以下命令
ndbd