【Data Cluster】真机环境下MySQL数据库集群搭建

             真机环境下MySQL-Cluster搭建文档


MySQL Cluster简介

      MySQL cluster 和 Oracle RAC 完全不同,它采用 无共享架构Shared nothing(shared nothing architecture)。整个集群由管理节点(ndb_mgmd),处理节点(mysqld)和存储节点(ndbd)组 成,不存在一个共享的存储设备。MySQL cluster 主要利用了 NDB 存储引擎来实现,NDB 存储引擎是一个内存式存储引擎,要求数据必须全部加载到内存之中。数据被自动分布在集群中的不同存 储节点上,每个存储节点只保存完整数据的一个分片(fragment)。同时,用户可以设置同一份数据保存在多个不同的存储节点上,以保证单点故障不会造 成数据丢失。MySQL cluster 主要由 3 各部分组成:

  • SQL 服务器节点
  • NDB 数据存储节点
  • 监控和管理节点

这样的分层也是与 MySQL 本身把 SQL 处理和存储分开的架构相关系的。MySQL cluster 的优点在于其是一个分布式的数据库集群,处理节点和存储节点都可以线性增加,整个集群没有单点故障,可用性和扩展性都可以做到很高,更适合 OLTP 应用。但是它的问题在于:

  •  NDB(“NDB” 是一种“内存中”的存储引擎,它具有可用性高和数据一致性好的特点。) 存储引擎必须要求数据全部加载到内存之中,限制比较大,但是目前 NDB 新版本对此做了改进,允许只在内存中加 载索引数据,数据可以保存在磁盘上。
  •  目前的 MySQL cluster 的性能还不理想,因为数据是按照主键 hash 分布到不同的存储节点上,如果应用不是通过主键去获取数据的话,必须在所有的存储节点上扫描, 返回结果到处理节点上去处理。而且,写操作需要同时写多份数据到不同的存储节点上, 对 节点间的网络要求很高。

虽然 MySQL cluster 目前性能还不理想,但是 share nothing 的架构一定是未来的趋势,Oracle 接手 MySQL之后,也在大力发展 MySQL cluster,我对 MySQL cluster 的前景抱有很大的期待。

回到顶部

mysql-cluster构造

安装mysql-cluster首先要了解cluster的构造,Cluster大体上是由管理节点(mgmd)、数据节点(ndbd)、sql节点(mysqld)组成的。

                     

回到顶部

虚拟机安装centos6.6

系统要求:

内存:4G(最少4G)

CPU:需要支持VT

如果你是笔记本用户那么cpu虚拟化可能是关闭的,请在BIOS下设置virtualization 为enable

 

新建虚拟机,选择典型安装,点击下一步

 

点击下一步

 

这里用户名最好是mysql因为后面要用到。设置成其他用户也可以。

下一步

 

位置就是保存这个虚拟centos系统的位置

下一步

 

选择如图所示,下一步

 

选择自定义硬件,建议最好每个虚拟机分配1G的内存。每个cent最少分配512M内存。

点击完成就可以了。

虚拟机安装完成后,用root权限进入。密码和mysql账户的密码相同。

回到顶部

mysql-cluster下载

www.mysql.com/downloads/cluster  选择linux-generic下的版本 根据你的cent的系统选择32or64

回到顶部

centos6.6搭建环境配置

首先进入linux终端,右键桌面如图所示

 

Open in terminal(终端)

安装mysql-cluster前首先要卸载原有系统自带的mysql

联网卸载(终端下执行命令)

#yum remove mysql

手动清理(终端下执行命令)

#rpm –qa|grep mysql* (这条是查询系统中存在的mysql)

#rpm –e –nodeps mysql-libs-5.1.71-1.el6.x86_64 (不同版本的centos这个版本也不同)

回到顶部

mysql-cluster安装包导入cent中

首先查询需要导入的cent的ip地址,终端下输入

#ifconfig

 

如图所示其中inet addr:192.168.191.129就是这个cent的ip地址。

 

下载软件winscp

 

打开软件

 

新建站点,主机名就是cent 的ip ,用户名使用root

