Mysql集群搭建
一、NDB集群核心概念
(1)介绍
NDBCLUSTER (也称为NDB)是一种内存存储引擎,提供高可用性和数据持久性功能。
的NDBCLUSTER存储引擎可以与一系列故障切换和负载平衡选项进行配置,但最简单的是开始在集群级别的存储引擎。NDB Cluster的NDB存储引擎包含一整套数据,仅依赖于集群内部的其他数据。
NDB Cluster 的“Cluster”部分是独立于MySQL服务器配置的。在NDB群集中,群集的每个部分都被视为一个节点。
(2)节点
有三种类型的集群节点,在最小的NDB集群配置中,将至少有三个节点,每种节点中的一种:
管理节点:此类节点的作用是管理NDB集群中的其他节点,执行诸如提供配置数据,启动和停止节点以及运行备份等功能。
数据节点:此类节点存储群集数据。
NDB Cluster表通常完全存储在内存中而不是磁盘上(这就是我们将NDB Cluster称为 内存数据库的原因)。但是,一些NDB Cluster数据可以存储在磁盘上;
SQL节点:这是一个访问集群数据的节点。对于NDB Cluster,SQL节点是使用NDBCLUSTER存储引擎的传统MySQL服务器 。SQL节点是使用和 选项启动的mysqld进程
重要
期望在生产环境中使用三节点设置是不现实的。这种配置不提供冗余; 要从NDB Cluster的高可用性功能中受益,您必须使用多个数据和SQL节点。强烈建议使用多个管理节点。
二、集群安装--准备工作
以下操作与官网有些出入,如有疑问,可自行翻阅资料
https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-install-linux-binary.html 官网地址
(1)环境
系统 |
CentOS Linux release 7.2.1511 (Core) |
mysql集群版本 |
mysql-cluster-gpl-7.6.9-linux-glibc2.12 |
这里这是简单搭建,三台机器,三个节点
要保证机器之间能够ping通
192.168.10.151 |
管理节点 |
192.168.10.67 |
sql节点 |
192.168.10.162 |
数据节点 |
(2)添加mysql用户
在三台机器,均执行以下操作
1、增加用户和群组
shell> groupadd mysql shell> useradd -g mysql -s /bin/false mysql
shell> id mysql 查看mysql是否创建成功
uid=1001(mysql) gid=1001(mysql) groups=1001(mysql)
2、下载安装包,并上传到3台机器上面
三、集群安装--安装二进制文件
(1)SQL节点。
SQL节点在指定用于承载SQL节点的每台计算机上
以下操作为初始化数据库
1、
shell> tar -xzvf mysql-cluster-gpl-7.6.9-linux-glibc2.12-x86_64.tar.gz shell> mv mysql-cluster-gpl-7.6.9-linux-glibc2.12-x86_64 /usr/local/ #移动 shell> cd /usr/local/ shell> mv mysql-cluster-gpl-7.6.9-linux-glibc2.12-x86_64 mysql #改名字 shell> cd mysql shell> mkdir data [root@fdmsdb /]# chown mysql:mysql data [root@fdmsdb /]# chmod -R 755 data
2、修改/etc/my.cnf 文件
①先自行创建my.cnf 所需文本,并更改权限
例如
cd /var/log/
touch mysqld.log
chown mysql:mysql mysqld.log
chmod 775 mysqld.log
②/my.cnf 具体配置如下
[mysqld] # Options for mysqld process: symbolic-links=0 basedir = /usr/local/mysql datadir = /usr/local/mysql/data socket=/tmp/mysql.sock [mysqld_safe] #错误日志 log-error=/var/log/mysqld.log pid-file=/var/run/mariadb/mariadb.pid # include all files from the config directory # #!includedir /etc/my.cnf.d
3、初始化数据库
bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --lc_messages_dir=/usr/local/mysql/share
4、设置MySQL服务器和数据目录的必要权限
shell> cd /usr/local/mysql shell> chown -R root . shell> chown -R mysql data shell> chgrp -R mysql .
5、设置链接
shell> cp support-files/mysql.server /etc/rc.d/init.d/ shell> chmod +x /etc/rc.d/init.d/mysql.server shell> chkconfig --add mysql.server
(启动脚本目录可能因操作系统和版本而异 - 例如,在某些Linux发行版中,它是 /etc/init.d。)
请记住,必须在要驻留SQL节点的每台计算机上重复上述步骤。
(2)数据节点。
安装数据节点一般来说不需要 mysqld二进制文件。只需要NDB Cluster数据节点可执行ndbd(单线程)或 ndbmtd(多线程)。
①为了保险起见,重复SQL节点初始化数据库的操作
②
shell> cd /usr/local/mysql shell> cp bin/ndbd /usr/local/bin/ndbd shell> cp bin/ndbmtd /usr/local/bin/ndbmtd shell> cd /usr/local/bin shell> chmod +x ndb*
应在每个数据节点主机上重复上述步骤。
(3)管理节点
安装管理节点不需要 mysqld二进制文件。只需要NDB群集管理服务器(ndb_mgmd); 您最有可能也想安装管理客户端(ndb_mgm)
shell> tar -zxvf mysql-cluster-gpl-7.6.9-linux-glibc2.12-x86_64.tar.gz shell> cd mysql-cluster-gpl-7.6.9-linux-glibc2.12-x86_64 shell> cp bin/ndb_mgm* /usr/local/bin
# 创建快捷方式
shell> cd /usr/local/bin
shell> chmod +x ndb_mgm*
三、NDB集群的初始配置
(1)配置数据节点和SQL节点
在my.cnf添加下列信息
shell> vi /etc/my.cnf
[mysqld] # Options for mysqld process: ndbcluster # run NDB storage engine [mysql_cluster] # Options for NDB Cluster processes: ndb-connectstring=192.168.10.151 # location of management server
(2)配置管理节点
1、
shell> mkdir /var/lib/mysql-cluster shell> cd /var/lib/mysql-cluster shell> vi config.ini
[ndbd default] # Options affecting ndbd processes on all data nodes: NoOfReplicas=1 # Number of replicas 目前只有数据一个数据节点,设置为1 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.6. [ndb_mgmd] # Management process options: HostName=192.168.10.151 # 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.10.162 # 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 [mysqld] # SQL node options: HostName=192.168.10.67 # Hostname or IP address # (additional mysqld connections can be # specified for this node for various # purposes such as running ndb_restore)
2、开放端口
Cluster管理节点的默认端口是1186; 数据节点的默认端口是2202.但是,群集可以自动为那些已经空闲的数据节点分配端口。
/sbin/iptables -I INPUT -p tcp --dport 1186 -j ACCEPT -- 开放端口
四、启动集群
(1)在管理主机上
启动管理节点进程
ndb_mgmd -f /var/lib/mysql-cluster/config.ini
(2)在每个数据节点主机上
shell> ndbd
(3)在SQL主机
shell> /usr/local/mysql/bin/mysqld_safe &
(4)测试
如果一切顺利,并且群集已正确设置,则群集现在应该可以运行。您可以在管理节点上调用ndb_mgm客户端来测试它。
shell> ndb_mgm -- NDB Cluster -- Management Client -- ndb_mgm> SHOW Connected to Management Server at: localhost:1186 Cluster Configuration
至此大功告成
shell> ndb_mgm -e shutdown # 关闭群集
如果出现报错,请检查文件配置和文件的权限是否正确