zoukankan      html  css  js  c++  java
  • CentOS 6.5上安装MySQL-Cluster

    参考博文:

    CentOS 6.2下MySQL Cluster 7.2 配置数据库集群   

    CentOS 6.5上安装MySQL-Cluster 7.3.4过程笔记--下一步学习

    MySQL Cluster Installation 官方文档地址: http://dev.mysql.com/doc/refman/5.6/en/mysql-cluster-installation.html

    Mysql Cluster7.4.6安装与配置   参考这篇博文配置

      

    一、Mysql Cluster概述

    MySql Cluster最显著的优点就是高可用性,高实时性,高冗余,扩展性强。

    它允许在无共享的系统中部署"内存中"数据库的Cluster.通过无共享体系结构,系统能够使用廉价的硬件.此外,由于每个组件有自己的内存和磁盘,所以不存在单点故障.

    它由一组计算机构成,每台计算机上均运行着多种进程,包括mysql服务器,NDB cluster的数据节点,管理服务启,以及专门的数据访问程序

    所有的这些节点构成一个完整的mysql集群体系.数据保存在"NDB存储服务器"的存储引擎中,表(结构)则保存在"mysql服务器"中.应用程序通过"mysql服务器"访问这些数据表,集群管理服务器通过管理工具(ndb_mgmd)来管理"NDB存储服务器".

    基本概念

       "NDB"是一种"内存中"的存储引擎,它具有可用性高和数据一致性好的特点.下面介绍mysql cluster 节点时,它表示进程.在单台计算机上可以有任意数目的节点.

        管理节点(MGM):这类节点的作用是管理mysql cluster内的其他节点,如配置文件和cluster 日志,启动并停止节点,运行备份等.cluster中的每个节点从管理服务器上检索配置数据,并请求管理服务器所在位置的方式.当数据节点内出现新的事件时,节点将关于这类事件的信息传输到管理服务器上,然后,又将这类信息写入cluster日志。由于这类节点负责管理其他节点的配置,所以应在启动其他节点之前首先启动这类节点.MGM节点是用命令"ndb_mgmd"来启动

        数据节点(NDB):这类节点用于保存cluster的数据.数据节点的数目与副本的数目相关,是片段的倍数.假设有2个副本,每个副本有2个片段,那么就有4个数据节点.不过没有必要设置多个副本.数据节点是用命令"ndbd"来启动的.

       SQL节点:这是用来访问cluster数据的节点.对于MYSQL cluster来说,客户端节点是使用NDB cluster存储引擎的传统Mysql服务器.通常,sql节点使用将"ndbcluster"添加到"my.cnf"后使用"mysqld" 启动

       此外,可以有任意数目的cluster客户端进程或应该程序.它们分为两种类型,即标准mysql客户端和管理客户端.

       标准mysql客户端:能够从php,perl,c,c++,java,python,ruby等编写的现有mysql应用程序上访问mysql cluster

       管理客户端:这类客户端与管理服务器相连,并提供了启动和停止节点,启动和停止消息跟踪,显示节点版本和状态,启动和停止备份等命令.

       以下是mysql cluster 架构示意图:

    由于Mysql Cluster采用的是TCP/IP方式连接,并且节点之间的数据传输没有加密,最后使用单独的子网里

    为了方便 这里我把管理节点,数据节点,sql节点放在一台机器上.

    管理节点1 192.168.239.128
    
    数据节点1 192.168.239.128
    数据节点2 192.168.239.130
    
    sql节点1 192.168.239.128
    sql节点2 192.168.239.130

    、Mysql Cluster下载安装

    1.1下载安装

    1、下载,这里为了方便安装过程,这里直接使用了RPM包来安装,避开了编译安装的痛苦:
     首先先到www.msyql.com下载如下的RPM安装包 (http://dev.mysql.com/downloads/cluster/);选择:Linux - Generic (注意:是  mysql-cluster-gpl-7.4.10-linux-glibc2.5-x86_64.tar.gz)

    2、环境清理及安装

           清理CentOS6.5自带的mysql服务,其中第一个命令我不执行也可以,其他系统如果不可以,还是建议执行   参考:如何卸载rpm包

          ( 创建用户群,groupadd mysql , 创建用户,useradd -g mysql mysql  )

    3、解压缩Mysql Cluster包到 /usr/local 注意权限设置

    tar -C /usr/local -xzvf mysql-cluster-gpl-7.4.10-linux-glibc2.5-x86_64.tar.gz
    cd /usr/local/
    ln -s /usr/local/mysql-cluster-gpl-7.4.10-linux-glibc2.5-x86_64 /usr/local/mysql #这么改是因为 后续中 启动函数调用目录是 mysql
    chown -R mysql:mysql /usr/local/mysql -R 
    cd mysql

      4、开始安装

    scripts/mysql_install_db --user=mysql # 安装mysql-cluster 
    cp support-files/mysql.server /etc/rc.d/init.d/mysqld # 注册mysql的service
    
    chmod +x /etc/rc.d/init.d/mysqld
    chkconfig --add mysqld
    运行service mysqld start 即可启动mysql  #暂时不启动

    1.2 开始配置

    一、管理节点安装步骤:

    1.在管理节点服务器完成上述sql节点和ndb节点安装步骤后,输入cd /usr/local/mysql进入目录
    2.cp bin/ndb_mgm* /usr/local/bin
    3.cd /usr/local/bin
    4.chmod +x ndb_mgm*

    三、配置sql节点和ndb节点

    mysql服务启动时会默认加载/etc/my.cnf作为其配置文件,要将一个mysql服务器配置成一个数据节点和SQL节点也非常的简单,这是配置前的my.cnf的内容:
    1.[client]
    port=3306
    socket=/tmp/mysql.sock
    [mysqld]
    basedir=/usr/local/mysql/
    datadir=/usr/local/mysql/data
    user= mysql
    log-error=/var/lib/mysql/mysqld.err

    2.在此基础上在最下方分别加入以下语句:
    a) 如果是NDB服务器的情况下输入:
    ndbcluster
    ndb-connectstring=192.168.239.128
    b) 如果是SQL节点服务器的情况下输入
    [mysql_cluster]
    ndb-connectstring=192.168.239.128
    注意所有服务器必须具有相同的配置

    配置后my.cnf文件如下:

    # For advice on how to change settings please see
    # http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html
    
    [client]
    port=3306
    socket=/tmp/mysql.sock
    
    [mysqld]
    #
    # Remove leading # and set to the amount of RAM for the most important data
    # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
    # innodb_buffer_pool_size = 128M
    #
    # Remove leading # to turn on a very important data integrity option: logging
    # changes to the binary log between backups.
    # log_bin
    
    basedir=/usr/local/mysql/
    datadir=/usr/local/mysql/data
    user = mysql
    log-error=/var/lib/mysql/mysqld.err
    
    # Remove leading # to set options mainly useful for reporting servers.
    # The server defaults are faster for transactions and fast SELECTs.
    # Adjust sizes as needed, experiment to find the optimal values.
    # join_buffer_size = 128M
    # sort_buffer_size = 2M
    # read_rnd_buffer_size = 2M
    
    # Disabling symbolic-links is recommended to prevent assorted security risks
    
    # Recommended in standard MySQL setup
    ndbcluster
    ndb-connectstring=192.168.239.128
    
    [mysql_cluster]
    ndb-connectstring=192.168.239.128
    
    #[mysqld_safe]
    #log-error=/var/lib/mysql/mysqld.err
    #pid-file=/var/run/mysqld/mysqld.pid

    三、管理节点服务器的配置

    1.cd /var/lib
    2.mkdir mysql-cluster
    3.vi config.ini,创建配置文件
    4.在config.ini文件中添加以下内容:(由于报错把注释去掉了 去掉注释的在后面)

    [NDBD DEFAULT]
    #每个数据节点的镜像数量
    NoOfReplicas=1
    #每个数据节点中给数据分配的内存
    DataMemory=500M
    #每个数据节点中给索引分配的内存
    IndexMemory=300M
    
    [TCP DEFAULT]
    #数据节点的默认连接端口
    portnumber=2202
    
    #配置管理节点
    [NDB_MGMD]
    #MGM1       
    hostname=192.168.239.128
    #管理节点数据(日志)目录
    datadir=/var/lib/mysql-cluster/
    
    #数据节点配置
    [NDBD]
    #NDB1
    hostname=192.168.239.128
    #数据节点目录
    datadir=/usr/local/mysql/data/
    
    [NDBD]
    #NDB2
    hostname=192.168.239.130
    datadir=/usr/local/mysql/data/
    
    #SQL节点目录
    [MYSQLD]
    #SQL1
    hostname=192.168.239.128
    
    [MYSQLD]
    #SQL2
    hostname=192.168.239.130

    //////////////启动时报错////////////////////////////////////////////////////////

    2014-02-25 18:57:04 [MgmtSrvr] ERROR -- at line 1: Value specified outside section
    2014-02-25 18:57:04 [MgmtSrvr] ERROR -- at line 1: Could not parse name-value pair in config file.
    2014-02-25 18:57:04 [MgmtSrvr] ERROR -- Could not load configuration from '/usr/local/mysql/cluster-conf/config.ini'
    2014-02-25 18:57:04 [MgmtSrvr] ERROR -- Could not determine which nodeid to use for this node. Specify it with --ndb-nodeid= on command line
    检查是从window下copy到liux下,某些空格失效了。 后来把所有的注释写到单独一行好了 
    ////////////////////////////////////////////////////////////

    修改错误后结果如下:  (使用id时报错:修改为:NodeId  )

    [NDBD DEFAULT]
    NoOfReplicas=1
    DataMemory=300M
    IndexMemory=100M
    [TCP DEFAULT]
    portnumber=2202
    [NDB_MGMD]
    NodeId = 1       
    hostname=192.168.239.128
    datadir=/var/lib/mysql-cluster/
    [NDBD]
    NodeId = 2
    hostname=192.168.239.128
    datadir=/usr/local/mysql/data/
    [NDBD]
    NodeId = 3
    hostname=192.168.239.130
    datadir=/usr/local/mysql/data/
    [MYSQLD]
    NodeId = 4
    hostname=192.168.239.128
    [MYSQLD]
    NodeId = 5
    hostname=192.168.239.130

    四、启动
    1.管理节点的启动: (注意防火墙开启:3306 和 1186 端口)
    a) Mysql cluster需要各个节点进行启动后方能够工作,节点的启动顺序为:管理节点——》NDB数据节点——》Sql节点。因此首先启管理节点
    b) cd /usr/local/bin
    c) ndb_mgmd -f /var/lib/mysql-cluster/config.ini
    d) 注意以上为第一次配置的情况下,如果新增节点,使用./ndb_mgmd -f /var/lib/mysql-cluster/config.ini --initial  进行加载,不然添加的节点不会出现在集群中
    e) 启动时可能会报个WARNING,如WARNING -- at line 7: [TCP] portnumber is deprecated,这个不用管。可以正常工作的。
    f) 启动后可以使用 ndb_mgm -e show 查看运行状态

    2.NDB节点的启动
    a) cd /usr/local/bin 注意:如果目录下没有 从/usr/local/mysql/bin 下拷贝过来
    b) ./ndbd --initial
    c) 如果出现类似以下信息则表明成功连接到管理节点服务器:
    2015-06-25 12:48:03 [ndbd] INFO -- Angel connected to 'MGM1:1186'
    2015-06-25 12:48:03 [ndbd] INFO -- Angel allocated nodeid: 3

    3.SQL节点的启动:
    a) service mysqld start
    //////////////启动时报错////////////////////////////////////////////////////////
    Starting MySQL....................... ERROR! The server quit without updating PID file (/var/local/mysql/data/localhost.localdomain.pid).

    [root@localhost bin]# ps -A|grep mysql
    2336 ? 00:00:00 mysql-proxy
    2340 ? 00:01:02 mysql-proxy
    3047 ? 00:00:00 mysqld_safe
    3150 ? 00:01:50 mysqld
    [root@localhost bin]# kill 3150

    后来发现是 my.cnf 中  datadir=/usr/local/mysql/data 写成了 datadir=/var/local/mysql/data   改过了就好了

    ////////////////////////////////////////////////////////////

    4.客户端管理
    a) 在管理服务器中输入cd /usr/local/bin/
    b) ./ndb_mgm
    c) 在ndb_mgm> 提示符下输入show:

    ndb_mgm> show
    ClusterConfiguration
    ---------------------
    [ndbd(NDB)] 2 node(s)
    id=2 @NDB1 (mysql-5.6.24 ndb-7.4.6,Nodegroup:0,Master)
    id=3 @NDB2 (mysql-5.6.24 ndb-7.4.6,Nodegroup:1)
    [ndb_mgmd(MGM)]1 node(s)
    id=1 @MGM1 (mysql-5.6.24 ndb-7.4.6)
    [mysqld(API)] 2 node(s)
    id=4 @SQL1 (mysql-5.6.24 ndb-7.4.6)
    id=5 @SQL2 (mysql-5.6.24 ndb-7.4.6)

    我的显示如下:还有问题

    [root@localhost mysql-cluster]# /usr/local/bin/ndb_mgm
    -- NDB Cluster -- Management Client --
    ndb_mgm> show
    Connected to Management Server at: 192.168.239.128:1186
    Cluster Configuration
    ---------------------
    [ndbd(NDB)]    2 node(s)
    id=2 (not connected, accepting connect from 192.168.239.128)
    id=3 (not connected, accepting connect from 192.168.239.130)
    
    [ndb_mgmd(MGM)]    1 node(s)
    id=1    @192.168.239.128  (mysql-5.6.28 ndb-7.4.10)
    
    [mysqld(API)]    2 node(s)
    id=4 (not connected, accepting connect from 192.168.239.128)
    id=5 (not connected, accepting connect from 192.168.239.130)

    5.关闭mysql cluster

    a) cd /usr/local/bin
    b) ./ndb_mgm -e shutdown
    c) 虽然mysql cluster 关闭了,但是SQL节点的mysql服务并不会停止的。接下来就可以做各种试验了。

  • 相关阅读:
    MongoDB索引使用
    ubuntu14.04下CPU的caffe配置,不成功的朋友请与我(lee)联系,后面附带邮箱
    android4.4 evaluateJavascript 到android2.X上不能调用的问题
    LeetCode122:Best Time to Buy and Sell Stock II
    Hdu-1565 方格取数(1) (状态压缩dp入门题
    TI C66x DSP 四种内存保护问题 -之- 针对CPU訪问外存(DDR3 or MSM)时的内存保护问题
    显示和隐藏Mac隐藏文件的命令
    【微软2014实习生及秋令营技术类职位在线測试】题目1 : String reorder
    钟表效果
    hibernate5(10)注解映射[2]一对多单向关联
  • 原文地址:https://www.cnblogs.com/wuling129/p/5131011.html
Copyright © 2011-2022 走看看