zoukankan      html  css  js  c++  java
  • mysql-cluster 环境安装&配置

    一、mysql-cluster 的介绍:

      1、说心里话mysql-cluster这货性能上是不行的,之前一个同事测试了来的结果是8个主机组成的mysql-cluster性能

      上搞不过一个单机的mysql(innodb引擎);这样的性能表现就尴尬了。

      2、在功能上这货也不是一完整的,它有各种各样的不支持。

      3、从官方表现上看不管是mysql-5.6 还是mysql-5.7 都有与之对应的mysql-cluster版本,但是在mysql-8这一代

      变天了不再提供与之对应的mysql-cluster版本了,这个说明什么?说明mysql-cluster这货要GG啦。

      4、好吧! mysql-cluster 是什么,是一个不成熟的解决方案! 它的设计思路是把单机mysql中的SQL层 和 引擎层

      分离出来,使它们可以单独运行。想想如果多个用于保存数据的引擎能同时在多台主机上运行,这样数据就有冗余

      了,同理SQL层的处理也是一样的,mysql-cluster就是通过冗余来提高整个环境的可用性的。还有为了方便管理

      mysql-cluster的这若干的主机,mysql还专门开发了一个管理端程序。

      5、现在专业一点 mysql-cluster中把主机按它运行的程序不同,逻辑上分成了三类:

        1、sql node :运行mysqld 的主机,逻辑上负责保存元数据,处理连接请求。

        2、data node :真正保存数据的主机

        3、manger node : 用于管理以上两类(sql node ,data node)结点的结点。

      6、再送你一张官方的mysql-clustr架构图

        

    二、安装环境的规划:

    主机IP地址                  角色
    10.186.19.19            manager node
    10.186.19.18            data node
    10.186.19.17            data node
    10.186.19.16            sql node

     三、下载安装介质:

      为了说明mysql-cluster整体架构、也就是说哪个角色要安装什么就可以了、所以在这里选择把安装包下载到10.186.19.16这台主机上

      对于其它角色就采用scp的方式把相关的程序复制过去,这样做的好处是对于各个角色要安装什么包就变得非常明显了。

    [root@actionsky17 ~]# cd /tmp/
    [root@actionsky17 tmp]# wget https://dev.mysql.com/get/Downloads/MySQL-Cluster-7.5/mysql-cluster-gpl-7.5.7-linux-glibc2.12-x86_64.tar.gz

    四、安装sql node :

    # 解压安装包并创建相关目录
    cd /tmp/
    tar -xvf mysql-cluster-gpl-7.5.7-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
    cd /usr/local/
    ln -s mysql-cluster-gpl-7.5.7-linux-glibc2.12-x86_64 mysql
    mkdir -p /usr/local/mysql/data
    
    #增加mysql用户
    useradd mysql
    
    #初始化sql node
    ./bin/mysqld --initialize-insecure --user=mysql --datadir=/usr/local/mysql/data/
    
    #初始化完成后数据目录有如下内容
    [root@actionsky16 mysql]# ll /usr/local/mysql/data/
    total 110636
    -rw-r-----. 1 mysql mysql       56 Oct 11 02:52 auto.cnf
    -rw-r-----. 1 mysql mysql      422 Oct 11 02:52 ib_buffer_pool
    -rw-r-----. 1 mysql mysql 12582912 Oct 11 02:52 ibdata1
    -rw-r-----. 1 mysql mysql 50331648 Oct 11 02:52 ib_logfile0
    -rw-r-----. 1 mysql mysql 50331648 Oct 11 02:51 ib_logfile1
    drwxr-x---. 2 mysql mysql     4096 Oct 11 02:52 mysql
    drwxr-x---. 2 mysql mysql     4096 Oct 11 02:52 ndbinfo
    drwxr-x---. 2 mysql mysql     8192 Oct 11 02:52 performance_schema
    drwxr-x---. 2 mysql mysql     8192 Oct 11 02:52 sys

    五、安装data node:

      由于data node 只包涵引擎层相关的程序,所以安装也就是把引擎层相关的程序由10.186.19.16 scp 到对应的主机,并以这些程序有

      可执行权限就行了

      在10.186.19.16(sql node)上执行

    [root@actionsky16 mysql]# scp /usr/local/mysql/bin/ndbd 10.186.19.17:/usr/local/bin/ 
    [root@actionsky16 mysql]# scp /usr/local/mysql/bin/ndbmtd 10.186.19.17:/usr/local/bin/
    
    [root@actionsky16 mysql]# scp /usr/local/mysql/bin/ndbd 10.186.19.18:/usr/local/bin/ 
    [root@actionsky16 mysql]# scp /usr/local/mysql/bin/ndbmtd 10.186.19.18:/usr/local/bin/

      

     六、安装manger node:

    [root@actionsky16 mysql]# scp /usr/local/mysql/bin/ndb_mgm* 10.186.19.19:/usr/local/bin/
    ndb_mgm                                                                 100% 7926KB   7.7MB/s   00:01    
    ndb_mgmd                                                                100%   17MB  17.2MB/s   00:00 

     七:配置sql node 与 data node:

      首先不管是sql node 还是 data node 他们和普通的单机一样都是读的/etc/my.cnf 这个配置文件中的配置项。

      然而与普通单机不同的是它们的配置文件中额外说明两个问题

      1、说明结点以mysql-cluster的方式工作 ndbcluster

      2、说明结点对应的manger是谁 ndb-connectstring=manger主机的地址

      以下是sql node 和 data node的配置文件样例:

    [mysqld]
    basedir=/usr/local/mysql/           #mysql的安装路径        
    datadir=/usr/local/mysql/data       #sql node 的相关数据保存的位置
    ndbcluster                          #以mysql-cluster的方式运行
    ndb-connectstring=10.186.19.19      #mysql-cluster  manager的运行   

    八:配置manger node:

      官方文档中把manger node 的配置文件保存在/var/lib/mysql-cluster/ 这个目录下了,配置文件名叫config.ini 

      我个人喜欢根据官方文档中的位置保存文件,这样我配置出来的环境就统一了,方便以后的运维。

      1、创建保存配置文件的目录&创建配置文件:

    mkdir -p  /var/lib/mysql-cluster
    cd /var/lib/mysql-cluster/
    touch config.ini

      2、配置文件中的内容如下:

    [ndbd default]
    NoOfReplicas=2
    DataMemory=80M
    IndexMemory=18M
    ServerPort=2202
    
    [ndb_mgmd]
    HostName=10.186.19.19
    DataDir=/var/lib/mysql-cluster
    
    [ndbd]
    HostName=10.186.19.18
    NodeId=2
    DataDir=/usr/local/mysql/data
    
    [ndbd]
    HostName=10.186.19.17
    NodeId=3
    DataDir=/usr/local/mysql/data
    
    [mysqld]
    HostName=10.186.19.16

    九:启动mysql-cluster:

      mysql-cluster的启动过程是有一个固定的步骤的

      第一步:启动manger node

    [root@10-186-19-19 mysql-cluster]# ndb_mgmd -f /var/lib/mysql-cluster/config.ini --configdir=/var/lib/mysql-cluster/

      第二步:启动data node

      分别在两个data node 结点上执行

    [root@actionsky18 local]# ndbd  --initial --ndb-connectstring=10.186.19.19
    2017-10-11 04:12:56 [ndbd] INFO     -- Angel connected to '10.186.19.19:1186'
    2017-10-11 04:12:56 [ndbd] INFO     -- Angel allocated nodeid: 2

      第三步:启动sql node

    cd /usr/local/mysql/
    ./bin/mysqld_safe &

     十:检查mysql-cluster的运行情况:

      在manger node上执行

    [root@10-186-19-19 mysql-cluster]# ndb_mgm
    -- NDB Cluster -- Management Client --
    ndb_mgm> show
    Connected to Management Server at: localhost:1186
    Cluster Configuration
    ---------------------
    [ndbd(NDB)]     2 node(s)
    id=2    @10.186.19.18  (mysql-5.7.19 ndb-7.5.7, Nodegroup: 0, *)
    id=3    @10.186.19.17  (mysql-5.7.19 ndb-7.5.7, Nodegroup: 0)
    
    [ndb_mgmd(MGM)] 1 node(s)
    id=1    @10.186.19.19  (mysql-5.7.19 ndb-7.5.7)
    
    [mysqld(API)]   1 node(s)
    id=4    @10.186.19.16  (mysql-5.7.19 ndb-7.5.7)

    十一、mysql-cluster安装&配置的一些注意项:

      1、--initial 会去删除ndb文件系统中的数据,并重新初始化一下,这样之前的数据就全没了。如果你不小心执行了这个

      那你可以准备好跑路了!

      2、目前的环境下有在/etc/my.cnf 中指定ndb-connectstring的值,但是ndbd每次都没有去读,如果我强制--defautls-file

      的方式要它去读/etc/my.cnf ndbd 还会起不来。这下就尴尬了。

      

    十二、验证一下环境的可用性:

      由于在初始化sql node 的时间root并没有测试密码,测试环境下我又是以root身份登录的linux,所以在环境变量正确

      的情况下一句mysql命令就能直接进了

    mysql> create table t(id int ,x int) engine=ndbcluster;
    Query OK, 0 rows affected (0.15 sec)
    
    mysql> insert into t(id,x) values(110,119);
    Query OK, 1 row affected (0.01 sec)
    
    mysql> select * from t;
    +------+------+
    | id   | x    |
    +------+------+
    |  110 |  119 |
    +------+------+
    1 row in set (0.00 sec)
    
    mysql> show create table t;
    +-------+-----------------------------------------------------------------------------------------------------------------------+
    | Table | Create Table                                                                                                          |
    +-------+-----------------------------------------------------------------------------------------------------------------------+
    | t     | CREATE TABLE `t` (
      `id` int(11) DEFAULT NULL,
      `x` int(11) DEFAULT NULL
    ) ENGINE=ndbcluster DEFAULT CHARSET=latin1 |
    +-------+-----------------------------------------------------------------------------------------------------------------------+
    1 row in set (0.00 sec)

    ----

  • 相关阅读:
    8.6 First_value和Last_value
    iOS_第3方类库_側滑选项卡SlideSwitchView
    公开的函数把函数作为參数
    .NET 框架简单介绍
    HDU-3577-Fast Arrangement-区间更新
    拥抱PBO(基于项目的组织)聚焦核心价值创造
    一个使用sbt编译的JNI C++ 的模板
    BestCoder Round #1
    饭统网倒闭:不创新、不放权就是作死 .
    【SSH 基础】浅谈Hibernate关系映射(3)
  • 原文地址:https://www.cnblogs.com/JiangLe/p/7650299.html
Copyright © 2011-2022 走看看