码迷,mamicode.com
首页 > 其他好文 > 详细

test

时间:2018-08-02 17:43:40      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:节点配置   不能添加   成功   环境变量   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种进程:

  1. mysqld进程:供用户访问和执行sql语句

  2. 数据进程ndbd:存储数据

  3. 管理进程mgmd:管理集群中的所有的主机
  • 不需要安装mysql-server软件了,所以可以关掉mysql服务

技术分享图片

主机名 角色 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,为了和参考文档中的版本一致。

https://cdn.mysql.com//Downloads/MySQL-Cluster-7.3/MySQL-Cluster-gpl-7.3.21-1.el7.x86_64.rpm-bundle.tar

关闭防火墙及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;

trouble shooting

  1. 启动nbd_mgmd失败,报错:
    [root@node01 mysql-cluster]# ndb_mgmd -f /usr/mysql-cluster/config.ini --reload
    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就行。

test

标签:节点配置   不能添加   成功   环境变量   err   gpl   集群管理   主机   ecif   

原文地址:http://blog.51cto.com/9430048/2153704

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!