标签:节点配置 不能添加 成功 环境变量 err gpl 集群管理 主机 ecif
MySQL Cluster 是MySQL适合于分布式计算环境的高实用、高冗余版本。它采用了NDB Cluster 存储引擎,允许在1个 Cluster 中运行多个MySQL服务器。 该技术允许在无共享的系统中部署“内存中”数据库的 Cluster 。管理节点(mgm):这类节点的作用是管理MySQLCluster内的其他节点,如提供配置数据,并停止节点,运行备份等。由于这类节点负责管理其他节点的配置,应该在启动其他节点之前启动这类节点。MGM节点是用命令“ndb_mgmd”启动的;
数据节点(ndb):这类节点用于保存Cluster的数据,数据节点的数目与副本的数目相关,是片段的倍数。例如,对于两个副本,每个副本有两个片段,那么就有4个数据节点,没有必要设定过多的副本,在NDB中数据会尽量的保存在内存中。数据节点使用命令“ndb”启动的;
SQL节点:这是用来访问Cluster数据的节点,对于MySQL Cluster,客户端节点是使用NDB Cluster存储引擎的传统MySQL服务器。通常,SQL节点使用命令“mysqld-ndbcluster”启动的;
mysql-cluster软件提供3种进程:
mysqld进程:供用户访问和执行sql语句
数据进程ndbd:存储数据
主机名 | 角色 | IP地址 |
---|---|---|
node01 | 管理、数据节点 | 192.168.0.201 |
node02 | 管理、数据节点 | 192.168.0.202 |
node03 | 数据、sql节点 | 192.168.0.203 |
ipsan1 | 172.16.10.191 | |
ipsan2 | 172.16.10.192 |
安装的是Mysql cluster 7.3,为了和参考文档中的版本一致。
关闭防火墙及selinux(all)
wget https://cdn.mysql.com//Downloads/MySQL-Cluster-7.3/MySQL-Cluster-gpl-7.3.21-1.el7.x86_64.rpm-bundle.tar
下载并解压:
mkdir ./mysql-cluster
tar xvf MySQL-Cluster-gpl-7.3.21-1.el7.x86_64.rpm-bundle.tar -C ./mysql-cluster
检查并卸载掉之前安装的Mysql及mariadb版本并安装集群版本(all):
cd mysql-cluster
rpm -ivh *.rpm
根据提示补安装依赖包:
yum -y install net-tools perl-Module-Install
运行mysql-install-db脚本(5.6及以下版本)进行初始化,注意其中用户为root的名称需要跟配置文件my.cnf中的相同(rpm安装已经自动设置了环境变量,其他方式安装可以到对应目录下执行———all)
mysql_install_db -user=mysql
编辑集群管理节点配置文件/usr/mysql-cluster/config.ini
[ndb_mgmd default]
datadir = /usr/local/mysql/ndbdata
[ndbd default]
NoOfReplicas = 1 #定义在Cluster环境中相同数据的份数,最大为4
DataMemory = 80M #每个数据节点中给数据分配的内存
IndexMemory = 18M #每个数据节点中给索引分配的内存
datadir = /usr/local/mysql/ndbdata
[ndb_mgmd] #定义管理节点
NodeId = 1
HostName = node01
#[ndbd]
#NodeId = 11
#HostName = node01
[ndbd] #定义Ndb节点
NodeId = 11
HostName = node01
[ndbd]
NodeId = 12
HostName = node02
[ndbd]
NodeId = 13
HostName = node03
[mysqld]
NodeId = 14
HostName = node01
[mysqld]
NodeId = 15
HostName = node02
在数据节点上配置/etc/my.cnf
[mysqld]
symbolic-link = 0
ndbcluster #使用ndb集群引擎
ndb-connectstring = 192.168.0.201 #指定管理集群的ip地址,多个以,分隔
[mysqld_safe]
log-error = /var/log/mysql.log
pid-file=/var/run/mysqld/mysql.pid
[mysql_cluster] #指定管理集群的ip地址,多个以,分隔
ndb-connectstring = 192.168.0.201
在启动mysql集群的时候,注意首先要启动管理节点,并依次启动其他等若干个节点,相应的启动步骤如下:
1. 在管理节点上,切换到/usr/local/mysql/bin目录下,执行ndb_mgmd -f /var/lib/mysql-cluster/config.ini命令,完成管理节点的启动;
2. 在各个数据节点上,切换到/usr/local/mysql/bin目录下,执行ndbd --initial(第一次启动时,否则执行ndbd即可),完成对数据节点的启动;
3. 在各个SQL节点上,同样切换到/usr/local/mysql/bin目录下,执行mysqld_safe --user=root完成启动;
4. 在管理节点上运行ndb_mgm命令,进入数据库管理的客户端,输入show命令,查看与之相连接的各个节点的状态;
初始化集群管理进程并启动(监听客户端):
[root@node01 mysql-cluster]# ndb_mgmd -f /usr/mysql-cluster/config.ini --initial
MySQL Cluster Management Server mysql-5.6.40 ndb-7.3.21
[root@node01 ~]# ps aux|grep mgm
root 1069 0.4 0.2 637040 8348 ? Ssl 10:48 0:00 ndb_mgmd -f /usr/mysql-cluster/config.ini
root 1080 0.0 0.0 112704 964 pts/0 S+ 10:48 0:00 grep --color=auto mgm
在所有节点上初始化集群:
[root@node03 mysql-cluster]# ndbd --initial
[root@node03 mysql-cluster]# ndbd --initial
2018-06-11 16:09:23 [ndbd] INFO -- Angel connected to ‘192.168.0.201:1186‘
2018-06-11 16:09:23 [ndbd] INFO -- Angel allocated nodeid: 13
如果只有第一行的信息提示,很有可能是mgmd节点没有正常启动。
首次启动,需要添加--initial参数,进行NDB节点的初始化工作,在以后的启动过程中,不能添加该参数,否则NDBD程序会清除之前建立的所有用于恢复的数据文件和日志文件;
集群正常后的状态:
[root@node01 mysql-cluster]# ndb_mgm
-- NDB Cluster -- Management Client --
ndb_mgm> show
Connected to Management Server at: 192.168.0.201:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 3 node(s)
id=11 @192.168.0.201 (mysql-5.6.40 ndb-7.3.21, Nodegroup: 0, *)
id=12 @192.168.0.202 (mysql-5.6.40 ndb-7.3.21, Nodegroup: 1)
id=13 @192.168.0.203 (mysql-5.6.40 ndb-7.3.21, Nodegroup: 2)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.0.201 (mysql-5.6.40 ndb-7.3.21)
[mysqld(API)] 2 node(s)
id=14 @192.168.0.201 (mysql-5.6.40 ndb-7.3.21)
id=15 @192.168.0.202 (mysql-5.6.40 ndb-7.3.21)
或者
[root@node01 ~]# ndb_mgm -e show
Connected to Management Server at: 192.168.0.201:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 3 node(s)
id=11 @192.168.0.201 (mysql-5.6.40 ndb-7.3.21, Nodegroup: 0, *)
id=12 @192.168.0.202 (mysql-5.6.40 ndb-7.3.21, Nodegroup: 1)
id=13 @192.168.0.203 (mysql-5.6.40 ndb-7.3.21, Nodegroup: 2)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.0.201 (mysql-5.6.40 ndb-7.3.21)
[mysqld(API)] 2 node(s)
id=14 @192.168.0.201 (mysql-5.6.40 ndb-7.3.21)
id=15 @192.168.0.202 (mysql-5.6.40 ndb-7.3.21)
在SQL节点上分别进入系统的安全状态,并完成对root用户的密码修改:
mysqld_safe --user=root &
直接输入Mysql登录
验证集群是否搭建成功,在SQL节点A上运行命令,在SQL节点B上查询:
mysql> create database ctest;
Query OK, 1 row affected (0.05 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| ctest |
| mysql |
| ndbinfo |
| performance_schema |
| test |
+--------------------+
6 rows in set (0.00 sec)
mysql> create table test(
-> id int PRIMARY KEY
-> );
Query OK, 0 rows affected (0.03 sec)
注意所建立表的存储引擎必须是ndbcluster类型,否则无法同步到其他节点;
查看表的存储引擎类型:
mysql> show table status from ctest where name=‘test‘ \G;
*************************** 1. row ***************************
Name: test
Engine: ndbcluster #存储引擎类型
Version: 10
Row_format: Fixed
Rows: 1
Avg_row_length: 28
Data_length: 32768
Max_data_length: 0
Index_length: 0
Data_free: 0
Auto_increment: NULL
Create_time: NULL
Update_time: NULL
Check_time: NULL
Collation: latin1_swedish_ci
Checksum: NULL
Create_options:
Comment:
1 row in set (0.01 sec)
如果类型是InnoDB,就使用语句更改:
alter table test engine=ndbcluster;
MySQL Cluster Management Server mysql-5.6.40 ndb-7.3.21
2018-06-11 15:41:35 [MgmtSrvr] ERROR -- at line 37: Nodegroup 1 has 1 members, NoOfReplicas=2
2018-06-11 15:41:35 [MgmtSrvr] ERROR -- Could not load configuration from ‘/usr/mysql-cluster/config.ini‘
2018-06-11 15:41:35 [MgmtSrvr] ERROR -- Could not determine which nodeid to use for this node. Specify it with --ndb-nodeid=<nodeid> on command line
是指配置文件的参数NoOfReplicas = 2,对应配置文件中定义的ndb_mgmd就应该有2个,改成1就行。
标签:节点配置 不能添加 成功 环境变量 err gpl 集群管理 主机 ecif
原文地址:http://blog.51cto.com/9430048/2153704