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)

    ----

  • 相关阅读:
    CodeForces 510C Fox And Names (拓扑排序)
    Codeforces 1153D Serval and Rooted Tree (简单树形DP)
    HDU 6437 Problem L.Videos (最大费用)【费用流】
    Luogu P3381 (模板题) 最小费用最大流
    Codeforces 741B Arpa's weak amphitheater and Mehrdad's valuable Hoses (并查集+分组背包)
    Codeforces 1144F Graph Without Long Directed Paths (DFS染色+构造)
    HDU 2204 Eddy's 爱好 (容斥原理)
    Codeforces 939E Maximize! (三分 || 尺取)
    Codeforces 938D. Buy a Ticket (最短路+建图)
    CodeForces 959E Mahmoud and Ehab and the xor-MST (MST+找规律)
  • 原文地址:https://www.cnblogs.com/JiangLe/p/7650299.html
Copyright © 2011-2022 走看看