文档章节

mysql-cluster 初识

五大三粗
 五大三粗
发布于 2015/04/20 17:18
字数 1774
阅读 18
收藏 0
    最近,对mysql-cluster进行初步了解,发现和oracle提供的RAC有一定的相似之处,但区别又很大,下面主要是mysql-cluster的搭建,至于对其的深入了解,留着以后工作需要用到时,再进行深入,现在先了解和掌握其基本的思路
      这篇文章写的比较乱,不建议参考,仅做个人记录之用,
      推荐参考博客:叶金荣:http://imysql.cn/
     1.配置环境说明和官方拓扑图
官方拓扑图:

mysql-cluster

数据节点(ndb):

    192.168.1.119
    192.168.1.120
    192.168.1.121
    192.168.1.122
SQL节点:
    192.168.1.123
    192.168.1.124
    192.168.1.125
管理节点:
    192.168.1.118
系统:red hat linux 6(2.6.32)
       2.修改所有主机的host文件,hosts文件内容如下[所有机器都需要配置]
  1. [root@client119 ~]# vim /etc/hosts  
  2. 192.168.1.118 client118.kongzhong.com  client118  
  3. 192.168.1.119 client119.kongzhong.com  client119  
  4. 192.168.1.120 client120.kongzhong.com  client120  
  5. 192.168.1.121 client121.kongzhong.com  client121  
  6. 192.168.1.122 client122.kongzhong.com  client122  
  7. 192.168.1.123 client123.kongzhong.com  client123  
  8. 192.168.1.124 client124.kongzhong.com  client124  
  9. 192.168.1.125 client125.kongzhong.com  client125  
  10. 192.168.1.126 client126.kongzhong.com  client126  

3.mysql-cluster 管理节点配置:

(1).在管理节点[192.168.1.118]上建立一个存放cluster配置文件的目录

  1. [root@client118 ~]# mkdir /var/lib/mysql-cluster  
  2. [root@client118 ~]# cd /var/lib/mysql-cluster/  

(2).编写配置文件

  1. [root@client118 mysql-cluster]# vim configure.ini  
  2. [配置文件内容如下]  
  3. # [ndbd default]:表示每个数据节点的默认配置,在每个节点的[NDBD]中不用再写这些选项  
  4. [ndbd default]  
  5. # 每个数据节点的镜像数量(即复制成员的个数)  
  6. NoOfReplicas=2  
  7. # 为数据存储分配的内存  
  8. DataMemory=80M  
  9. # 为索引存储分配的内存  
  10. IndexMemory=18M  
  11.   
  12. [ndb_mgmd]  
  13. # 定义管理节点的ip地址或者主机名  
  14. hostname=192.168.1.118  
  15. #  管理节点数据(日志)目录  
  16. datadir=/var/lib/mysql-cluster  
  17.   
  18. # 定义数据节点的ip地址,数据存放目录  
  19. [ndbd]  
  20. hostname=192.168.1.122  
  21. datadir=/usr/local/mysql  
  22.   
  23. [ndbd]  
  24. hostname=192.168.1.119  
  25. datadir=/usr/local/mysql  
  26.   
  27. [ndbd]  
  28. hostname=192.168.1.120  
  29. datadir=/usr/local/mysql  
  30.   
  31. [ndbd]  
  32. hostname=192.168.1.121  
  33. datadir=/usr/local/mysql  
  34.   
  35. # 定义sql节点  
  36. [mysqld]  
  37. hostname=192.168.1.125  
  38.   
  39. [mysqld]  
  40. hostname=192.168.1.123  
  41.   
  42. [mysqld]  
  43. hostname=192.168.1.124  
  44.   
  45. # 留一个空的[mysqld],以备扩展用, 否则会出现Failed to allocate nodeid No free node id found for ndbd(NDB)错误  
  46. [mysqld]  
  47. [mysqld]  

