转载请注明出处:http://blog.csdn.net/l1028386804/article/details/46833179

1 概述


MySQL Cluster 是MySQL 适合于分布式计算环境的高有用、可拓展、高性能、高冗余版本号。其研发设计的初衷就是要满足很多行业里的最严酷应用要求。这些应用中常常要求数据库执行的可靠性要达到99.999%。

MySQL Cluster同意在无共享的系统中部署“内存中”数据库集群,通过无共享体系结构。系统可以使用便宜的硬件,并且对软硬件无特殊要求。此外。因为每一个组件有自己的内存和磁盘,不存在单点故障。

实际上,MySQL集群是把一个叫做NDB的内存集群存储引擎集成与标准的MySQLserver集成。它包括一组计算机。每一个都跑一个或者多个进程,这可能包括一个MySQLserver,一个数据节点,一个管理server和一个专有的一个数据訪问程序。

MySQL Cluster可以使用多种故障切换和负载平衡选项配置NDB存储引擎,但在Cluster 级别上的存储引擎上做这个最简单。

下面为MySQL集群结构关系图,

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" height="335" width="585">

MySQL从结构看。由3类节点(计算机或进程)组成,各自是:

管理节点:用于给整个集群其它节点提供配置、管理、仲裁等功能。理论上通过一台server提供服务就能够了。

数据节点:MySQL Cluster的核心。存储数据、日志,提供数据的各种管理服务。

2个以上 时就能实现集群的高可用保证。DB节点添加时。集群的处理速度会变慢。

SQL节点(API):用于訪问MySQL Cluster数据。提供对外应用服务。添加 API 节点会提高整个集群的并发訪问速度和总体的吞吐量,该节点 能够部署在Web应用server上。也能够部署在专用的server上,也开以和DB部署在 同一台server上。

2 NDB引擎


MySQL Cluster 使用了一个专用的基于内存的存储引擎——NDB引擎,这样做的优点是速度快, 没有磁盘I/O的瓶颈,可是因为是基于内存的。所以数据库的规模受系统总内存的限制, 假设执行NDB的MySQLserver一定要内存够大,比方4G, 8G, 甚至16G。NDB引擎是分布式的,它能够配置在多台server上来实现数据的可靠性和扩展性。理论上 通过配置2台NDB的存储节点就能实现整个数据库集群的冗余性和解决单点故障问题。


2.1 缺陷


  • 基于内存,数据库的规模受集群总内存的限制大小

    基于内存,断电后数据可能会有数据丢失,这点还须要通过測试验证。

    多个节点通过网络实现通讯和数据同步、查询等操作。因此总体性受网络速度影响。

    因此速度也比較慢

    2.2 长处


    • 多个节点之间能够分布在不同的地理位置,因此也是一个实现分布式数据库的方案。

      扩展性非常好。添加节点就可以实现数据库集群的扩展。

      冗余性非常好,多个节点上都有完整的数据库数据,因此不论什么一个节点宕机都不会造成服务中断。

      实现高可用性的成本比較低。不象传统的高可用方案一样须要共享的存储设备和专用的软件才干实现。NDB 仅仅要有足够的内存就能实现。

二、集群搭建

将搭建一个最简化的MySQL Cluster系统,配置方法中的全部命令都是以root账户执行。

这个MySQL Cluster包括一个管理结点、两个数据结点、两个SQL结点,这五个结点会分别安装在五个虚拟机上,虚拟机的名称和IP例如以下所看到的:

管理结点

mysql-mgm

192.168.124.141

数据结点 1

mysql-ndbd-1

192.168.124.142

数据结点 2

mysql-ndbd-2

192.168.124.143

SQL 结点1

mysql-sql-1

192.168.124.144

SQL 结点2

mysql-sql-2

192.168.124.145

一、公共配置

请在三个虚拟机上分别配置此处的配置项。

1. 安装虚拟机

虚拟机操作系统安装CentOS 6.4的x86_64版本号,使用NAT网络,而且还要安装vmware-tools,详细安装方法此处不详述。

2. 拷贝mysql cluster

