mysql cluster集群搭建_weixin_30737363的博客-程序员宅基地

技术标签: 网络  操作系统  数据库  

 

 

安装要求

  • 安装环境:CentOS-6.4
  • 安装方式:源码编译安装
  • 软件名称:mysql-cluster-gpl-7.2.6-linux2.6-x86_64.tar.gz
  • 软件安装位置:/usr/local/mysql
  • 数据存放位置:/var/mysql/data
  • 日志存放位置:/var/mysql/logs

集群设计

首先设计集群的安装分配方式,我共需要5台服务器,服务器分配如下:

  • 管理节点:    172.16.172.133
  • sql节点1:    172.16.172.132
  • sql节点2:    172.16.172.134
  • 数据节点1:   172.16.172.130
  • 数据节点2:   172.16.172.131

设备的连接方式如

 

注意:目前这种设计存在的问题是管理节点是单点的。

管理节点

管理节点安装

安装管理节点(172.16.172.133)

[[email protected] /]# groupadd mysql
[[email protected] /]#  useradd mysql -g mysql
[[email protected] /]# cd /usr/local
[[email protected] local]# tar -zxv -f mysql-cluster-gpl-7.2.6-linux2.6-x86_64.tar.gz
[[email protected] local]# mv mysql-cluster-gpl-7.2.6-linux2.6-x86_64 mysql
[[email protected] local]# chown -R mysql:mysql mysql
[[email protected] local]# cd mysql
[[email protected] mysql]# scripts/mysql_install_db –user=mysql

管理节点配置

[[email protected] ~]#  mkdir /var/lib/mysql-cluster
[[email protected] ~]# cd /var/lib/mysql-cluster
[[email protected] mysql-cluster]# vi + /var/lib/mysql-cluster/config.ini

在config.ini 中添加以下内容:

[NDBD DEFAULT]
NoOfReplicas=1
[TCP DEFAULT]
portnumber=3306 
[NDB_MGMD]
#设置管理节点服务器
HostName=172.16.172.133
DataDir=/var/mysql/data
[NDBD]
#设置存储节点服务器(NDB节点)
HostName=172.16.172.130
DataDir=/var/mysql/data
[NDBD]
#第二个NDB节点
HostName=172.16.172.131
DataDir=/var/mysql/data
[MYSQLD]
#设置SQL节点服务器 
HostName=172.16.172.132
[MYSQLD]
#第二个SQL节点 
HostName=172.16.172.134

管理节点启动

[[email protected] ~]# /usr/local/mysql/bin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini
[[email protected] ~]# mkdir /var/mysql/logs
[[email protected] ~]# netstat -lntpu

看到tcp 0 0 0.0.0.0:1186开放说明启动正常
开启管理节点服务器的1186端口

管理节点检验

执行以下操作:

[[email protected] /]# ndb_mgm     // 管理节点 
-- NDB Cluster -- Management Client --
 ndb_mgm> show
Connected to Management Server at: localhost:1186
Cluster Configuration
---------------------
[ndbd(NDB)]     2 node(s)
id=2 (not connected, accepting connect from 172.16.172.130)
id=3 (not connected, accepting connect from 172.16.172.131)
[ndb_mgmd(MGM)] 1 node(s)
id=1    @192.168.15.231  (mysql-5.5.22 ndb-7.2.6)
[mysqld(API)]   2 node(s)
id=4 (not connected, accepting connect from 172.16.172.132)
id=5 (not connected, accepting connect from 172.16.172.134)

管理节点关闭

[[email protected] /]# /usr/local/mysql/bin/ndb_mgm -e shutdown
#成功后终端打印出以下信息
Connected to Management Server at: 172.16.172.133:1186
3 NDB Cluster node(s) have shutdown.
Disconnecting to allow management server to shutdown.

数据节点

数据节点安装

数据节点1: 172.16.172.130
数据节点2: 172.16.172.131

[[email protected] /]# groupadd mysql
[[email protected] /]# useradd mysql -g mysql
[[email protected] /]# cd /usr/local
[[email protected] local]# tar -zxv -f mysql-cluster-gpl-7.2.6-linux2.6-x86_64.tar.gz
[[email protected] local]# mv mysql-cluster-gpl-7.2.6-linux2.6-x86_64 mysql
[[email protected] local]# chown -R mysql:mysql mysql
[[email protected] local]# cd mysql
[[email protected] mysql]# scripts/mysql_install_db --user=mysql
[[email protected] mysql]# cp support-files/my-medium.cnf /etc/my.cnf
[[email protected] mysql]# cp support-files/mysql.server /etc/init.d/mysqld