(3).解压mysql-cluster压缩包

  1. [root@client118 ~]# tar -xf mysql-cluster-gpl-7.3.3-linux-glibc2.5-x86_64.tar.gz  
  2. [root@client118 ~]# cd mysql-cluster-gpl-7.3.3-linux-glibc2.5-x86_64  
  3. # 将管理节点用到的两个ndb_mgm*命令复制到/usr/local/bin/下  
  4. [root@client118 mysql-cluster-gpl-7.3.3-linux-glibc2.5-x86_64]# cp bin/ndb_mgm* /usr/local/bin/  
  5. [root@client118 mysql-cluster-gpl-7.3.3-linux-glibc2.5-x86_64]# cd /usr/local/bin/  
  6. # 将上述命令赋予执行权限  
  7. [root@client118 bin]# chmod +x ndb_mgm*  
  8. # 建立mysql目录  
  9. [root@client118 bin]# mkdir /usr/local/mysql  

4.配置数据节点和sql节点:

# 我在数据节点和sql节点都初始化了系统数据库,个人觉得数据节点可以不初始化系统数据库,大家可以这样试一下

(1).在每个sql节点和数据节点配置my.cnf

  1. [root@client123 ~]# vim /etc/my.cnf   
  2. [client]  
  3. socket=/usr/local/mysql/sock/mysql.sock  
  4. [mysqld]  
  5. ndbcluster  
  6. datadir=/usr/local/mysql  
  7. socket=/usr/local/mysql/sock/mysql.sock  
  8. port=3306  
  9. # 指定管理节点ip地址  
  10. ndb-connectstring=192.168.1.118  
  11. old_passwords=1  
  12. [mysql_cluster]  
  13. # 指定管理节点ip地址  
  14. ndb-connectstring=192.168.1.118  

(2).在每个sql节点创建mysql用户和组[可以仅在sql节点执行建立mysql用户,数据节点可建可不建]

  1. [root@client120 ~]# groupadd mysql  
  2. [root@client120 ~]# useradd -g mysql mysql  
  3. # 建立mysql目录  
  4. [root@client123 ~]# mkdir /usr/local/mysql  
  5. [root@client123 ~]# mkdir /usr/local/mysql/sock  

(3).在sql节点和数据节点都执行如下操作[数据节点如果在/usr/local没有mysql目录,建立此目录]

  1. [root@client123 ~]# tar -xf mysql-cluster-gpl-7.3.3-linux-glibc2.5-x86_64.tar.gz -C /usr/local/  
  2. [root@client123 ~]# cd /usr/local/mysql-cluster-gpl-7.3.3-linux-glibc2.5-x86_64  
  3. # 将解压的内容移动到 /usr/local/mysql目录下  
  4. [root@client124 mysql-cluster-gpl-7.3.3-linux-glibc2.5-x86_64]# mv ./* ../mysql  

(4).在sql节点初始化系统数据库,并修改相应目录权限和开机启动

  1. # 初始化系统数据库  
  2. [root@client124 mysql]# scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql   
  3. [root@client123 mysql]# chown -R mysql.mysql /usr/local/mysql/data  
  4. [root@client123 mysql]# chown -R mysql.mysql /usr/local/mysql/sock  
  5. [root@client123 mysql]# chown -R mysql .  
  6. [root@client123 mysql]# cp support-files/mysql.server /etc/init.d/mysqld  
  7. [root@client123 mysql]# chmod +x /etc/init.d/mysqld  
  8. [root@client123 mysql]# chkconfig --add mysqld   

5.cluster环境的启动

注意启动顺序:首先是管理节点,然后是NDBD节点,最后是SQL节点。

关闭顺序:先关闭sql节点,再关闭管理节点[ndb_mgm> shutdown]

(1).管理节点启动

  1. [root@client118 ~]#  ndb_mgmd -f /var/lib/mysql-cluster/config.ini  
  2. # 启用ndb_mgm来监听客户端,如下:  
  3. [root@client118 ~]#  ndb_mgm  
  4. # 输入show,查看集群状况  
  5. ndb_mgm> show  

