虚拟机搭建Mysql Cluster

参考文档:http://www.cnblogs.com/jackluo/archive/2013/01/19/2868152.html

http://www.cnblogs.com/StanBlogs/archive/2011/06/14/2080986.html

需要三台服务器。一个管理节点服务器。另外两个均充当数据节点和sql节点。

这里选用ubuntu64位操作系统。mysql cluster 对应也必须是64位的。去官方站点下载mysql-cluster-gpl-7.4.4-linux-glibc2.5-x86_64。

(注:当在虚拟机操作时,vmware下,可以只先操作一个sql节点,然后虚拟机有克隆功能,直接整一份,这样另一个sql节点就基本搞定了,只需要更改下ip即可。在虚拟机实验下,最好整快照或克隆。

  我这里,管理节点ip是192.168.1.232

  另两个机器,既充当数据节点也是sql节点。ip是192.168.1.210 ;  192.168.1.219

安装ubuntu操作系统后,更改ip,dns配置。

切换用户 sudo passwd root,然后创建个root用户密码。

su root后,输入root密码。

以下操作利用root用户进行。

对每个机器的ip配置:

vim /etc/network/interfaces

改内容如下:

auto eth0

iface eth0 inet static  #这里没用dhcp动态,取静态ip

address 192.168.1.219     #ip地址

gateway 192.168.1.1    #网关地址

netmask 255.255.255.0    #子网掩码

dns-nameservers 192.168.1.1  #dns解析

重启网络设置:

sudo /etc/init.d/networking restart  

一. 对数据节点和sql节点的操作

1. 创建组,用户

groupadd mysql

useradd -g mysql mysql

2. 下载mysql cluster64。传这个文件到某个目录下。这里直接上传到/usr/local(如果利用文件上传服务器,则需要赋给权限如chmod 766 /usr/local)

解压: tar -xvf mysql.tar.gz

改名: mv mysql-cluster-gpl-7.4.4-linux-glibc2.5-x86_64  mysql

3. 修改mysql目录权限

cd mysql

chown -R root .

chown -R mysql data

chgrp -R mysql .

4. 安装mysql初始库

在mysql目录下:

scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql

5. 把mysql设置为开机自启

可以把mysql服务开机自启。不整也行。

6.这里设置mysql配置文件,这里缺省了mysql配置的性能方面参数。

vim /etc/my.cnf

[client]

socket=/usr/local/mysql/sock/mysql.sock

[mysqld]

ndbcluster

datadir=/usr/local/mysql/data

socket=/usr/local/mysql/sock/mysql.sock

ndb-connectstring=192.168.1.232       #这个是管理节点的ip

old_passwords=1

default-storage-engine=ndbcluster       #可以省略建表的引擎语句(只有引擎是ndb的才可以起到集群的作用)

[mysql_cluster]

ndb-connectstring=192.168.1.232  #这里配置的是管理节点服务器地址

7. 此时不必启动mysql服务。

以上的操作,需要在多台数据节点和sql节点机器上进行(要是虚拟机,就克隆就好了,然后改下ip)。

二. 对管理节点的操作

管理节点不需要安装mysql服务。只需要mysql-cluster解压后的两个文件,分别是

sql节点服务器上:/usr/local/mysql/bin/ndb_mgmd 和 /usr/local/mysql/bin/ndb_mgm

ndb_mgmd 是管理节点的服务

ndb_mgm  是管理节点的客户端查看用

1. 把sql节点上的这两个文件拷贝到管理节点的/usr/local/bin目录下。(我使用filezilla传过去的)

2. 在管理节点上,确保这两个文件可执行。

cd /usr/local/bin

chmod +x ndb_mgm*

3. 在/usr/local下创建mysql文件夹,确保数据节点打开服务时,可以生成log文件

mkdir /usr/local/mysql

4. 创建一个管理节点的配置文件

mkdir /var/lib/mysql-cluster

cd /var/lib/mysql-cluster

vim config.ini

[NDBD DEFAULT]

NoOfReplicas=2

MaxNoOfTables = 1024                      #所有ndbcluster引擎的表数量最大数

MaxNoOfAttributes = 7000                #所有ndbcluster引擎的表的所有字段数量最大数

MaxNoOfOrderedIndexes = 10000

[TCP DEFAULT]

portnumber=22202

[NDB_MGMD]

hostname=192.168.1.232                 #管理节点

datadir=/var/lib/mysql-cluster/

[NDBD]

hostname=192.168.1.210                 #数据节点

datadir=/usr/local/mysql/data/

[NDBD]

hostname=192.168.1.219                 #数据节点

datadir=/usr/local/mysql/data/

[MYSQLD]

# 这里配置sql节点,最好留空。

[MYSQLD]

三、启动mysql cluster

注意启动顺序:首先是管理节点,然后是数据节点,最后是SQL节点,这里数据节点和sql节点是同一个机器。

1.  ndb_mgmd -f /var/lib/mysql-cluster/config.ini --initial

第一次启动时,再加--initial参数,或者在更改config.ini节点时加

(启动时可能会报个WARNING,如WARNING  -- at line 7: [TCP] portnumber is deprecated,这个不用管就是端口号不建议使用了,warning的级别不如error。可以正常工作的。)

此时使用ndb_mgm来监听客户端

2.  数据节点

/usr/local/mysql/bin/ndbd

首次启动,则需要添加--initial参数,以便进行NDB节点的初始化工作。在以后的启动过程中,则是不能添加该参数的,否则ndbd程序会清除在之前建立的所有用于恢复的数据文件和日志文件。(如果报错:日志文件不能生成,则手动创建这个目录)

此时,在管理节点上,ndb_mgm,使用show命令时,可以看到数据节点连接上了(多台数据节点都需要这样操作)

3.  sql节点

/usr/local/mysql/bin/mysqld_safe --user=mysql &

如果报错说某套接字连不上mysql,那么尝试下再次创建系统数据库,方法如下:

在mysql目录下

scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql

再次启动

/usr/local/mysql/bin/mysqld_safe --user=mysql &

查看管理节点。此时sql节点也应该连接上了。

四、测试

1、常规测试:

在一个节点比如A节点,上面:

为了让表在cluster中正常复制,创建一个表必须使用ndbcluster引擎(engine=ndb Or engine=ndbcluster)方法如下:

mysql>use test

mysql>create table teacher(t_id int) engine=ndb;(这里引擎须要是ndb,而不是innodb或其他)

如果是一个已经存在的表,用alter table修改表的引擎。

mysql>alter table teacher engine=ndb;

插入一条数据:

mysql>insert into teacher values(133);

然后在B节点上查看:

mysql>select * from teacher;

A、B两个节点数据保持一致,那就测试成功了哈哈,遇到什么问题网上查一下资料什么的!

模拟NDB节点Crash

这个测试,基本参照文档:

http://www.cnblogs.com/StanBlogs/archive/2011/06/14/2080986.html

=================================================================================

备注给需要的童鞋:

1 查看某机器下,该系统支持的存储引擎

show engines;

2 查看表使用的存储引擎

show table status from db_name where name='table_name';

3. 更改表引擎

  alter table student engine=ndb;

=================================================================================

 如果你想连接你的mysql的时候发生这个错误:

ERROR 1130: Host '192.168.1.3' is not allowed to connect to this MySQL server

解决方法:
1. 授权法。 
如果你想允许用户myuser从ip为192.168.1.3的主机连接到mysql服务器,并使用mypassword作为密码
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

FLUSH PRIVILEGES;

=================================================================================

当需要关闭数据节点或sql节点下的某服务,如关闭ndbd服务或mysql服务

可以这样

ps aux | grep mysql

ps aux | grep ndbd

然后找到进程号,

利用  kill -9 pid(进程号)

搭建mysql cluster的更多相关文章

  1. Windows系统搭建Mysql Cluster集群

    简单介绍一下MySQL集群涉及的三种节点:     管理节点(也可以称管理服务器)是整个集群环境的核心,类似于集群中起调度作用的枢纽,由它来负责管理其它节点(数据节点和SQL节点)的开启.关闭或重启某 ...

  2. MySQL集群---②Windows平台搭建MySQL CLUSTER集群

    原文:http://blog.csdn.net/mazhaojuan/article/details/42211857 本文将通过两台电脑来简单介绍一下Windows平台如何搭建MySQL集群. My ...

  3. MySQL Cluster搭建与测试

    MySQL Cluster是一个基于NDB Cluster存储引擎的完整的分布式数据库系统.不仅仅具有高可用性,而且可以自动切分数据,冗余数据等高级功能.和Oracle Real Cluster Ap ...

  4. MySQL Cluster 集群

    本文转载 http://www.cnblogs.com/gomysql/p/3664783.html MySQL Cluster是一个基于NDB Cluster存储引擎的完整的分布式数据库系统.不仅仅 ...

  5. 第 16 章 MySQL Cluster

    前言: MySQL Cluster 是一个基于 NDB Cluster 存储引擎的完整的分布式数据库系统.不仅仅具有高可用性,而且可以自动切分数据,冗余数据等高级功能.和 Oracle Real Cl ...

  6. MySql(十六):MySql架构设计——MySQL Cluster

    前言: MySQL Cluster 是一个基于 NDB Cluster 存储引擎的完整的分布式数据库系统.不仅仅具有高可用性,而且可以自动切分数据,冗余数据等高级功能.和 Oracle Real Cl ...

  7. MySQL性能调优与架构设计——第 16 章 MySQL Cluster

    第 16 章 MySQL Cluster 前言: MySQL Cluster 是一个基于 NDB Cluster 存储引擎的完整的分布式数据库系统.不仅仅具有高可用性,而且可以自动切分数据,冗余数据等 ...

  8. 超详细,多图文使用galera cluster搭建mysql集群并介绍wsrep相关参数

    超详细,多图文使用galera cluster搭建mysql集群并介绍wsrep相关参数 介绍galera cluster原理的文章已经有一大堆了,百度几篇看一看就能有相关了解,这里就不赘述了.本文主 ...

  9. centos7 mysql cluster集群搭建基于docker

    1.准备 mn:集群管理服务器用于管理集群的其他节点.我们可以从管理节点创建和配置集群上的新节点.重新启动.删除或备份节点. db2/db3:这是节点间同步和数据复制的过程发生的层. db4/db5: ...

随机推荐

  1. JavaScript 频繁发射事件处理的优化 --- 函数节流/事件稀释

    引子:昨天面试时面试官问了如何实现一个固定导航栏,在我答完后面试官问我可能存在哪些问题,如何优化? 这个问题我答得不太好,但现在回想起来应该有两个问题: 1. 把 fixbar元素 position: ...

  2. 【读书笔记】iOS-Apple的移动设备硬件

    本书中有一个关键观点是:“硬件并不是特别重要,用户体验才是真正的杀手级应用.“尽管如此,多了解一些你使用的硬件的相关知识,对于整个项目来说是必备的,而对于设计和开发高质量的作品来说敢是不可或缺的. 人 ...

  3. 使用jquery获取iframe内的元素属性

    当需要获取iframe里的内容时需要有几个前提,否则你是获取不到的: 1:当前页面与iframe的src的页面需要在同一个域名下: 2:必须要等iframe里边的页面加载完成才能获取,否则你要获取的标 ...

  4. CSS 实现隐藏滚动条同时又可以滚动

    方法1: 利用 css 3 的新特性  -webkit-scrollbar, 但是这种方式只兼容chrome,不兼容 火狐 和 IE. /* for Chrome */ .content::-webk ...

  5. IntelliJ idea连接操作DB2数据库

    一.场景 一直都是用navicat作为数据库的连接工具,但是navicat不支持连接DB2,网上也推荐很多其它软件工具,但是因为DB2用的场景不多,这次只是开发etl工具需要测试数据库,正好发现ide ...

  6. Salesforce的基础用户界面定制

    Salesforce的用户界面 Salesforce的用户界面易于定制.本文将讲述如何定制: 主菜单和选项卡 自定义按钮和链接 视图列表 页面布局 定制主菜单和选项卡 Salesforce的主菜单默认 ...

  7. LearnX控件漏洞挖掘与利用

    前言 大学英语会用到一个 ActiveX 插件 LearnX ,最近从网上下了一个下来分析了一下,找到了一些漏洞并完成了 exploit . 虽然涉及的知识比较老旧,不过还是挺有意思的.这里分享一下整 ...

  8. 通用triggerEvent方法

    假设有一个id为testA的a元素,然后有以下代码(jquery已存在): $(document).ready(function(){ $('#testA').on('testEvent', func ...

  9. VS 函数,方法上方 引用等显示

    VS有一个这个功能贼好用,喜欢的可以打开看看哦,特别是团队开发,有惊喜哦!

  10. 万能Makefile,前戏做足项目做起来才顺畅。

    # 获取要编译的源码 SRC :=$(wildcard *.cpp) OBJ :=$(patsubst %.cpp,%.o,$(SRC)) # 编译参数 CC :=g++ STD :=-std=c++ ...