数据节点配置

对数据节点进行配置,执行以下操作:

[[email protected] mysql]# mkdir /var/mysql/data
[[email protected] mysql]# mkdir /var/mysql/logs
[[email protected] mysql]# vi /etc/my.cnf

向文件追加以下内容:

[MYSQLD]
ndbcluster
ndb-connectstring=172.16.172.133
[MYSQL_CLUSTER]
ndb-connectstring=172.16.172.133
[NDB_MGM]
connect-string=172.16.172.133

数据节点启动

启动此处时,管理节点服务器防火墙必须开启1186,3306端口。
注意:只是在第一次启动或在备份/恢复或配置变化后重启ndbd时,才加–initial参数!
第一次启动如下:

[[email protected] mysql]# /usr/local/mysql/bin/ndbd --initial
2013-01-30 13:43:53 [ndbd] INFO     -- Angel connected to '172.16.172.133
:1186'
2013-01-30 13:43:53 [ndbd] INFO     -- Angel allocated nodeid: 2

正常启动方式:

[[email protected] mysql]# /usr/local/mysql/bin/ndbd

数据节点关闭

[[email protected] /]# /etc/rc.d/init.d/mysqld stop

或者

[[email protected] mysql]# /etc/init.d/mysql stop
Shutting down MySQL.. SUCCESS!

/usr/local/mysql/bin/mysqladmin -uroot shutdown

SQL节点安装

SQL节点安装

SQL节点和存储节点(NDB节点)安装相同,都执行以下操作;
sql节点1: 172.16.172.132
sql节点2: 172.16.172.134

SQL节点配置

[[email protected] /]# groupadd mysql
[[email protected] /]# useradd mysql -g mysql
[[email protected] /]# cd /usr/local
[[email protected] local]# tar -zxv -f mysql-cluster-gpl-7.2.6-linux2.6-x86_64.tar.gz
[[email protected] local]# mv mysql-cluster-gpl-7.2.6-linux2.6-x86_64 mysql
[[email protected] local]# chown -R mysql:mysql mysql
[[email protected] local]# cd mysql
[[email protected] mysql]# scripts/mysql_install_db --user=mysql
[[email protected] mysql]# cp support-files/my-medium.cnf /etc/my.cnf
[[email protected] mysql]# cp support-files/mysql.server /etc/init.d/mysqld

执行以下操作:

[[email protected] mysql]# mkdir /var/mysql/data     //创建存储数据的文件夹
[[email protected] mysql]# mkdir /var/mysql/logs     //创建存储日志的文件夹
[[email protected] mysql]# vi /usr/local/mysql/my.cnf  //修改配置文件

追加以下内容:

[MYSQLD]
ndbcluster
ndb-connectstring=172.16.172.133
[MYSQL_CLUSTER]
ndb-connectstring=172.16.172.133
[NDB_MGM]
connect-string=172.16.172.133

SQL节点启动

执行以下操作:

[[email protected] mysql]# service mysqld start
Starting MySQL.. SUCCESS!

SQL节点关闭

最直接的方式:

[[email protected] mysql]# /usr/local/mysql/bin/mysqladmin -uroot shutdown

[[email protected] /]# /etc/rc.d/init.d/mysqld stop

或者

[[email protected] mysql]# /etc/init.d/mysql stop
Shutting down MySQL.. SUCCESS!

功能测试

在管理节点(172.16.172.133)上查看服务状态

[[email protected] ~]# /usr/local/mysql/bin/ndb_mgm
-- NDB Cluster -- Management Client --
ndb_mgm> show
Cluster Configuration
 ---------------------
[ndbd(NDB)]     2 node(s)
id=2    @172.16.172.130  (mysql-5.5.22 ndb-7.2.6, Nodegroup: 0, Master)
id=3    @172.16.172.131  (mysql-5.5.22 ndb-7.2.6, Nodegroup: 1)
   [ndb_mgmd(MGM)] 1 node(s)
id=1    @172.16.172.133  (mysql-5.5.22 ndb-7.2.6)
   [mysqld(API)]   2 node(s)
id=4    @172.16.172.132  (mysql-5.5.22 ndb-7.2.6)
id=5    @172.16.172.134  (mysql-5.5.22 ndb-7.2.6)

