zoukankan      html  css  js  c++  java
  • MySQL Cluster配置概述

    一、     MySQL Cluster概述

    MySQL Cluster 是一种技术,该技术允许在无共享的系统中部署“内存中”数据库的 Cluster 。通过无共享体系结构,系统能够使用廉价的硬件,而且对软硬件无特殊要求。此外,由于每个组件有自己的内存和磁盘,不存在单点故障。MySQL Cluster 由一组计算机构成,每台计算机上均运行着多种进程,包括MySQL服务器,NDB Cluster 的数据节点,管理服务器,以及(可能)专门的数据访问程序。关于 Cluster 中这些组件的关系,

     

                           

    “NDB” 是一种“内存中”的存储引擎,它具有可用性高和数据一致性好的特点。

    ndb支持较为广泛的平台及操作系统,且经过多年的发展,已经可以应用于生产环境;

    ndb引擎通过tcp协议交换群集数据;ndb不需要传统的共享存储设备,而是通过 专门的 ndbd数据存储引擎 来模拟共享存储;ndbd存储引擎支持 自动配置、多个数据复本、数据分区、自动分组等功能;ndb提供专门的管理工具集。

    1. 管理(MGM)节点

             管理节点的作用是管理MySQL Cluster内的其他节点,如提供配置数据、启动并停止节点、运行备份等。由于这类节点负责管理其他节点的配置,应在启动其他节点之前首先启动管理节点。MGM节点是用命令“ndb_mgmd”启动的。

             管理客户端:管理客户端与管理服务器相连,并提供了启动和停止节点、启动和停止消息跟踪(仅调试版本)、显示节点版本和状态、启动和停止备份等的命令。

         2.  数据节点:

          数据节点用于保存 Cluster的数据。数据节点的数目与副本的数目相关,是片段的倍数。例如,对于两个副本,每个副本有两个片段,那么就有4个数据节点。不过没有必要设置多个副本。数据节点是用命令“ndbd”启动的。

         3.  SQL节点:

          用于访问 Cluster数据的节点。对于MySQL Cluster,客户端节点是使用NDB Cluster存储引擎的传统MySQL服务器。通常,SQL节点是使用命令“mysqld –ndbcluster”启动的,或将“ndbcluster”添加到“my.cnf”后使用“mysqld”启动。

    注意:存储节点和SQL节点可以安装在一台服务器上,管理节点也可以和SQL安装在一台机器上,一般而言,管理节点单独安装。

    管理节点(MGM)                   进程名ndb_mgmd

    数据节点(Data Nodes)        进程名ndbd

    SQL节点(Sql Nodes)           进程名mysqld

    二、     MySQL Cluster安装过程

    1         规划节点安装

    节点

    对应的IP和端口

    管理节点(1个)

    192.168.0.50

    SQL节点 (2个)

    192.168.0.51:3306

    192.168.0.52:3306

    数据节点 (2个)

    192.168.0.51

    192.168.0.52

    2         下载安装包和解压

    http://dev.mysql.com/downloads/cluster/#downloads

    我们选用MySQL Cluster 7.1.34

    解压:tar –zxvf  mysql-cluster-gpl-7.1.34-linux-i686-glibc23.tar.gz

    将目录移动并更名:

    mv mysql-cluster-gpl-7.1.34-linux-i686-glibc23 /usr/local/mysql

    在192.168.0.51和192.168.0.52上做相同操作

    3      管理节点和数据节点的安装

    1) 添加mysql用户和组,因为MySQL服务器启动需要mysql用户和组,代码:

    groupadd mysql
    useradd -g mysql mysql

    2)修改目录权限【/usr/local/mysql】将/usr/local/mysql目录的用户和组赋予mysql,代码:

    chown –R mysql:mysql  /usr/local/mysql

    3) 在/var/lib目录下建立一个mysql-cluster目录,用于存储ndb的数据文件,并把权限赋予mysql用户和组,代码如下:

       mkdir  /var/lib/mysql-cluster

       chown –R mysql:mysql  /var/lib/mysql-cluster

    在192.168.0.51和192.168.0.52上重复步骤1)2)3)

    4) 在192.168.0.50的/etc中建立config.ini管理节点配置文件,vim config.ini,config.ini文件内容如下

      

    #管理节点的默认连接端口
    [tcp default]
    portnumber=2202
    [ndbd default]
    #每个数据节点的副本数2
    NoOfReplicas=2   
    #ndb数据文件的存储位置
    datadir=/var/lib/mysql-cluster/
    [ndb_mgmd default]
    #管理节点目录        
    datadir=/var/lib/mysql-cluster/ 
    [ndb_mgmd]
    #管理节点ID为1
    Id=1
    hostname=192.168.0.50
    [ndbd]      
    #数据节点ID为2      
    Id=2 
    #数据节点IP
    hostname=192.168.0.51
    #数据节点目录
    datadir=/usr/local/mysql/data/   
    [ndbd]
    #数据节点ID为3     
    Id=3
    #数据节点IP
    hostname=192.168.0.52
    #数据节点目录
    datadir=/usr/local/mysql/data/  
    [mysqld]  
    [mysqld]

    5) 在192.168.0.51和192.168.0.52的/etc目录下建立my.cnf文件。

    [client]
    socket  =/tmp/mysql.sock
    [mysqld]
    default-storage-engine=ndbcluster
    #运行NDB存储引擎
    ndbcluster  
    #指定管理节点
    ndb-connectstring=192.168.0.50
    [ndbd]
    connectstring=192.168.0.51,192.168.0.52
    [mysql_cluster]
    ndb-connectstring=192.168.0.50   

    三、     MySQL Cluster环境启动

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

    1)  启动管理节点(192.168.0.50)

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

    2)  启动数据节点(192.168.0.51和192.168.0.52)

    /usr/local/mysql/bin/ndbd –initial

    3)  启动SQL节点(192.168.0.51和192.168.0.52)

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

    4)   去启动管理节点(192.168.0.50) 查看

    Mdb_mgm 后show。

    四、     MySQL Cluster的测试

    注意事项:1.表必须用ENGINE=NDB或ENGINE=NDBCLUSTER选项创建,或用ALTER TABLE选项更改,以使用NDB Cluster存储引擎在 Cluster内复制它们。如果使用mysqldump的输出从已有数据库导入表,可在文本编辑器中打开SQL脚本,并将该选项添加到任何表创建语句,或用这类选项之一替换任何已有的ENGINE(或TYPE)选项。

    2.另外还请记住,每个NDB表必须有一个主键。如果在创建表时用户未定义主键,NDB Cluster存储引擎将自动生成隐含的主键。(注释:该隐含 键也将占用空间,就像任何其他的表索引一样。由于没有足够的内存来容纳这些自动创建的键,出现问题并不罕见)。

    3.当你在一个节点上运行create database mydb;你去其他sql node上执行show databases;将不能看到mydb,你需要创建它,然后use mydb; show tables;你将看到同步的表。

    参考http://www.cnblogs.com/StanBlogs/archive/2011/06/14/2080986.html中测试环境

    在节点192.168.0.51上面:

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

    mysql>use test

    mysql>create table teacher(t_id int) engine=ndb;

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

    mysql>alter table student engine=ndb;

    插入一条数据:

    mysql>insert into teacher values(133);

    然后在节点上:

    mysql>select * from teacher;

     

    五、     MySQL Cluster关闭

    关闭顺序是首先是管理节点,然后是SQL节点,最后是数据节点。在管理节点中的ndb_mgm> 提示符下输入 shutdown即可,这时会显示各节点的关闭信息,再输入exit即可退出ndb_mgm管理。

  • 相关阅读:
    Animation(三)
    布局
    AutoCommpleteText
    PHP数组中常用函数
    Animation(四)
    转:JAVA内存映射文件
    Ubuntu安装jdk
    转:Java NIO 详解
    转:长连接与短连接
    Direct or Nondirect ByteBuffer
  • 原文地址:https://www.cnblogs.com/dragonsuc/p/4366549.html
Copyright © 2011-2022 走看看