注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Oracle专业打杂

定会重回巅峰……

 
 
 

日志

 
 

MySQL Cluster 7.4.7双节点安装与验证  

2015-09-24 11:21:45|  分类: MYSQL高级 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
Mysql Cluster版本:MySQL Cluster 7.4.7 TAR for Generic Linux (glibc2.5) x86 (64bit).zip
操作系统:RHEL5.5 x86_64
---------------------------------
相关专业名词解释
管理节点:管理节点,纵观全局的一个配置节点。
数据节点:用来存放数据的节点,数据类型是NDB Cluster,放在该节点的内存里。
SQL节点:mysql服务器/客户端节点。
下面的这张图是官档中的Mysql Cluster的组成结构图。
MySQL Cluster 7.4.7双节点安装与验证 - 卢大圣 - 把心放飞,生活是如此的美好……
 
本实验的整体架构如下如所示,其中一台主机既充当Manager又充当Data与SQL Node,另一台主机只充当Data与SQL Node。
MySQL Cluster 7.4.7双节点安装与验证 - 卢大圣 - 把心放飞,生活是如此的美好……
 

1、系统规划
 主机名 mydb1 mydb2
 IP 192.168.56.121 192.168.56.122
 mysql端口 3307 3307
 MGM节点参数文件 /var/lib/mysql-cluster/config.ini 
 DATA节点参数文件 /data/mysql/ndbd1.cnf/data/mysql/ndbd2.cnf
 SQL节点参数文件 /data/mysql/my.cnf  /data/mysql/my.cnf
 数据文件位置 /data/mysql/data /data/mysql/data

2、软件准备

unzip MySQL Cluster 7.4.7 TAR for Generic Linux (glibc2.5) x86 (64bit).zip
tar -zxvf mysql-cluster-advanced-7.4.7-linux-glibc2.5-x86_64.tar.gz
mv mysql-cluster-advanced-7.4.7-linux-glibc2.5-x86_64 /usr/local/mysql
3、配置管理节点(只在mydb1上操作)

[root@mydb1 ~]# mkdir -p /var/lib/mysql-cluster/
[root@mydb1 ~]# cat /var/lib/mysql-cluster/config.ini 
[ndbd default]
NoOfReplicas=2
DataMemory=200M
IndexMemory=30M

[ndb_mgmd]
id=1
hostname=192.168.56.121
datadir=/var/lib/mysql-cluster/

[ndbd]
id=2
hostname=192.168.56.121
datadir=/data/mysql/data

[ndbd]
id=3
hostname=192.168.56.122
datadir=/data/mysql/data

[mysqld]
id=4
hostname=192.168.56.121

[mysqld]
id=5
hostname=192.168.56.122

[mysqld]
id=6
[root@mydb1 ~]# chown -R mysql.mysql /var/lib/mysql-cluster/
4、配置数据节点(在mydb1、mydb2上操作)

[root@mydb1 ~]# mkdir -p /data/mysql/data
[root@mydb1 ~]# chown -R mysql.mysql /data/mysql/data
[root@mydb1 ~]# cat /data/mysql/ndbd1.cnf 
[mysqld]   
DataDir=/data/mysql/data
skip-locking   

ndbcluster   
ndb-connectstring=192.168.56.121:1186

[mysql_cluster]
ndb-connectstring=192.168.56.121:1186
5、配置SQL节点(在mydb1、mydb2上操作)

[root@mydb1 ~]# cat /data/mysql/my.cnf 
[mysqld]
port=3307
socket=/data/mysql/mysql.sock
datadir=/data/mysql/data
basedir=/usr/local/mysql

ndbcluster
ndb-connectstring=192.168.56.121:1186
default-storage-engine=ndbcluster

[mysql_cluster]
ndb-connectstring=192.168.56.121:1186

[client]
default-character-set=utf8
--------------------------------
6、MySql Cluster启动
#开启管理节点
[root@mydb1 ~]# /usr/local/mysql/bin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini
#连接管理节点,并查看各节点的状态,此时只有管理节点开启
[root@mydb1 ~]# /usr/local/mysql/bin/ndb_mgm 192.168.56.121:1186
-- NDB Cluster -- Management Client --
ndb_mgm> show;
Connected to Management Server at: 192.168.56.121:1186
Cluster Configuration
---------------------
[ndbd(NDB)]     2 node(s)
id=2 (not connected, accepting connect from 192.168.56.121)
id=3 (not connected, accepting connect from 192.168.56.122)

[ndb_mgmd(MGM)] 1 node(s)
id=1    @192.168.56.121  (mysql-5.6.25 ndb-7.4.7)

[mysqld(API)]   3 node(s)
id=4 (not connected, accepting connect from 192.168.56.121)
id=5 (not connected, accepting connect from 192.168.56.122)
id=6 (not connected, accepting connect from any host)
#开启mydb1上的Data Node,如果是初次开启,则需要添加参数  --initial,在mydb2上做同样的操作(暂时不打开mydb2上的Data节点,做一个简单的测试)。
[root@mydb1 ~]# /usr/local/mysql/bin/ndbd --defaults-file=/data/mysql/ndbd1.cnf  --initial
2015-09-24 08:21:14 [ndbd] INFO     -- Angel connected to '192.168.56.121:1186'
2015-09-24 08:21:14 [ndbd] INFO     -- Angel allocated nodeid: 2


6、mydb2上SQL、Data节点不开,mydb1插入数据后,再打开mydb2上的节点,验证数据是否同步