可以看到这里的数据节点、管理节点、sql节点都是正常的。
注意:

  1. 在建表的时候一定要用ENGINE=NDB或ENGINE=NDBCLUSTER指定使用NDB集群存储引擎,或用ALTER TABLE选项更改表的存储引擎。
  2. NDB表必须有一个主键,因此创建表的时候必须定义主键,否则NDB存储引擎将自动生成隐含的主键。
  3. Sql节点的用户权限表仍然采用MYISAM存储引擎保存的,所以在一个Sql节点创建的MySql用户只能访问这个节点,如果要用同样的用户访 问别的Sql节点,需要在对应的Sql节点追加用户。虽然在MySql Cluster7.2版本开始提供了”用户权限共享”。

数据同步性测试

在一个数据节点上进行相关数据库的创建,然后到另外一个数据节点上看看数据是否同步。

第1步:

SQL节点1(172.16.172.132)上增加数据:

SQL节点1(172.16.172.132)上增加数据:
[[email protected] mysql]#  /etc/rc.d/init.d/mysqld status                //检验mysql是否运行
[[email protected] mysql]# /etc/rc.d/init.d/mysqld start                   //启动mysql
[[email protected] mysql]# /usr/local/mysql/bin/mysql -u root -p
Enter password:
mysql> show databases;
mysql> create database testdb2;
mysql> use testdb2;
mysql> CREATE TABLE td_test2 (i INT) ENGINE=NDB;
//这里必须指定数据库表的引擎为NDBCLUSTER,与配置文件中的名称相同
mysql> INSERT INTO td_test2() VALUES (1);
mysql> INSERT INTO td_test2() VALUES (152);
mysql> SELECT * FROM td_test2;

第2步:

进入到SQL节点2(172.16.172.134)上查看数据

mysql> use testdb2;
Database changed
mysql> SELECT * FROM td_test2;
+------+
| i    |
+------+
|  126 |
|    1 |
+------+
2 rows in set (0.01 sec)

查看表的引擎是不是NDB:

mysql> show create table td_test2;

第3步:

反向测试,SQL节点2(172.16.172.134)上增加数据:

mysql> create database bb;
mysql> use bb;
mysql> CREATE TABLE td_test3 (i INT) ENGINE=NDB;
mysql> INSERT INTO td_test3 () VALUES (98);
mysql> SELECT * FROM td_test3;

SQL节点1(172.16.172.132)上查看数据:

mysql>  use bb;
Database changed
mysql>  SELECT * FROM td_test3;
+------+
| i    |
+------+
|   98 |
+------+
1 row in set (0.00 sec)

关闭集群

先关闭管理节点,然后关闭SQL节点和数据节点。

集群启动操作顺序

要再次启动集群,按照以下顺序执行:
管理节点 ->数据节点 –> SQL节点

注意:此次启动数据节点时不要加”–initial”参数。

 云服务器、云数据库方案、网络安全防护优选

MySQL双主 + Keepalived主备自动切换方案一

MySQL双主 + Keepalived主备自动切换方案二

MySQL主从 + Keepalived主从自动切换方案

MySQL双主 + 多从高可用方案---MMM

MySQL + Pecemaker(Heartbeat) + DRBD主高可用

MySQL + RHCS 高可用方案

MySQL + Cluser 集群架构

Percona Xtradb Cluster 集群高可用性解决方案

管理节点 

172.16.14.145 mgm1 

172.16.14.150  mgm2

172.16.14.146 ndb1

172.16.14.147 ndb2

172.16.14.148  sql1

172.16.14.149 sql2

集群配置概述:

安装版本:mysql cluster 7.3.5

操作系统 :centos6.5(X64)

软件名称 

管理节点IP

数据节点

SQL节点IP:

数据节点

SQL节点IP:

配置ssh等效不要密码登录

配置hosts解析

配置本地yum源 6.5

安装依赖包:yum install -y glibc perl libaio-devel

x32位系统要安装兼容库组:yum -y groupinstall "Compatibility libraries"

1. mysql旧版本清除:

首先使用如下命令来清理之前操作系统自带的mysql安装:

yum -y remove mysql

然后使用如下命令:

rpm -qa | grep mysql*

对于找到的2个剩余mysql包,请按照如下的命令格式予以删除:

rpm -e --nodeps mysql-libs-5.1.71-1.el6.x86_64

每个节点都要那么做

