• MySQL Cluster 集群部署


    前言

    此篇博客用以介绍 MySQL Cluster 集群部署方法

    一、节点规划

    序号    IP地址          节点名称
    1      172.16.1.201    mysql-manage
    2      172.16.1.202    mysql-sql1
    3      172.16.1.203    mysql-sql2

    二、系统版本

    [root@node1 ~]# cat /etc/redhat-release   
    CentOS Linux release 7.6.1810 (Core)

    三、关闭防火墙

    [root@node1 ~]# systemctl stop firewalld  
    [root@node1 ~]# systemctl disable firewalld

    四、关闭 selinux

    [root@node1 ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config  
    [root@node1 ~]# setenforce 0

    五、配置 hosts

    [root@node1 ~]# cat /etc/hosts
     127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
     ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
     
     172.16.1.201 mysql-manage
     172.16.1.202 mysql-sql1
     172.16.1.203 mysql-sql2

    六、下载软件包

    推荐使用国内镜像,在 windows 选择版本后下载 
    http://mirrors.sohu.com/mysql/MySQL-Cluster-7.5 将下载后的包上传至服务器 /usr/local 下

    七、安装配置管理节点

    解压

    cd /usr/local  
    tar xf mysql-cluster-gpl-7.5.12-linux-glibc2.12-x86_64.tar.gz

    取出需要命令

    cd mysql-cluster-gpl-7.5.12-linux-glibc2.12-x86_64  
    cp bin/ndb_mgm* /usr/local/bin

    新建配置文件并且初始化管理节点

    mkdir /var/lib/mysql-cluster  
    ln -s /usr/local/mysql-cluster-gpl-7.5.12-linux-glibc2.12-x86_64 /usr/local/mysql  
    vi /var/lib/mysql-cluster/config.ini  
    [ndbd default]
    NoOfReplicas=2
    DataMemory=512M
    IndexMemory=18M
    
    [ndb_mgmd]
    HostName=172.16.1.201
    DataDir=/var/lib/mysql-cluster
    
    [ndbd]
    HostName=172.16.1.202
    DataDir=/var/lib/mysql-cluster
    
    [ndbd]
    HostName=172.16.1.203
    DataDir=/var/lib/mysql-cluster
    
    [mysqld]
    [mysqld]

    使用配置文件初始化管理节点

    /usr/local/bin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini --initial
    
    出现MySQL Cluster Management Server mysql-5.7.16 ndb-7.5.12证明初始化成功  
    
    使用ndb_mgm命令查看管理状态  
    ndb_mgm>show(使用show命令查看管理情况,当数据节点配置完毕之后,我们再用这个命令查看和管理)

    八、安装配置数据和 mysql 节点

    以下的所有操作需要在另外两台机器进行相同的操作

    新增用户组mysql和用户msyql

    groupadd mysql  
    useradd -g mysql -s /bin/false mysql

    新建文件夹并赋予权限

    mkdir /var/lib/mysql-cluster  
    chown root:mysql /var/lib/mysql-cluster

    将包传至服务器/usr/local下

    scp /usr/local/mysql-cluster-gpl-7.5.12-linux-glibc2.12-x86_64.tar.gz root@172.16.1.202:/uar/local  
    scp /usr/local/mysql-cluster-gpl-7.5.12-linux-glibc2.12-x86_64.tar.gz root@172.16.1.203:/uar/local

    解压并创建软链接

    cd /usr/local
    tar xf mysql-cluster-gpl-7.5.12-linux-glibc2.12-x86_64.tar.gz  
    ln -s /usr/local/mysql-cluster-gpl-7.5.12-linux-glibc2.12-x86_64 /usr/local/mysql

    mysql初始化以及启动

    cd /usr/local/mysql/bin  
    
    一共需要两次初始化
    第一次初始化  
    ./mysqld --initialize  
    
    修改权限  
    cd /usr/local/mysql  
    chown -R root .  
    chgrp -R mysql .  
    
    复制启动文件并启动mysql  
    cp support-files/mysql.server /etc/rc.d/init.d/  
    chmod +x /etc/rc.d/init.d/mysql.server  
    chkconfig --add mysql.server  
    /etc/init.d/mysql.server start  
    
    第一次启动会报错,不要慌,再次初始化  
    cd /usr/local/mysql/bin  
    ./mysqld --initialize  
    
    这时会在上层目录生成data目录  
    cd /usr/local/mysql  
    chown -R mysql. data  
    
    配置数据节点(ip均填写管理节点)  
    vi /etc/my.cnf  
    [mysqld]
    ndbcluster
    ndb-connectstring=172.16.1.201
    
    [mysql_cluster]
    ndb-connectstring=172.16.1.201  
    
    配置完成后,再次启动mysql即可  
    /etc/init.d/mysql.server start

    修改数据库密码并保持两节点相同(密码会在初始化时生成)

    mysql -uroot -p密码  
    alter user 'root'@'localhost' identified by '密码';  
    修改完记得exit后用新密码再次登录尝试

    ndb节点初始化

    /usr/local/mysql/bin/ndbd --initial  
    如果出现下述现象就成功了  
    
    2019-03-28 14:04:07 [ndbd] INFO     -- Angel connected to '172.16.1.201:1186' 
    2019-03-28 14:04:07 [ndbd] INFO     -- Angel allocated nodeid: 2

    回到管理节点查看

    -- NDB Cluster -- Management Client --
    ndb_mgm> show
    Connected to Management Server at: 172.16.1.201:1186
    Cluster Configuration
    ---------------------
    [ndbd(NDB)]    2 node(s)
    id=2    @172.16.1.202  (mysql-5.7.24 ndb-7.5.12, Nodegroup: 0, *)
    id=3    @172.16.1.203  (mysql-5.7.24 ndb-7.5.12, Nodegroup: 0)
    
    [ndb_mgmd(MGM)]    1 node(s)
    id=1    @172.16.1.201  (mysql-5.7.24 ndb-7.5.12)
    
    [mysqld(API)]    2 node(s)
    id=4    @172.16.1.203  (mysql-5.7.24 ndb-7.5.12)
    id=5    @172.16.1.202  (mysql-5.7.24 ndb-7.5.12)

    九、检查同步状态

    在一台上面创建数据库,看另一台是否被同步,然后创建表,然后新增删除等等
    唯一需要注意的是,创建表的时候必须选择表的引擎为NDBCLUSTER,否则表不会进行同步
    如果使用sql创建表,命令为:
    CREATE TABLE tablename (age INT) ENGINE=NDBCLUSTER

    十、启动和关闭

    启动mysql集群,启动顺序为:管理节点→数据节点→SQL节点
    启动命令常用的可以复制到/usr/local
    关闭时只需要关闭管理节点,后面的数据节点会同时被关闭,mysql就和原来一样即可
    管理节点关闭命令:ndb_mgm -e shutdown
    (执行完成之后管理节点会关闭,数据节点也会关闭,但SQL节点不会,也就是数据库服务需要手动到每一台服务器上停止以保证数据同步)
  • 相关阅读:
    C++注释
    python绘制动态图
    解决“<form>提交,CSRF验证失败。请求中止”
    Django相关的MTV
    AVplayer搭建ftp共享PC端
    02: 均值(1.5编程基础之循环控制)
    1.5编程基础之循环控制_ 01:求平均年龄
    for循环进阶
    找第k大的数
    c++中,bool与int 的区别
  • 原文地址:https://www.cnblogs.com/murry/p/11909754.html
Copyright © 2020-2023  润新知