虚拟机搭建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. JS中的数学方法

    1 . Math.ceil()      向上取整 2.  Math.floor()     向下取整 3. Math.round()    四舍五入取整 4.  Math.random()   生成 ...

  2. 【读书笔记】iOS-viewWillAppear:和viewDidLoad:

    viewDidLoad:是视图第一次载入到内存中后调用的,viewWillApear:则是在每次视图显示到屏幕上之前调用. 参考资料:<iOS编程指南>

  3. React 入门学习笔记整理(四)—— 事件

    1.事件定义 React事件绑定属性的命名采用驼峰式写法,而不是小写. 如果采用 JSX 的语法你需要传入一个函数作为事件处理函数,而不是一个字符串(DOM元素的写法) 在类组件中定义函数,通过thi ...

  4. JMeter 参数化之利用CSV Data Set Config从文件读取参数并关联变量

    参数化之利用CSV Data Set Config从文件读取参数并关联变量   by:授客 QQ:1033553122 1.   添加CSV Data Set Config 右键线程组->配置元 ...

  5. MongoDB的基本操作:服务端启动,客户端连接,CRUD操作

    本文内容: MongoDB的介绍 MongoDB服务端的启动 MongoDB客户端连接 SQL与MongoDB相关概念解释 什么是BSON 数据库操作 集合操作 文档操作 测试环境:win10 软件版 ...

  6. 30个最常用的Linux系统命令行

    1.cd命令这是一个非常基本,也是大家经常需要使用的命令,它用于切换当前目录,它的参数是要切换到的目录的路径,可以是绝对路径,也可以是相对路径.如:cd /root/Docements # 切换到目录 ...

  7. January 06th, 2018 Week 01st Saturday

    In life the most interesting things tend to happen when you are on your way to do something else. 生活 ...

  8. [经验总结] 在 windows 命令窗口中运行 python 脚本时提示 ModuleNotFoundError: No module named 'xxx'

    先给出的代码和目录结构 获取CPU代码如下: # -*- coding:utf-8 -*- ''' Created on Sep 10, 2018 @author: ''' import sys im ...

  9. Android back键及backWebview模式跳转详解

    首先,来看一下关于Android home键和back键区别 back键 Android的程序无需刻意的去退出,当你一按下手机的back键的时候,系统会默认调用程序栈中最上层Activity的Dest ...

  10. 【LGP5176】公约数

    题目 老年选手啥都不想推只能搞个杜教筛了 这个式子长得好吓人啊,所以我们唯一分解之后来考虑这道题 设\(i,j,k\)分别是\(p^a,p^b,p^c\),至于到底谁是谁并不重要,我们不妨假设\(a\ ...