关闭 /etc/init.d/iptables stop 

/etc/init.d/ip6tables stop

chkconfig iptables off 

chkconfig ip6tables off

vim /etc/selinux/config 

SELINUX=disabled 

# SELINUXTYPE= can take one of these two values:

#     targeted - Targeted processes are protected,

#     mls - Multi Level Security protection.

#SELINUXTYPE=targeted  注释掉这行 

软件安装位置:/opt/local/mysql

数据存放位置:/opt/mysql/data SQL节点存储数据的路径

日志存放位置:/opt/mysql/logs

 

/opt/local/cluster 管理集群时收集的集群信息的存放路径

 

机器描述:

  192.168.100.1 : 管理节点

  192.168.100.2 : SQL节点1

  192.168.100.3 : SQL节点2

  192.168.100.4 : 数据节点1

  192.168.100.5 : 数据节点2

软件需求:Linux下64位MySQL:mysql-cluster-gpl-7.2.8-linux2.6-x86_64.tar.gz

 

1、安装管理节点:192.168.100.1

(1)把mysql-cluster-gpl-7.2.8-linux2.6-x86_64.tar.gz 解压到 /usr/local/myql 下

(2)在mysql目录下创建文件夹:mkdir  /usr/local/myql/mysql-cluster

(3)在mysql目录下创建文件夹:mkdir  /usr/local/myql/cluster-conf

(4)编辑config.ini文件:vi /usr/local/mysql/cluster-conf/config.ini 内容如下:


[ndbd default] 
NoOfReplicas=2
DataMemory=200M
IndexMemory=100M


[ndb_mgmd]
id=1
hostname=192.168.100.1
DataDir=/usr/local/mysql/mysql-cluster


[ndbd]
id=2
HostName=192.168.100.4
DataDir=/usr/local/mysql/ndbdata


[ndbd] 
id=5
HostName=192.168.100.5
DataDir=/usr/local/mysql/ndbdata


[mysqld]
id=6
HostName=192.168.100.2


[mysqld]
id=7
HostName=192.168.100.3

 

2、安装SQL节点  192.168.100.4 & 192.168.100.5

(1)把mysql-cluster-gpl-7.2.8-linux2.6-x86_64.tar.gz 解压到 /usr/local/myql 下

(2)添加mysql用户

  groupadd mysql

  useradd -g mysql mysql

(3)添加权限

  chown -R mysql:mysql /usr/local/mysql

(4)拷贝配置文件

  cp /usr/local/mysql/support-files/my-large.cnf   /etc/my.cnf 

(5)初始化数据库

  cd /usr/local/mysql

  scripts/mysql_install_db --user=mysql

(6)拷贝守护进程所需文件

  cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld

(7)配置守护进程

  chkconfig –add mysqld

  chkconfig –level 35 mysqld on

(8)更改配置文件 vi /etc/my.cnf 内容如下:

  [mysqld]

  port = 3306

  socket = /tmp/mysql.sock

  ndbcluster

  ndb-connectstring=192.168.100.1  #管理节点的IP

 

3、安装数据节点

(1)把mysql-cluster-gpl-7.2.8-linux2.6-x86_64.tar.gz 解压到 /usr/local/mysql 下

(2)在mysql目录下创建文件:mkdir  /usr/local/mysql/ndbdata

(3)编辑my.cnf: vi /etc/my.cnf 在文件末尾添加如下内容:

  [mysql_cluster]

  ndb-connectstring=192.168.100.1  #管理节点IP

 

4、配置环境变量:

  #config mysql

  export MYSQL_HOME=/usr/local/mysql

  export PATH=$MYSQL_HOME/bin:$PATH

 

5、启动集群

启动顺序:管理服务器->存储节点->SQL节点

(1)启动管理节点

  rm mysql/mysql-cluster/ndb_1_config.bin.1  #如果config.ini有改动则要加上

  ndb_mgmd -f /usr/local/mysql/cluster-conf/config.ini

(2)启动存储节点

  ndbd --initial #(第一次启动必须添加选项)

  ndbd    #不是第一次启动需要执行的命令

(3)启动SQL节点

  /etc/rc.d/init.d/mysqld start 或 service mysqld start

 

6、关闭集群

(1)关闭SQL节点

  /etc/rc.d/init.d/mysqld stop 或service mysqld stop

(2)关闭管理节点

  ndb_mgm〉 shutdown

7、验证配置的正确性

  在管理节点执行:ndb_mgm -> show