(2).启动数据(ndb)节点

  1. # 首次启动,则需要添加--initial参数,以便进行NDB节点的初始化工作。  
  2. # 在以后的启动过程中,则是不能添加该参数的,否则ndbd程序会清除在之前建立的所有用于恢复的数据文件和日志文件[在备份、恢复或配置变化后重启时除外]  
  3. [root@client119 ~]#  /usr/local/mysql/bin/ndbd --initial  
  4. 如果不是首次启动,则执行下面的命令。  
  5. [root@client119 ~]#  /usr/local/mysql/bin/ndbd  

(3).sql节点启动

  1. # sql节点可以执行如下命令  
  2. [root@client123 ~]# /usr/local/mysql/bin/mysqld_safe --user=mysql &  
  3. # 如果将mysql的启动脚本已经复制到/etc/init.d下,可以执行如下:  
  4. [root@client123 ~]# /etc/init.d/mysqld start  

(4).现在再到管理节点,使用show命令看,是不是数据节点和sql节点都连上了

  1. ndb_mgm> show  
  2. Cluster Configuration  
  3. ---------------------  
  4. [ndbd(NDB)]     4 node(s)  
  5. id=2    @192.168.1.122  (mysql-5.6.14 ndb-7.3.3, Nodegroup: 0, *)  
  6. id=3    @192.168.1.119  (mysql-5.6.14 ndb-7.3.3, Nodegroup: 0)  
  7. id=4    @192.168.1.120  (mysql-5.6.14 ndb-7.3.3, Nodegroup: 1)  
  8. id=5    @192.168.1.121  (mysql-5.6.14 ndb-7.3.3, Nodegroup: 1)  
  9.   
  10. [ndb_mgmd(MGM)] 1 node(s)  
  11. id=1    @192.168.1.118  (mysql-5.6.14 ndb-7.3.3)  
  12.   
  13. [mysqld(API)]   5 node(s)  
  14. id=6    @192.168.1.125  (mysql-5.6.14 ndb-7.3.3)  
  15. id=7    @192.168.1.123  (mysql-5.6.14 ndb-7.3.3)  
  16. id=8    @192.168.1.124  (mysql-5.6.14 ndb-7.3.3)  
  17. id=9 (not connected, accepting connect from any host)  
  18. id=10 (not connected, accepting connect from any host)  

6.测试

(1).在任意sql节点创建测试数据

  1. # 为了让表在cluster中正常复制,创建一个表必须使用ndbcluster引擎(engine=ndb Or engine=ndbcluster)方法如下:  
  2. [root@client123 ~]# mysql  
  3. Welcome to the MySQL monitor.  Commands end with ; or \g.  
  4. Your MySQL connection id is 2  
  5. Server version: 5.6.14-ndb-7.3.3-cluster-gpl MySQL Cluster Community Server (GPL)  
  6. Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.  
  7. Oracle is a registered trademark of Oracle Corporation and/or its  
  8. affiliates. Other names may be trademarks of their respective  
  9. owners.  
  10. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.  
  11. mysql> create database xcg;  
  12. mysql>use xcg  
  13. mysql>create table teacher(t_id int) engine=ndb;  
  14. # 如果是一个已经存在的表,用alter table修改表的引擎。  
  15. mysql>alter table student engine=ndb;  
  16. # 插入一条数据:  
  17. mysql>insert into teacher values(133);  
  18.   
  19. #  然后用另外一个sql节点登陆,查询数据,看是否能看到  
  20. mysql>select * from teacher;  
  21. # 两个节点数据保持一致,说明测试成功!  

(2).模拟某一个数据(ndb)节点节点宕掉

# 在任意一个数据节点上终止掉NDB进程,然后再分别通过SQL节点去访问teacher表,查看是否可以正常访问,数据是否一致。

# 这里就不演示了,各位自行测试,ndb进程使用kill -9 杀掉进程