#打开mydb1上的SQL节点,这和打开普通的Mysql数据库的方法是一样的
[root@mydb1 ~]# /usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysql/my.cnf &
#连接mydb1上的数据库,已经提前更改了密码
[root@mydb1 ~]# /usr/local/mysql/bin/mysql -S /data/mysql/mysql.sock -uroot -p123
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| ndb_2_fs |
| ndbinfo |
| performance_schema |
| test |
+--------------------+
6 rows in set (0.03 sec)
#创建ru数据库
mysql> create database ru;
Query OK, 1 row affected (0.04 sec)
mysql> use ru;
Database changed
#创建测试表peng
mysql> create table peng(id int,name varchar(20));
Query OK, 0 rows affected (0.14 sec)

mysql> insert into peng values(1,'luhp');
Query OK, 1 row affected (0.00 sec)
--------------------------------------------------------------------
#开启mydb2上的Data节点、SQL节点
[root@mydb2 ~]# /usr/local/mysql/bin/ndbd --defaults-file=/data/mysql/ndbd2.cnf 
[root@mydb2 ~]# /usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysql/my.cnf &
[root@mydb2 ~]# /usr/local/mysql/bin/mysql -S /data/mysql/mysql.sock -uroot -p123
#在这里可以看到在开启Data节点后,ru数据库已经同步过来,并且peng这张测试表已存在
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| ndb_3_fs |
| ndbinfo |
| performance_schema |
| ru |
| test |
+--------------------+
7 rows in set (0.04 sec)

mysql> use ru;
Database changed
mysql> select * from peng;
+------+------+
| id | name |
+------+------+
| 1 | luhp |
+------+------+
1 row in set (0.00 sec)
#插入测试数据
mysql> insert into peng values(2,'jxru');
Query OK, 1 row affected (0.04 sec)
------------------------
#mydb1上查询ru.peng这张表的数据,数据是同步的
mysql> select * from peng;
+------+------+
| id | name |
+------+------+
| 2 | jxru |
| 1 | luhp |
+------+------+
2 rows in set (0.00 sec)
7、关闭mydb1上的SQL节点,mydb2上的Data节点,mydb2上SQL节点插入数据,然后打开关闭的节点,验证数据是否同步。

#关闭mydb1上SQL节点
[root@mydb1 ~]# /usr/local/mysql/bin/mysqladmin -S /data/mysql/mysql.sock shutdown -uroot -p123
#通过ndb_mgm查看当前节点的状态,然后关闭mydb2上的Data节点
[root@mydb1 ~]# /usr/local/mysql/bin/ndb_mgm 192.168.56.121:1186
ndb_mgm> show;
Cluster Configuration
---------------------
[ndbd(NDB)]     2 node(s)
id=2    @192.168.56.121  (mysql-5.6.25 ndb-7.4.7, Nodegroup: 0, *)
id=3    @192.168.56.122  (mysql-5.6.25 ndb-7.4.7, Nodegroup: 0)

[ndb_mgmd(MGM)] 1 node(s)
id=1    @192.168.56.121  (mysql-5.6.25 ndb-7.4.7)

[mysqld(API)]   3 node(s)
id=4 (not connected, accepting connect from 192.168.56.121)
id=5    @192.168.56.122  (mysql-5.6.25 ndb-7.4.7)
id=6 (not connected, accepting connect from any host)

ndb_mgm> 3 stop
Node 3: Node shutdown initiated
Node 3 has shutdown.
ndb_mgm> Node 3: Node shutdown completed.

ndb_mgm> show;
Cluster Configuration
---------------------
[ndbd(NDB)]     2 node(s)
id=2    @192.168.56.121  (mysql-5.6.25 ndb-7.4.7, Nodegroup: 0, *)
id=3 (not connected, accepting connect from 192.168.56.122)

[ndb_mgmd(MGM)] 1 node(s)
id=1    @192.168.56.121  (mysql-5.6.25 ndb-7.4.7)

[mysqld(API)]   3 node(s)
id=4 (not connected, accepting connect from 192.168.56.121)
id=5    @192.168.56.122  (mysql-5.6.25 ndb-7.4.7)
id=6 (not connected, accepting connect from any host)

#在mydb2主机上在ru.peng表中插入一条数据
mysql> insert into peng values(3,'xyz');
Query OK, 1 row affected (0.00 sec)

#开启mydb2主机的Data节点
[root@mydb2 ~]# /usr/local/mysql/bin/ndbd --defaults-file=/data/mysql/ndbd2.cnf
#开启mydb1主机的SQL节点
[root@mydb1 ~]# /usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysql/my.cnf &
#登陆mydb1查看ru.peng表中的数据与预期一致
[root@mydb1 ~]# /usr/local/mysql/bin/mysql -S /data/mysql/mysql.sock -uroot -p123
mysql> use ru;
Database changed
mysql> select * from peng;
+------+------+
| id   | name |
+------+------+
|    2 | jxru |
|    3 | xyz  |
|    1 | luhp |
+------+------+
3 rows in set (0.00 sec)
8、关闭集群

#下面这条命令会关闭管理节点和所有的Data节点,但是SQL节点是不会关的,SQL节点可以像关闭数据库一样关闭
ndb_mgm> shutdown
/usr/local/mysql/bin/mysqladmin -S /data/mysql/mysql.sock shutdown -uroot -p123

-------------------------------------------
^_^本文对Mysql Cluster的简单双节点部署及功能做了验证,基本上能够了解Mysql Cluster的高可用性,在只有一台数据节点的情况下,它依然可以对外提供服务,不影响业务的正常运行,它是一个Active-Active的架构,每个数据节点存储同样的数据,当宕机的节点恢复后,会自动同步数据。
  评论这张
 
阅读(50)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017