8、创建表

创建表需要以 ndbcluster 作为存储引擎

CREATE TABLE `test`.`test` (

  `id`  VARCHAR(45) NOT NULL,

  `name`        VARCHAR(9),

  PRIMARY KEY (`id`)

)  ENGINE = ndbcluster;  

  

8. 关闭集群服务

关闭sql节点等同于停止mysql服务,此时外界数据不将再进来。然后关闭管理节点

~/mysql/bin/ndb_mgm -e shutdown
rm ~/mysql/mysql-cluster/ndb_1_config.bin.1 #不是必须的,如果config.ini有改动则要加上

这样操作后,管理节点和数据节点都将停止服务

Notes:

1:如果发现关闭一台机器的ndbd进程,另一台机器的ndbd的进程也关闭,则需要修改参数NoOfReplicas。
2:./ndbd --initial 不能同时在所有数据节点机器上执行,如执行,会删除所有数据
3:可以像操作非簇类型的数据库那样,操作mysqld节点
4:每次修改config.ini文件,重启ndb_mgmd时,需要删除mysql-cluster文件下的ndb_1_config.bin.1文件,
因为他默认调用此文件
5:NDB 簇不支持自动发现数据库的功能,这点很重要,一旦在一个数据节点上创建了世界(world)数据库和它的表,
在簇中的每个SQL节点上还需要发出命令 CREATE DATABASE world,后跟FLUSH TABLES。这样,节点就能
识别数据库并读取其表定义。(在本版本MySQL Cluster 7.1.5下数据库也会自动同步的)
6:如果在相关节点服务器启动时,注意查看~/mysql/mysql-cluster目录内的相关日志文件以获取错误信息.
7:在管理节点的配置文件里各[mysqld],[ndbd]和[ndb_mgmd]配置的选项值顺序应该如下:
[mysqld]
Id=4
HostName=192.168.208.3
Id在顶端紧跟其后的是HostName,如果顺序错了,当SQL或数据节点连接管理节点时,管理节点无法正确的定位
到其对应的节点配置上.
因为无法定位到对应的节点配置,当没有剩余的[空节点]时,客户端节点启动时(./mysqld or ./ndbd)
还会报:
Configuration error: Error : Could not alloc node id at 192.168.0.231 port 1186: No free
node id found for mysqld
(API).Failed to initialize consumers
8:[空节点]是没有指定HostName选项的节点配置均为空节点,空节点可以用来动态配置一些动态IP的节点,
一般管理节点的 配置文件要预留3个以上的空节点,因为备份时需要连接一个节点,如下:
[mysqld]
Id=6

---------------

体系结构

MySQL Cluster 由3个不同功能的服务构成,每个服务由一个专用的守护进程提供,一项 服务也叫做一个节点,下面来介绍每个节点的功能。

The management (MGM) node

管理节点,用来实现整个集群的管理,理论上一般只启动一个,而且宕机也不影响 cluster 的服务,这个进程只在cluster 启动以及节点加入集群时起作用, 所以这个节点不是很需要冗余,理论上通过一台服务器提供服务就可以了。

通过 ndb_mgmd 命令启动,使用 config.ini 配置文件

The storage or database (DB) node:

数据库节点,用来存储数据,可以和管理节点(MGM) , 用户端节点(API) 可以处在 不同的机器上,也可以在同一个机器上面,集群中至少要有一个DB节点,2个以上 时就能实现集群的高可用保证,DB节点增加时,集群的处理速度会变慢。

通过 ndbd 命令启动,第一次创建好cluster DB 节点时,需要使用 –init参数初始化。

例如: bin/ndbd –ndb-connectstring=ndb_mgmd.mysqlcluster.net –initial

The client (API) node:

客户端节点,通过他实现 cluster DB 的访问,这个节点也就是普通的 mysqld 进程, 需要在配置文件中配置ndbcluster 指令打开 NDB Cluster storage engine 存储引擎,增加 API 节点会提高整个集群的并发访问速度和整体的吞吐量,该节点 可以部署在Web应用服务器上,也可以部署在专用的服务器上,也开以和DB部署在 同一台服务器上。

通过 mysqld_safe 命令启动,

这3类节点可以分布在不同的主机上,比如 DB 可以是多台专用的服务器,也可以 每个DB都有一个API,当然也可以把API分布在Web前端的服务器上去,通常来说, API越多cluster的性能会越好。