(3).模拟sql节点宕掉,原理同上,不演示

注意:

(1).在测试过程中,遇到ndb节点莫名重启,有点纳闷,待解!

(2).每次修改config.ini文件,重启ndb_mgmd时,需要删除mysql-cluster文件下的ndb_1_config.bin.1文件,
因为他默认调用此文件

(3).mysql-cluster主要配置选项:管理节点配置configure.ini,sql和数据节点配置/etc/my.cnf

© 著作权归作者所有

共有 人打赏支持
五大三粗
粉丝 161
博文 2264
码字总数 4712446
作品 0
广州
程序员
私信 提问
初识MariaDB之10——MariaDB Galera Cluster

一、背景介绍 无论是采用binlog或者GTID的方式,其本质都是通过I/Othread和sqlthread的形式进行的同步,因为无法避免复制延迟而饱受诟病,基于上述MariaDB引入了Galera Cluster来解决此问题。...

qiao645
2018/06/29
0
0
MySQL Cluster(MySQL 集群) 初入测试

MySQL Cluster 是MySQL适合于分布式计算环境的高实用、高冗余版本。它采用了NDB Cluster存储引擎,允许在1个 Cluster 中运行多个MySQL服务器。在MyQL5.0及以上的二进制版本中、以及与最新的L...

English0523
2014/01/07
0
0
mysql中的null

mysql中的null 无标题2017-06-2230 阅读 数据库mysql 最近在优化系统代码的时候,需要修改一下表结构,增加了一个字段D,原来表中A,B,C三字段构成了唯一性约束,现在增加了D字段,D字段是可控...

无标题
2017/06/22
0
0
Ext.Error: Unable to parse the JSON returned by the server: You're trying to decode an invalid JSON String

Firefox给出的错误 Ext.Error: Unable to parse the JSON returned by the server: You're trying to decode an invalid JSON String: articlelist.jsp {"results":"100","rows":[{"id":"1"......

anonymous_007
2014/05/28
2.2K
2
Motan源码阅读--初识Motan

Motan Motan是一套高性能,易于使用的RPC框架。提供了服务治理,包括服务节点自动发现,摘除,高可用和负载均衡。Motan具有良好扩展性,主要模块都提供了不同实现,例如多种注册中心,多种r...

春哥大魔王的博客
2018/08/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

KaliLinuxNetHunter教程下载相关资源

KaliLinuxNetHunter教程下载相关资源 当用户将刷机工具准备完后,则需要下载ROM包。ROM是ROM image(只读内存镜像)的简称,常用于手机定制系统。一般手机刷机的过程,就是将只读内存镜像(R...

大学霸
13分钟前
1
0
C# 字符串插值

字符串插值 据说是 C# 6.0 中引入的新特性. 字符串插值允许您以更简洁易读的方式将字符串拼凑在一起. 如果在字符串的左引号前添加$,则可以在字符串中的大括号里包含字符串值,如变量等. 一些示...

taadis
37分钟前
2
0
Navicat使用教程:接收MySQL/MariaDB问题通知

下载Navicat Monitor最新版本 Navicat Monitor 是一套安全、简单而且无代理的远程服务器监控工具。它具有强大的功能使你的监控发挥最大效用。受监控的服务器包括 MySQL、MariaDB 和 Percona ...

电池盒
39分钟前
3
0
我是怎样和Linux系统结缘并通过红帽RHCE认证的

我高考完当时就是选择的计算机科学与技术专业,上大学以后联想到的和计算机相关的就只有写代码,开发,网站,网页设计,就没有其他的了,当时学习写代码也都是在Windows上,什么C#、C++之类的...

Linux就该这么学
46分钟前
5
0
hbase的web页面访问

hbase1.1版本web页面默认不开放 在hbase-site.xml中加入一下内容即可 <!-- 新增的配置 --><property><name>hbase.master.info.port</name><value>60010</value></property> 借鉴htt......

你为什么不吃药
50分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部