【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,一经查实,立即删除!

相关文章

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

文章目录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 引入 我们在前面的章节中一直在…

Maven(一)——快速上手Maven

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

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

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

fluentd主从配置

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

Hadoop总结

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

HDFS的常用操作

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

并行计算总结

作者: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…

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

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

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

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

洛谷 P3750 [六省联考2017]分手是祝愿

传送门 题解 //Achen #include<algorithm> #include<iostream> #include<cstring> #include<cstdlib> #include<vector> #include<cstdio> #include<queue> #include<cmath> const int N100000,mod100003; #define For(i,a,b)…

解决 error: command 'swig' failed with exit status 1

2019独角兽企业重金招聘Python工程师标准>>> # pip install docker-registry 分析&#xff1a;观察出现的错误&#xff0c;发现最开始报错的地方提示不能找到openssl的.h头文件。一般.h头文件都是放到/usr/inclue目录下的&#xff0c;而且头文件所在的安装包一般叫…

Android安全-SO动态库注入

2019独角兽企业重金招聘Python工程师标准>>> 关于这方面技术&#xff0c;网上已经有大把的实现。在此&#xff0c;我只是记录下自己的学习过程。 0x1 原理 所谓的SO注入就是将代码拷贝到目标进程中&#xff0c;并结合函数重定向等其他技术&#xff0c;最终达到监控或…

BUG日志-2022.7.12——关于VSCode感叹号无法生成HTML骨架问题

解决办法&#xff1a;放弃使用多年的!&#xff0c;而采用html:5的形式。 原因&#xff1a;好像是因为VScode已经更新了 好多扩展也失效了。

hadoop 入门实例【转】

原文链接&#xff1a;http://www.cnblogs.com/xia520pi/archive/2012/06/04/2534533.html 1、数据去重 "数据去重"主要是为了掌握和利用并行化思想来对数据进行有意义的筛选。统计大数据集上的数据种类个数、从网站日志中计算访问地等这些看似庞杂的任务都会涉及数据…

AWS安装CDH5.3-CentOS6.4中关键操作步骤

1、在AWS masternode 上下载cloudera-manager-installer.bin安装包 [rootip-172-21-42-114 ~]# wget http://archive.cloudera.com/cm5/installer/latest/coludera-manager-installer.bin 此时会提示&#xff1a;-bash: wget: command not find 所以要现安装wget命令 [rootip-1…

You have an error in your SQL syntax; check the manual that corresponds to...

问题缘由&#xff1a; 使用datagrip插入数据时发生报错 使用插入语句为&#xff1a; insert into ev_name (‘username’,‘password’) values (‘admin’,‘123456’); 错误提示&#xff1a; You have an error in your SQL syntax; check the manual that corresponds to …

getaddrinfo ENOTFOUND 127.0.0.1:3306

错误缘由&#xff1a; 在写nodejs项目时&#xff0c;连接数据库发现找不到数据库。 解决&#xff1a; 发现数据库连接池没有设置端口号&#xff0c;需设置端口号3306。 解决效果&#xff1a; 成功解决

一幅长文细学node.js——一幅长文系列

文章目录1 Node.js概述1.1 初识Node.js1.2 Node.js简介1.3 Node.js安装1.4 使用Node.js运行JS代码2 fs文件系统模块2.1 读取文件2.2 写入文件2.3 路径问题3 Path路径模块3.1 Path模块概述3.2 路径拼接3.3 获取路径的文件名4 Http模块4.1 Http概述4.2 服务器相关的概念4.3 创建W…

一幅长文细学GaussDB(一)——数据库介绍

文章目录1 数据库介绍1.1 数据库技术1.2 数据库技术发展史数据库技术产生和发展数据库三个阶段比较数据库系统优势层次模型网状模型关系模型关系数据库产品历史结构化查询语言SQL面向对象数据模型&#xff08;OO模型&#xff09;数据管理技术的新挑战NoSQL技术特点和类型主要No…