Mysql集群探索与实践

1. 准备好3台机器,从官网下载最新的mysql集群版本,此处用到mysql-cluster-gpl-7.1.5.tar.gz源码包, 配置并安装,记得加上

–with-plugins=innobase,ndbcluster (innobase可选)

3台机器分别是192.168.207.153,192.168.208.3,192.168.208.9,具体分配如下

管理节点(ndb_mgmd):192.168.207.153

数据节点(ndbd): 192.168.208.3

数据节点(ndbd): 192.168.208.9

SQL节点(mysqld): 192.168.208.3

SQL节点(mysqld): 192.168.208.9

2. 在mysql目录下新建mysql-cluster文件夹,切换到mysql-cluster,新建config.ini

[NDBD DEFAULT]
NoOfReplicas=2       #备份,副本,这样的话2台数据节点的数据就会同步
DataMemory=200M
IndexMemory=100M
[TCP DEFAULT]
portnumber=2202
[NDB_MGMD]   #管理节点
id=1
hostname=192.168.207.153
datadir=/home/taozi/mysql/mysql-cluster
[NDBD]    #数据节点
id=2
hostname=192.168.208.3
datadir=/home/taozi/mysql/data
[NDBD]   #数据节点
id=3
hostname=192.168.208.9
datadir=/home/taozi/mysql/data
[MySQLD]   #sql节点
id=4
hostname=192.168.208.3
[MySQLD]    #sql节点
id=5
hostname=192.168.208.9
[MySQLD]     #sql节点
id=6

3. 在管理节点服务器上启动管理节点服务 (如果不存在ndb_mgmd那么要从libexec下面复制过来)

~/mysql/bin/ndb_mgmd -f ~/mysql/mysql-cluster/config.ini

4. 进入2台数据节点服务器,分别启动数据节点服务

~/mysql/bin/ndbd     (第一次启动使用  ~/mysql/bin/ndbd --initial)

5. 最后分别进入sql节点服务器,修改my.cnf,加入

[MYSQL_CLUSTER]
ndb-connectstring=192.168.207.153
[MYSQLD]
ndbcluster
ndb-connectstring=192.168.207.153

启动mysql服务

/home/taozi/mysql/bin/mysqld_safe --ledir=/home/taozi/mysql/bin /
--log-error=/home/taozi/mysql/data/t.err --datadir=/home/taozi/mysql/data /
--socket=/home/taozi/mysql/tmp/mysql.sock --pid-file=/home/taozi/mysql/data/mysqld.pid &

6. 此时回到管理节点

~/mysql/bin/ndb_mgm -e show

可以看到显示如下

[[email protected] mysql]$ ./show.sh
Connected to Management Server at: localhost:1186
Cluster Configuration
---------------------
[ndbd(NDB)]     2 node(s)
id=2    @192.168.208.3  (mysql-5.1.47 ndb-7.1.5, Nodegroup: 0, Master)
id=3    @192.168.208.9  (mysql-5.1.47 ndb-7.1.5, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1    @192.168.207.153  (mysql-5.1.47 ndb-7.1.5)
[mysqld(API)]   3 node(s)
id=4    @192.168.208.3  (mysql-5.1.47 ndb-7.1.5)
id=5    @192.168.208.9  (mysql-5.1.47 ndb-7.1.5)
id=6 (not connected, accepting connect from any host)

7. 进入sql节点,在test数据库创建表

CREATE TABLE `t1` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`id`)
) ENGINE=ndbcluster  DEFAULT CHARSET=gbk

切换到2台数据节点服务器~/mysql/data/ndb_2_fs和~/mysql/data/ndb_3_fs看看,

或者直接去数据库查,数据已经同步了!

3.2    管理节点

主机xp1的C:\mysql-cluster\bin下新建一个文件config.ini,其中内容如下: 

 