下载下面版本号的MySQL-Cluster:

http://cdn.mysql.com/Downloads/MySQL-Cluster-7.3/mysql-cluster-gpl-7.3.4-linux-glibc2.5-x86_64.tar.gz

下载得到的压缩包拷贝至虚拟机的/root/Downloads文件夹。然后在shell中执行下面命令:

cd /root/Downloads

tar -xvzf mysql-cluster-gpl-7.3.4-linux-glibc2.5-x86_64.tar.gz

mv mysql-cluster-gpl-7.3.4-linux-glibc2.5-x86_64 /usr/local/mysql

3. 关闭安全策略

关闭iptables防火墙(或者打开防火墙的1186、3306port),在Shell中执行下面命令:

chkconfig --level 35 iptables off

关闭SELinux,在Shell中执行下面命令:

gedit /etc/selinux/config

将config文件里的SELINUX项改为disabled。改动后的config文件的内容例如以下:



# This file controls the state of SELinux on the system.

# SELINUX= can take one of these three values:

#     enforcing - SELinux security policy is enforced.

#     permissive - SELinux prints warnings instead of enforcing.

#     disabled - No SELinux policy is loaded.

SELINUX=disabled

# SELINUXTYPE= can take one of these two values:

#     targeted - Targeted processes are protected,

#     mls - Multi Level Security protection.

SELINUXTYPE=targeted

最后重新启动系统

二、配置管理结点(192.168.124.141)

1. 配置config.ini配置文件

在shell中执行下面命令:

mkdir /var/lib/mysql-cluster

cd /var/lib/mysql-cluster

gedit config.ini

配置文件config.ini内容例如以下:

[ndbd default]

NoOfReplicas=2

DataMemory=80M

IndexMemory=18M



[ndb_mgmd]

NodeId=1

hostname=192.168.124.141

datadir=/var/lib/mysql-cluster



[ndbd]

NodeId=2

hostname=192.168.124.142

datadir=/usr/local/mysql/data

[ndbd]

NodeId=3

hostname=192.168.124.143

datadir=/usr/local/mysql/data

[mysqld]

NodeId=4

hostname=192.168.124.144

[mysqld]

NodeId=5

hostname=192.168.124.145

2. 安装管理结点

安装管理节点,不须要mysqld二进制文件,仅仅须要MySQL Cluster服务端程序(ndb_mgmd)和监听client程序(ndb_mgm)。在shell中执行下面命令:

cp /usr/local/mysql/bin/ndb_mgm* /usr/local/bin

cd /usr/local/bin

chmod +x ndb_mgm*

三、配置数据结点(192.168.124.142、192.168.124.143)

1. 加入mysql组和用户

在shell中执行下面命令:

groupadd mysql

useradd -g mysql mysql

2. 配置my.cnf配置文件

在shell中执行下面命令:

gedit /etc/my.cnf

配置文件my.cnf的内容例如以下:

[mysqld]

basedir=/usr/local/mysql

datadir=/usr/local/mysql/data

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

user=mysql

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

symbolic-links=0



[mysqld_safe]

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

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



[mysql_cluster]

ndb-connectstring=192.168.124.141

3. 创建系统数据库

在shell中执行下面命令:

cd /usr/local/mysql

mkdir sock

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

4. 设置数据文件夹

在shell中执行下面命令:

chown -R root .

chown -R mysql.mysql /usr/local/mysql/data

chown -R mysql.mysql /usr/local/mysql/sock

chgrp -R mysql .

5. 配置MySQL服务

在shell中执行下面命令:

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

chmod +x /etc/rc.d/init.d/mysql.server

chkconfig --add mysql.server

四、配置SQL结点(192.168.124.144、192.168.124.145)

1. 加入mysql组和用户

在shell中执行下面命令:

groupadd mysql

useradd -g mysql mysql

2. 配置my.cnf配置文件

在shell中执行下面命令:

gedit /etc/my.cnf

配置文件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.124.141



[mysql_cluster]

ndb-connectstring=192.168.124.141

3. 创建系统数据库

在shell中执行下面命令:

cd /usr/local/mysql

mkdir sock

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

4. 设置数据文件夹

在shell中执行下面命令:

chown -R root .

chown -R mysql.mysql /usr/local/mysql/data

chown -R mysql.mysql /usr/local/mysql/sock

chgrp -R mysql .

5. 配置MySQL服务

在shell中执行下面命令:

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

chmod +x /etc/rc.d/init.d/mysql.server

chkconfig --add mysql.server

五、Cluster环境启动

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

1. 启动管理结点

在shell中执行下面命令:

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

还能够使用ndb_mgm来监听client,例如以下:

ndb_mgm

2. 启动数据结点

首次启动,则须要加入--initial參数。以便进行NDB节点的初始化工作。在以后的启动过程中。则是不能加入该參数的,否则ndbd程序会清除在之前建立的全部用于恢复的数据文件和日志文件。

/usr/local/mysql/bin/ndbd --initial

假设不是首次启动,则运行以下的命令。

/usr/local/mysql/bin/ndbd

3. 启动SQL结点

若MySQL服务没有执行,则在shell中执行下面命令:

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

4. 启动測试

查看管理节点,启动成功:

六、集群測试

1. 測试一

如今我们在当中一个SQL结点上进行相关数据库的创建,然后到另外一个SQL结点上看看数据是否同步。

在SQL结点1(192.168.124.144)上运行:

shell> /usr/local/mysql/bin/mysql -u root -p

mysql>show databases;

mysql>create database aa;

mysql>use aa;

mysql>CREATE TABLE ctest2 (i INT) ENGINE=NDB; //这里必须指定数据库表的引擎为NDB,否则同步失败

mysql> INSERT INTO ctest2 () VALUES (1);

mysql> SELECT * FROM ctest2;

然后在SQL结点2上看数据是否同步过来了

经过測试,在非master上创建数据,能够同步到master上

查看表的引擎是不是NDB。>show create table 表名;

2. 測试二

关闭一个数据节点 ,在另外一个节点写输入。开启关闭的节点。看数据是否同步过来。

首先把数据结点1重新启动,然后在结点2上加入数据

在SQL结点2(192.168.124.145)上操作例如以下:

mysql> create database bb;

mysql> use bb;

mysql> CREATE TABLE ctest3 (i INT) ENGINE=NDB;

mysql> use aa;

mysql> INSERT INTO ctest2 () VALUES (3333);

mysql> SELECT * FROM ctest2;

等数据结点1启动完成,启动数据结点1的服务

#/usr/local/mysql/bin/ndbd --initial#service mysqld start

然后登录进去查看数据

# /usr/local/mysql/bin/mysql -u root –p

能够看到数据已经同步过来了,说明数据能够双向同步了。

七、关闭集群

1. 关闭管理节点和数据节点,仅仅须要在管理节点(ClusterMgm--134)里运行:

shell> /usr/local/mysql/bin/ndb_mgm -e shutdown

显示

Connected to Management Server at: localhost:1186

2 NDB Cluster node(s) have shutdown.

Disconnecting to allow management server to shutdown.

2. 然后关闭Sql节点(135,136),分别在2个节点里执行:

shell> /etc/init.d/mysql.server stop

Shutting down MySQL... SUCCESS!

注意:要再次启动集群,就依照第五部分的启动步骤就可以,只是这次启动数据节点的时候就不要加”-initial”參数了。

