https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-overview.html
管理节点
该节点的作用是管理NDB集群中的其他节点,例如提供配置数据,启动和停止节点以及运行备份等功能。由于此节点类型管理其他节点的配置,因此应首先在任何其他节点之前启动此类型的节点。使用命令ndb_mgmd启动MGM节点
数据节点
该类型的节点存储集群数据
SQL节点
这是一个访问集群数据的节点,必须有mysqld服务进程
下面以4台服务器 ip为 192.168.8.129-192.168.8.132
按照如下节点设置对应的ip
节点
SQL节点 192.168.43.207 对外部客户端提供API (PHP mysql client python…)
数据节点 数据存储 192.168.43.208 192.168.43.209
管理节点 负责协调 调度 192.168.43.210
如果以前安装过mysql 需要删除对应的文件 例如 /usr/local/mysql /etc/my.cnf /etc/init.d/mysql* /etc/rc.d/init.d/mysql*
SQL节点配置
查看/etc/passwd和 /etc/group文件中是否有mysql用户和组 如果没有按照如下指令创建
groupadd mysql
useradd -g mysql -s /bin/false mysql
下载mysqlcluster 这里以下载到/opt目录为例介绍
cd /opt
wget https://dev.mysql.com/get/Downloads/MySQL-Cluster-7.6/mysql-cluster-gpl-7.6.8-linux-glibc2.12-x86_64.tar.gz
然后解压 tar zxvf mysql-cluster-gpl-7.6.8-linux-glibc2.12-x86_64.tar.gz
假设在/opt目录下执行的解压操作 创建一个符号链接到/usr/local/mysql
ln -s /opt/mysql-cluster-gpl-7.6.8-linux-glibc2.12-x86_64 /usr/local/mysql
cd /usr/local/mysql/bin/
初始化mysql 执行 ./mysqld --initialize 执行完毕后要记住随机密码
将mysql目录所有者和组都修改为mysql
cd /usr/local
执行chown -R mysql:mysql mysql/
设置开机自启动 cp mysql/support-files/mysql.server /etc/rc.d/init.d/mysql.server
赋予可执行权限 chmod +x /etc/rc.d/init.d/mysql.server
chkconfig --add mysql.server
启动/etc/rc.d/init.d/mysql.server start
登录mysql
/usr/local/mysql/bin/mysql -uroot -p数据库密码
登陆后可修改mysql密码
use mysql
ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘新密码’;
然后退出可用新密码登录
停止mysql /etc/rc.d/init.d/mysql.server stop 因为还没有设置sql节点的一些配置信息
数据节点
需要拷贝 ndbd 和ndbmtd两个文件到/usr/local/bin目录
同样先解压或者从其他服务器拷贝这两个文件 下面是命令参考
cp bin/ndbd /usr/local/bin/ndbd
cp bin/ndbmtd /usr/local/bin/ndbmtd
也可以从其他机器远程拷贝 例如
scp -P 2233 root@192.168.8.129:/usr/local/mysql/bin/ndbmtd ./
执行如下代码:
scp root@192.168.43.207:/usr/local/mysql/bin/ndbmtd ./
scp root@192.168.43.207:/usr/local/mysql/bin/ndbd ./
如果这两个文件没有可执行权限需要给与x权限
cd /usr/local/bin
chmod +x ndb*
创建数据存储目录 mkdir -p /usr/local/mysql/data
上述目录需要和管理节点中配置的DATAdir一致
chown -R mysql:mysql /usr/local/mysql/
管理节点
需要安装ndb_mgmd和 ndb_mgm 可以按上述方式拷贝 并且赋予可执行权限
各节点配置
https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-install-configuration.html
数据节点和SQL节点需要 vi /etc/my.cnf
按照如下方式配置
[mysqld]
# Options for mysqld process:
ndbcluster # run NDB storage engine
[mysql_cluster]
# Options for NDB Cluster processes:
ndb-connectstring=198.51.100.10 # location of management server
管理节点
mkdir /var/lib/mysql-cluster
cd /var/lib/mysql-cluster
vi config.ini
[ndbd default]
# Options affecting ndbd processes on all data nodes:
NoOfReplicas=2 # Number of replicas
DataMemory=80M # How much memory to allocate for data storage
IndexMemory=18M # How much memory to allocate for index storage
# For DataMemory and IndexMemory, we have used the
# default values. Since the "world" database takes up
# only about 500KB, this should be more than enough for
# this example NDB Cluster setup.
ServerPort=2202 # This the default value; however, you can use any
# port that is free for all the hosts in the cluster
# Note1: It is recommended that you do not specify the port
# number at all and simply allow the default value to be used
# instead
# Note2: The port was formerly specified using the PortNumber
# TCP parameter; this parameter is no longer available in NDB
# Cluster 7.5.
[ndb_mgmd]
# Management process options:
HostName=192.168.43.210 # Hostname or IP address of MGM node
DataDir=/var/lib/mysql-cluster # Directory for MGM node log files
[ndbd]
# Options for data node "A":
# (one [ndbd] section per data node)
HostName=192.168.43.208 # Hostname or IP address
NodeId=2 # Node ID for this data node
DataDir=/usr/local/mysql/data # Directory for this data node's data files
[ndbd]
# Options for data node "B":
HostName=192.168.43.209 # Hostname or IP address
NodeId=3 # Node ID for this data node
DataDir=/usr/local/mysql/data # Directory for this data node's data files
[mysqld]
# SQL node options:
HostName=192.168.43.207 # Hostname or IP address
# (additional mysqld connections can be
# specified for this node for various
# purposes such as running ndb_restore)
测试
在管理节点上先执行
ndb_mgmd -f /var/lib/mysql-cluster/config.ini
如果报配置文件或者目录找不到 将config.ini拷贝到提示的默认目录即可
如果没有报错 查看是否有1186端口 如果有
ndb_mgm 进入客户端命令行 执行show 查看各节点的状态 此时 数据节点 sql节点都未启动 应该都是未连接状态
启动数据节点
在每一台数据节点上都执行 ndbd
在sql节点上执行 /etc/rc.d/init.d/mysql.server start 启动mysqld服务
然后客户端可以连接sql节点进行数据操作
关闭集群
在管理节点上执行 ndb_mgm -e shutdown可以关闭管理节点以及数据节点
sql节点可以按照关闭普通mysql服务的方式关闭
/etc/rc.d/init.d/mysql.server stop
-----常见错误
1.SQL节点MySQL服务无法启动
(1)如果以前安装过mysql 需要删除对应的文件 例如 /usr/local/mysql /etc/my.cnf /etc/init.d/mysql* /etc/rc.d/init.d/mysql*
(2) cluster压缩文件解压后做符号链接 检验是否正确连接 ls -l /usr/local
解压时不要解压到/root 目录下(包括创建虚拟主机时也要避免此种情况)
(3)设置/usr/local/mysql 目录及子目录的用户和组都为mysql ( ./mysqld --initialize命令之后必须再设置一次)
(4)管理节点中设置的ip和SQL节点的ip不一致
(5)查找错误日志 /usr/local/data/***.err 查找error选项 再进一步排查
2.启动顺序
先启动管理节点 再启动数据节点 最后启动SQL节点
数据节点存储数据的目录是 /usr/local/mysql/data 保证初始状态 数据存储目录为空
3.必须使用DDBCLUSTER存储引擎 如果使用其他存储引擎需要使用alter table 修改存储引擎