Xml代码  
  1. [ndbd default]  
  2. # Options affecting ndbd processes on all data nodes:  
  3. NoOfReplicas=2                      #复本数量,此例采用默认值2  
  4. DataDir=C:/mysql-cluster/bin/cluster-data   # 数据节点存储目录  
  5. DataMemory=80M    # 数据存储分配的内存,酌情设置  
  6. IndexMemory=18M   # 索引存储分配的内存,酌情设置  
  7.   
  8. [ndb_mgmd]  
  9. # Management process options:  
  10. HostName=192.168.109.130               # 管理节点所在主机IP  
  11. DataDir=C:/mysql-cluster/bin/cluster-logs   # 管理节点日志目录  
  12.   
  13. [ndbd]  
  14. # Options for data node "A":  
  15. # (one [ndbd] section per data node)  
  16. HostName=192.168.109.132           # 节点所在主机IP  
  17. datadir=C:/mysql-cluster/data   # 数据存储目录  
  18.   
  19. [ndbd]  
  20. # Options for data node "B":  
  21. HostName=192.168.109.133           # 节点所在主机IP  
  22. datadir=C:/mysql-cluster/data  
  23.   
  24. [mysqld]  
  25. # SQL node options:  
  26. HostName=192.168.109.130           # SQL节点所在主机IP  

 

这些为集群整体的配置信息,其中[ndbd default]为全局数据节点的默认配置模块。[ndb_mgmd]为管理节点配置模块。[ndbd]为数据节点配置模块。[mysqld]为sql节点配置模块。#后面为注释内容,实际文件可以将这些注释去掉,以防止因为中文的存在导致mysql解析文件失败。启动管理节点直接调用bin目录下的ndb_mgmd.exe即可,但是我们在命令后指定我们上述的配置文件和集群配置的缓存目录,所以命令为

 

Java代码  
  1. ndb_mgmd.exe --config-file=C:\\mysql-cluster\\bin\\config.ini --configdir=C:\mysql-cluster\bin\config-cache  

 

为了方便起见,我们在c:\mysql-cluster\bin目录下新建一个文件ndb_mgmd_start.bat,将上述管理节点启动的命令写入该批处理文件中作为启动命令。

3.3    数据节点

我们以数据节点1为例介绍,节点2与此类似。在主机xp2的c:\mysql-cluster下新建文件my.ini。键入如下内容

 

Xml代码  
  1. [mysql_cluster]  
  2. # Options for data node process:  
  3. ndb-connectstring=192.168.109.130  # location of management server  

 

 

3.4    SQL节点

在xp1节点的c:\mysql-cluster目录下新建文件my.ini,键入如下内容

 

Xml代码  
  1. [mysqld]  
  2. ndbcluster                      # run NDB storage engine  
  3. ndb-connectstring=192.168.109.130  # location of management serve  

 

其中ndbcluster指定了存储引擎为集群环境,ndb-connectstring指定了管理节点的地址。

         到此为止所有节点配置工作就完成了。

4.      节点管理

4.1    ndb_mgm介绍

mysql cluster提供了ndb_mgm.exe来对集群进行管理,在xp1主机的c:\mysql-cluster\bin目录下。我们可以直接在命令行执行该命令进入管理控制台。(注:该程序需要在管理节点启动后才能执行)

常用的命令包括:

show: 显示集群中所有节点的状态。如图-04

 

图-04

Node_id status: 查看node_id对应的节点的状态

shutdown –e: 停止管理节点和所有数据节点。SQL节点不会被停掉。

笔者就简单用了这几个,其他命令还很多,可以通过HELP命令来查看。

4.2    节点启停

Mysql cluster启动有顺序要求,管理节点要最先启动。

启动管理节点:在命令行中进到c:\mysql-cluster\bin目录下,执行我们之前编辑的批处理文件ndb_mgmd_start.bat.如果启动正常,我们此时可以执行ndb_mgm程序,通过管理控制台查看节点状态了。

启动数据节点:依次在各个数据节点主机的命令行中进到c:\mysql-cluster\bin目录下,执行ndbd.exe 即可。通过ndb_mgm的管理控制台查看启动状态。

启动SQL节点:在SQL节点的命令行中进到c:\mysql-cluster\bin目录下,执行mysqld.exe即可。通过ndb_mgm的管理控制台查看启动状态。

                   节点停止:在ndb_mgm的管理控制台中执行shutdown –e 则管理节点和数据节点均会停止。另外SQL节点需要手动停止。

5.      验证

集群环境搭建完成我们可以对其进行验证。此处偷偷懒,直接引用一个官网的图,如图-05

 

图-05

注意图中建表语句中的ENGINE=NDBCLUSTER。

如果有兴致还以通过外部程序验证一下。注意外部程序访问URL还是SQL节点。

好了,这样我们的mysql 集群环境就搭建完成了。

转载于:https://www.cnblogs.com/bozi0322/p/7756823.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_30737363/article/details/95197337

智能推荐