MySQL优化之——集群搭建步骤具体解释的更多相关文章

  1. Linux下MySQL/MariaDB Galera集群搭建过程【转】

    MariaDB介绍 MariaDB是开源社区维护的一个MySQL分支,由MySQL的创始人Michael Widenius主导开发,采用GPL授权许可证. MariaDB的目的是完全兼容MySQL,包 ...

  2. 重要参考步骤---ProxySQL Cluster 集群搭建步骤

    环境 proxysql-1:192.168.20.202 proxysql-2:192.168.20.203 均采用yum方式安装 # cat <<EOF | tee /etc/yum.r ...

  3. MySQL之PXC集群搭建

    一.PXC 介绍 1.1 PXC 简介 PXC 是一套 MySQL 高可用集群解决方案,与传统的基于主从复制模式的集群架构相比 PXC 最突出特点就是解决了诟病已久的数据复制延迟问题,基本上可以达到实 ...

  4. Mysql Innodb cluster集群搭建

    之前搭建过一个Mysql Ndb cluster集群,但是mysql版本是5.7的,看到官网上mysql8的还是开发者版本,所以尝试搭建下mysql Innodb cluster集群. MySQL的高 ...

  5. mysql-cluster集群搭建步骤

    1.从官网下载mysql-cluster安装包: https://dev.mysql.com/downloads/cluster/ 2.解压安装包 #上传到服务器目录/usr/softwares并解压 ...

  6. 基于Hadoop 2.2.0的高可用性集群搭建步骤(64位)

    内容概要: CentSO_64bit集群搭建, hadoop2.2(64位)编译,安装,配置以及测试步骤 新版亮点: 基于yarn计算框架和高可用性DFS的第一个稳定版本. 注1:官网只提供32位re ...

  7. Hadoop2.0 HA集群搭建步骤

    上一次搭建的Hadoop是一个伪分布式的,这次我们做一个用于个人的Hadoop集群(希望对大家搭建集群有所帮助): 集群节点分配: Park01 Zookeeper NameNode (active) ...

  8. redis5集群搭建步骤

    通常情况下为了redis的高可用,我们一般不会使用redis的单实例去运行,一般都会搭建一个 redis 的集群去运行.此处记录一下 redis5 以后 cluster 集群的搭建. 一.需求 red ...

  9. Linux下MySQL/MariaDB Galera集群搭建过程

    MariaDB介绍 MariaDB是开源社区维护的一个MySQL分支,由MySQL的创始人Michael Widenius主导开发,采用GPL授权许可证. MariaDB的目的是完全兼容MySQL,包 ...

随机推荐

  1. HDU 1171 Big Event in HDU(多重背包)

    Big Event in HDU Problem Description Nowadays, we all know that Computer College is the biggest depa ...

  2. 【Android 应用开发】Android 平台 HTTP网速測试 案例 API 分析

    作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/25996817 工信部规定的网速測试标准 : 除普通网页測速 ...

  3. 微软ASP.NET网站部署指南(3):使用Web.Config文件的Transformations

    1. 综述 大多数程序里都会在Web.config里设置參数,而且在部署的时候须要更改. 每次都手工更改这些配置非常乏味,也easy出错. 该章节将会告诉你假设通过自己主动化更新Web.config文 ...

  4. h5-爆料view

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAdsAAABeCAIAAADkEim8AAAWAElEQVR4nO2d+1Nb55nHPbMz+1v+g/ ...

  5. lightoj--1294--Positive Negative Sign(水题,规律)

    Positive Negative Sign Time Limit: 2000MS   Memory Limit: 32768KB   64bit IO Format: %lld & %llu ...

  6. ThinkPHP5+Redis单例型购物车

    <?php /** * Redis + 单例型购物车 * param $basket 存储商品信息 * param $ins 存储实例化对象 */ namespace lib; use redi ...

  7. python 3.x 学习笔记16 (队列queue 以及 multiprocessing模块)

    1.队列(queue) 用法: import queue q = queue.Queue() #先进先出模式 q.put(1) #存放数据在q里 作用: 1)解耦    2)提高效率 class qu ...

  8. LeetCode Golang 5. 最长回文子串

    5. 最长回文子串 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 1: 输入: "babad" 输出: "bab&quo ...

  9. 利用UncaughtExceptionHandler捕获未try...catch到的异常

    public class test { public static void main(String[] args){ Thread thread = new Thread(new MyThread( ...

  10. 问题请教:关于同一个POD中多容器的广播信息问题

    广大博友好,最近在K8S集群中遇到一个问题,贴出来同大家分享一下 同一个POD中多个容器 如何处理广播信息? 经测试 同一个POD中当先启动的容器占用广播端口后,其他的容器启动就会报bind erro ...