点击登录,输入密码,连接成功

 

左边是windows右边是cent

Cent下进入目录/usr/local/src 把你的mysql-cluster安装文件放在这个目录下

打开cent终端

添加mysql用户和组(如果前面安装虚拟机的时候使用的用户是mysql则跳过此步骤

添加mysql用户

1.      # groupadd mysql 

2.      # useradd mysql -g mysql

安装mysql-cluster 7.4.4-linux

1.      # cd /usr/local/src/(已下载好集群版) 

2.      # tar -xvf mysql-cluster-gpl-7.4.4-linux-glibc2.5-x86_64.tar.gz  

3.      # mv mysql-cluster-gpl-7.4.4-linux-glibc2.5-x86_64 ../mysql 

4.      # cd .. 

5.      # chown -R mysql:mysql mysql/ 

6.      # cd mysql 

7.      # scripts/mysql_install_db --user=mysql  

 

 

当出现这个页面则mysql-cluster安装成功

以上步骤是安装mysql-cluster必须步骤,所有机器都要进行以上的步骤

回到顶部

集群配置

首先进行管理节点的配置(终端输入)

# vi  /var/lib/mysql-cluster/config.ini (目录和文件没有请新建,添加以下内容)

1.      [NDBD DEFAULT]
2.      NoOfReplicas=2
3.      [TCP DEFAULT]
4.      portnumber=3306
5.      
6.      [NDB_MGMD]
7.      #设置管理节点服务器 
8.      nodeid=1
9.      HostName=192.168.191.132 (管理节点服务器ip地址)
10.   DataDir=/var/mysql/data
11.   
12.   [NDBD]
13.   nodeid=2
14.   HostName=192.168.191.130 (ndbd点ip地址)
15.   DataDir=/var/mysql/data
16.   
17.   [MYSQLD]
18.   nodeid=3
19.   HostName=192.168.191.131  (mysqld节点ip地址)
20.   [MYSQLD]
21.   nodeid=4
22.   HostName=192.168.191.133  (mysqld节点ip地址)
23.   
24.   #必须有空的mysqld节点,不然数据节点断开后启动有报错
25.   [MYSQLD]
26.   nodeid=5
27.   [mysqld]
28.   nodeid=6

 

以上内容输入完毕后,按ESC,输入:wq即可保存退出

 

拷贝ndb_mgm、ndb_mgmd、config.ini到bin目录。

# cd /usr/local/mysql/bin 

# cp ./ndb_mgm /usr/local/bin/ 

# cp ./ndb_mgmd /usr/local/bin/

# cp /var/lib/mysql-cluster/config.ini /usr/local/bin/

 

 

数据节点配置(终端输入)

# vi /etc/my.cnf (添加以下内容)

[mysqld] 

datadir=/var/mysql/data 

socket=/var/mysql/mysql.sock 

user=mysql 

# Disabling symbolic-links is recommended to prevent assorted security risks 

symbolic-links=0 

 

#运行NDB存储引擎 

ndbcluster  

#指定管理节点 

ndb-connectstring=192.168.191.132  (管理节点ip)

[MYSQL_CLUSTER] 

ndb-connectstring=192.168.191.132   (管理节点ip)

[NDB_MGM] 

connect-string=192.168.191.132   (管理节点ip)

 

[mysqld_safe] 

log-error=/var/mysql/log/mysqld.log 

pid-file=/var/run/mysqld/mysqld.pid

 

Sql节点配置(终端输入)

# cd /usr/local/mysql/

 

设置mysql服务为开机自启动

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

# chmod +x /etc/rc.d/init.d/mysqld 

# chkconfig --add mysqld

 

# vi /etc/my.cnf (添加以下内容)

[mysqld]    

datadir=/var/mysql/data 

socket=/var/mysql/mysql.sock 

user=mysql 

# Disabling symbolic-links is recommended to prevent assorted security risks 

symbolic-links=0 

log-bin = /var/mysql/log/mysql-bin.log 

max_connections=1000 

 

#以下为mysql 主主模式的配置文件 

# 忽略mysql数据库复制 

binlog-ignore-db=mysql 

# 每次增长2 

auto-increment-increment=2 

# 设置自动增长的字段的偏移量,即初始值为2 

auto-increment-offset=1 

ndbcluster 

ndb-connectstring=192.168.191.132 (管理节点ip)

 

[MYSQL_CLUSTER] 

ndb-connectstring=192.168.191.132  (管理节点ip)

[NDB_MGM] 

connect-string=192.168.191.132  (管理节点ip)

 

[mysqld_safe] 

log-error=/var/mysql/log/mysqld.log 

pid-file=/var/run/mysqld/mysqld.pid 

 

这里要注意,在var目录下新建mysql目录,在新建的mysql目录下建立log和data目录

另外要给这两个目录授权代码如下

# cd /var

# chown –R mysql:mysql mysql/

下面两个命令是对mysql命令的一个link,否则无法使用mysql命令

# Ln –s /usr/local/mysql/bin/mysql /usr/bin

# Ln –s /var/mysql/mysql.sock /tmp/mysql.sock

回到顶部

运行mysql-cluster

mysql集群的启动顺序为:管理节点->数据节点->SQL节点

mysql集群的关闭顺序为,管理节点->数据节点->SQL节点

 

打开服务的时候注意防火墙问题

注意把管理节点的防火墙关闭 命令如下:

# /etc/init.d/iptables stop

 

首先打开管理节点服务

# ndb_mgmd -f /var/lib/mysql-cluster/config.ini --initial(注意第一次或者对config文件进行修改后,打开服务一定要加上initial否则新增加的内容不会被使用)

然后打开ndbd节点服务

# /usr/local/mysql/bin/ndbd --initial(此处同上)

出现一下信息表示ndbd节点启动成功.

 

2012-03-28 02:01:38 [ndbd] INFO -- Angel connected to '10.32.33.120:1186'

2012-03-28 02:01:38 [ndbd] INFO -- Angel allocated nodeid: 36

 

最后打开两个sql节点131和133

#service mysqld start

出现mysql success表示服务启动成功

 

打开管理节点,终端输入

# ndb_mgm

#ndb_mgm> show

显示以下信息,则mysql-cluster安装部署成功

Cluster Configuration

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

[ndbd(NDB)] 2 node(s)

id=2 @192.168.191.130 (mysql-5.5.20 ndb-7.4.4, Nodegroup: 0)

[ndb_mgmd(MGM)] 1 node(s)

id=1 @192.168.191.132 (mysql-5.5.20 ndb-7.4.4)

[mysqld(API)] 4 node(s)

id=3 @192.168.191.131 (mysql-5.5.20 ndb-7.4.4)

id=4 @192.168.191.133 (mysql-5.5.20 ndb-7.4.4)

id=5 (not connected, accepting connect from any host)

id=6 (not connected, accepting connect from any host)

可以看到各个节点已经连接上了。

 

以下是关于mgm相关的命令

# ndb_mgm

# ndb_mgm> show 查看各节点情况。  

# ndb_mgm> all report memory 查看各数据节点使用情况  

# ndb_mgm>create nodegroup 3创建数据节点分组   

# mysql> alter online table data_house reorganize partition; 调整分区数据

# ndb_mgm>shutdown关闭节点

# ndb_mgm>exit退出

回到顶部

常见问题

Mysqld端服务无法启动

[root@localhost Desktop]#service mysqld start

Starting mysql.the service quit without updating PID file (/[FAILED]/var/mysql/log/localhost.localdomain.pid).

先去查看日志

#cd /var/mysql/data

#less localhost.localdomain.err

如果错误是

Fatal error:can’t open and lock privilege tables:Table’mysql.user’ doesn’t exist

解决方法:

终端输入

到mysql目录下/usr/local/mysql

输入

Scripts/mysql_install_db –user=mysql(初始化数据库即可)

其他问题请注意查看问题所在的文件夹权限问题

回到顶部

测试

1、从SQL节点131登录,创建数据库和表,进行简单测试。

mysql> create database tltest ;

mysql> use tltest;

Database changed

mysql> create table test1(id int,name varchar(10)) engine=ndb ;

mysql> insert into test1 values(1,'tl');

mysql> select * from test1 ;

+------+---------+

| id   | name  |

+------+---------+

|  1 |    tl   |

+------+---------+

登陆133节点,查看效果,库,表和数据已经同步。

从133节点插入一条数据,同样登陆131,也能看到数据已经同步。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/398513.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【层次聚类】python scipy实现

层次聚类 原理 有一个讲得很清楚的博客:博客地址 主要用于:没有groundtruth,且不知道要分几类的情况 用scipy模块实现聚类 参考函数说明:pdistsquareformlinkagefcluster scipy.spatial.distance.pdist:计算点之间的距…

Find a girl friend

Find a girl friend Time Limit: 1000ms Memory limit: 262144K 有疑问?点这里^_^ 题目描述 CC wants to find a girl friend, he knows each girls age and name in his class, and each girl’s age is different.. Now he wants to know the youngest girls n…

数据结构杂谈(八)——树(上)

文章目录8 树(上)8.1 引入8.2 树的基础知识8.3 树的存储结构8.3.1 双亲表示法8.3.2 孩子表示法8.4 二叉树8.4.1 基础知识8.4.2 高频考点8.4.3 二叉树的性质8.4.4 二叉链表8.4.5 树和二叉树的转换8.4.6 森林和二叉树的转换8.5 遍历8 树(上) 8.1 引入 我们在前面的章节中一直在…

vs entityframwork Validation failed for one or more entities

问题:添加数据库一条数据时出错 查找异常 catch (DbEntityValidationException dbEx) { foreach (var validationErrors in dbEx.EntityValidationErrors) { foreach (var validationError in validationErrors.ValidationErrors) { Trace.TraceInformation("P…

Universal-Image-Loader,android-Volley,Picasso、Fresco和Glide开源组件加载网络图片的优缺点比较...

在android中的加载网络图片是一件十分令人头疼的事情,在网上有着许多关于加载网络图片的开源库,可以让我们十分方便的加载网络图片。在这里我主要介绍一下我自己在使用Volley, Picasso, Universal-Imageloader的一些使用的感悟。以及最基本的用法介绍。1…

hdu 1754 I Hate It(分块做法)

题意:中文题,不多解释 思路:这个题原本用线段树很容易做,但分块其实也很容易,对于分块的复杂度还不是很会计算,只知道是每次分为sqrt(n)块,然后一共有sqrt(n&…

Maven(一)——快速上手Maven

文章目录Maven概述Maven简介Maven的安装Maven的基本使用IDEA配置Maven依赖管理依赖范围Maven概述 Maven是专门用于管理和构建Java项目的工具,它的主要功能有: (一)提供了一套标准化的项目结构 不同的IDE项目结构是不一样的&…

如何定制Activity的标题栏

requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); setContentView(R.layout.main); //自定义标题栏 mWindow getWindow(); mWindow.setFeatureInt(Window.FEATURE_CUSTOM_TITLE,R.layout.titlebar); titlebar.xml <?xml version"1.…

牛客网 牛客小白月赛1 H.写真がとどいています

H.写真がとどいています链接&#xff1a;https://www.nowcoder.com/acm/contest/85/H来源&#xff1a;牛客网这个题数乱了&#xff0c;导致wa了好几次。特别弱智&#xff0c;从A开始往上&#xff0c;就是A,B,C,D,E,F。A的下面就是G开始倒着&#xff0c;G,F,E。我智障&#xff0…

EntityFramework_MVC4中EF5 新手入门教程之三 ---3.排序、 筛选和分页

在前面的教程你实施了一套基本的 CRUD 操作&#xff0c;为Student实体的 web 页。在本教程中&#xff0c;您将添加排序、 筛选和分页到 StudentsIndex的功能。您还将创建一个页面&#xff0c;并简单分组。 下面的插图显示页面当你完成时的样子。列标题是链接&#xff0c;用户可…

eclipes快捷键

本文原创作者&#xff1a;pipi-changing 本文原创出处&#xff1a;http://www.cnblogs.com/pipi-changing/ Ctrl1 快速修复(最经典的快捷键,就不用多说了)CtrlD: 删除当前行 CtrlAlt↓ 复制当前行到下一行(复制增加)CtrlAlt↑ 复制当前行到上一行(复制增加)Alt↓ 当前行和下面一…

fluentd主从配置

fluentd是一个免费的、完全开源的日志管理工具&#xff0c;可以对日志进行收集、处理、存储。对于一些高流量的网站或者特殊的架构&#xff0c;需要fluentd高可用配置。 以下是在测试环境搭建模拟fluentd主从配置&#xff0c;模拟主从切换。 服务器 服务 192.168.199.1 elas…

Hadoop总结

目录 大数据概述 Hadoop大数据开发平台 资源管理YARN 分布式文件系统HDFS 非关系型数据库NOSQL 分布式数据库HBASE 批处理和MapReduce 数据仓库查询分析和Hive 基于内存计算的Spark 流计算和Flink 图计算和PREGEL Hadoop常用命令总结 大数据概述 大数据的4V&#x…

poj 2449

转自http://blog.csdn.net/sdj222555/article/details/7690081 题目大意就是给出一个图&#xff0c;然后给出一个起点个一个终点&#xff0c;求这两点间的第K短路。 本题中是可以走重复的路的&#xff0c;所以如果一张图中有一个环的话&#xff0c;无论求第几短路都是存在的。 …

CTS类型

类如果被封装&#xff0c;叫做密封类&#xff0c;密封类不能作为其他类的基类接口是抽象成员的集合&#xff0c;它在对象和对象用户间提供一个契约&#xff0c;CTS允许类实现任何数目的接口抽象类不能直接被创建&#xff0c;但可以用来为派生类型定义公共的行为&#xff0c;具体…

HDFS的常用操作

1、HDFS文件的权限以及读写操作 HDFS文件的权限&#xff1a; •与Linux文件权限类似 •r: read; w:write; x:execute&#xff0c;权限x对于文件忽略&#xff0c;对于文件夹表示是否允许访问其内容 •如果Linux系统用户zhangsan使用hadoop命令创建一个文件&#xff0c;那么这个文…

并行计算总结

作者&#xff1a;ArimaMisaki 目录 1 并行计算概述. 2 1.1 基本概念. 2 1.2 存储器的层次结构. 3 1.3 并行计算. 3 1.4 动态互连网络. 4 1.5 并行计算机结构模型. 5 1.6 并行算法的基本设计策略. 6 1.7 并行编程风范. 6 1.8 单核多线程和并发执行. 7 1.9 拓展&#x…

HDMI转MIPI DSI芯片方案TC358779XBG

型号&#xff1a;TC358779XBG功能&#xff1a;HDMI1.4转MIPI DSI通信方式&#xff1a;IIC分辨率&#xff1a;1920*1080电源&#xff1a;3.3/1.8/1.2封装形式&#xff1a;BGA80深圳长期现货 &#xff0c;提供技术支持&#xff0c;样品申请及规格书请联系蔡生M18312533639 Q1520…

基础总结篇之中的一个:Activity生命周期

子曰&#xff1a;溫故而知新&#xff0c;能够為師矣。《論語》 学习技术也一样&#xff0c;对于技术文档或者经典的技术书籍来说&#xff0c;指望看一遍就全然掌握&#xff0c;那基本不大可能&#xff0c;所以我们须要常常回过头再细致研读几遍&#xff0c;以领悟到作者的思想精…

数据结构杂谈(九)——二叉树的遍历

9 二叉树的遍历 文章目录9 二叉树的遍历9.1 递归函数基础9.2 深度优先遍历的实现9.3 二叉树层次遍历9.1 递归函数基础 什么是递归&#xff1f;调用自身就是叫递归&#xff0c;如下所示&#xff1a; void r(){r(); }我们习惯借用阶梯图来帮助我们理解这些知识。如果是同一层函数…