Microsoft.Extensions.DependencyInjection 阅读笔记_weixin_30613343的博客-程序员宅基地

一、 关于IServiceCollection接口的设计 public interface IServiceCollection : IList<ServiceDescriptor> { }a. 为什么不直接用List<>集合,而要重新定义一个这样的IServiceCollection接口呢?1. 为了从IList<>那里...

逻辑分析仪滤波设置_echigh的博客-程序员宅基地

1.不设置滤波 有些波形毛刺会参与解析,导致解析的数据出现混乱2.经验证,滤波设置功能仅仅作为解析功能使用,不能在输入时直接滤波。因此设置触发时无法通过此手段避免噪声触发3.使用逻辑分析仪时避免输入空载,和示波器一样,空载时容易收到工频干扰。在设置触发时,应保证原来线上是有驱动,否则会引入工频干扰导致的触发...

matlab支持python吗_MATLAB在逐渐被Python淘汰吗?_weixin_39623750的博客-程序员宅基地

首先说,MATLAB和Python没法放到一起比好坏。第一,这里的“MATLAB”指的如果是那个整套的软件的话,这个问题类似于在讨论C语言能不能干掉Windows。第二,如果指的是MATLAB中的脚本的话,这两个脚本语言本来就不通用,单独拿出来比较也没什么意义。其次,如果要跟MATLAB比的话,有两种比法还是有参考价值的。第一个是Anaconda跟MATLAB比。首先它俩都提供了组件、工程、配置等...

中国象棋棋盘java_网络象棋之一(构建棋盘)_张勇18613964002的博客-程序员宅基地

#chessboard{position:absolute;left:20px;top:20px;width:495px;height:550px;z-index:1;background-image:url("../images/chessboard.jpg");//棋盘图片}#zhu_0_0{position:absolute;left:0px;top:0px;width:55px;heigh...

linux中gcc是什么指令,Linux gcc常用命令_卡路里克星的博客-程序员宅基地

gcc的编译过程分为四个过程,即预处理(也称预编译,Preprocessing)、编译(Compilation)、汇编 (Assembly)和连接(Linking)。例如,编译文件test.c,那么整个过程如下:1.预处理gcc -E test.c -o test.i 或 gcc -E test.c可以输出test.i文件中存放着test.c经预处理之后的代码。打开test.i文件,看一看,就明白...

java on .net_java.net.MalformedURLException: no protocol on URL_韧笔的博客-程序员宅基地

So I was attempting to use this String in a URL :-http://site-test.collercapital.com/Meetings/IC/DownloadDocument?meetingId=c21c905c-8359-4bd6-b864-844709e05754&itemId=a4b724d1-282e-4b36-9d16-d619...

随便推点

快手笔试题 JAVA_今晚七点快手笔试 java题解_weixin_39630182的博客-程序员宅基地

幂数package kuaishou;import java.util.Scanner;//(x^y) % Npublic class One {public static void main(String[] args) {Scanner in = new Scanner(System.in);int x = in.nextInt();int y = in.nextInt();int n = i...

安装卸载测试_weixin_33753845的博客-程序员宅基地

第7章 功能测试的实用技术7.5功能测试的人工测试实训和操作方法本章7.1节~7.4节我们主要是介绍了有关功能测试的一些实用技术,下面我们就要进入实际动手操作的环节。功能测试的内容多,我们仅对安装卸载测试和系统登陆进行人工测试实训。7.5.1 安装卸载测试(1)对于应用系统的安装/卸载测试,主要了解安装/卸载过程可能出现的各种各样的问题,尝试着使用各安装/卸载...

SystemUI架构分析_qq_24451593的博客-程序员宅基地

转载: https://blog.csdn.net/myfriend0/article/details/54972861SystemUI架构分析SystemUI架构分析前言1SystemUI介绍1SystemUI摘要2什么是SystemUI2SystemUI的启动过程3SystemUI的SERVICES1音量控制11音量控制简介12音量控制SERVICE的初始化13控制音量过程2RingtoneP...

树莓派装x86的linux,【树莓派笔记】在x86平台上编译arm二进制_weixin_39608657的博客-程序员宅基地

name: pandoc-aarch64on: [push]jobs:aarch64-pandoc:runs-on: ubuntu-lateststeps:- uses: actions/[email protected] name: buildrun: |mkdir rootfsexport pkg=`curl -s "http://hackage.haskell.org/package/pandoc" ...

推荐文章

热门文章

相关标签