• MySQL8 NDB Cluster安装部署


    1、NDB Cluster介绍

    MySQL NDB Cluster 使用 MySQL 服务器和 NDB存储引擎,NDBCLUSTER (也称为NDB)是一种内存存储引擎,提供高可用性和数据持久性功能。NDB Cluster将MySQL服务器与NDB的内存集群存储引擎集成在一起。NDB集群由一组主机组成,每个主机运行一个或多个进程。这些被称为节点的进程可以包括MySQL服务器(用于访问NDB数据)、数据节点(用于存储数据)、一个或多个管理服务器。

    (1)管理节点(Management node):此类节点的作用是管理 NDB Cluster 中的其他节点,执行提供配置数据、启动和停止节点以及运行备份等功能。因为这种节点类型管理其他节点的配置,所以应该首先启动这种类型的节点,然后再启动任何其他节点。使用命令ndb_mgmd启动管理节点

    (2)数据节点(Data node):NDB Cluster的核心功能,用于保存数据、索引,控制事务。插入的数据按照主键的哈希值分散到不同的节点组里面保存(每个节点组保存部分数据),另外每个节点组内,数据会复制到不同的数据节点上以实现冗余

    (3)SQL节点(SQL node):相当于增加了NDB存储引擎的MySQL服务器,数据节点作为NDB存储引擎使用,如果使用其它的MySQL存储引擎,例如InnoDB,MyISAM等,数据将会保存在SQL节点上;应用程序通过SQL节点访问数据节点,使用方法与通常的MySQL一样,SQL节点会自动找到正确的数据节点将数据找回

    2、环境规划

    节点类型

    IP

    主机名

    占用端口

    管理节点

    172.16.80.56

    mgr0

    1186

    数据节点

    172.16.80.57

    172.16.80.58

    mgr1

    mgr2

    2202

    SQL节点

    172.16.80.59

    mgr3

    3306,33060

    3、下载MySQL NDB Cluster

    社区版MySQL :: Download MySQL Cluster

    商业版https://edelivery.oracle.com/osdc/faces/SoftwareDelivery

    选择glibc二进制安装包:

    4、所有节点初始化

    (1)卸载已存在的mysql客户端

    rpm -qa|grep mysql

    rpm -qa|grep mariadb

    rpm -e *** 卸载

    (2)创建mysql目录

    lvcreate -L 300G -n lvmysql vgtest

    mkfs.xfs /dev/vgtest/lvmysql

    mount /dev/vgtest/lvmysql /mysql

    (3)创建mysql用户和组

    groupadd -g 512 mysql

    useradd -u 512 -g 512 -d /mysql mysql

    chown -R mysql.mysql /mysql

    (4)解压glibc包到/mysql

    su - mysql

    cd /mysql

    tar -xvf /soft/mysql-cluster-commercial-8.0.29-linux-glibc2.12-x86_64.tar.gz

    mv mysql-cluster-commercial-8.0.29-linux-glibc2.12-x86_64 mysql-cluster-8.0.29

    mkdir /mysql/data

    (5)配置环境变量

    vi /etc/profile

    export MYSQL_CLUSTER_HOME=/mysql/mysql-cluster-8.0.29

    export PATH="$PATH:${MYSQL_CLUSTER_HOME}/bin"

    5、管理节点配置

    (1)配置config.ini

    cat /mysql/config.ini

    [ndbd default]

    # Options affecting ndbd processes on all data nodes:

    NoOfReplicas=2 # Number of fragment replicas,指定了每一份数据被冗余存储在不同节点上面的份数,

    #该参数一 般至少应该被设置成2,分段的数目为数据节点总数除以NoOfReplicas

    DataMemory=98M # How much memory to allocate for data storage

    BackupDataDir=/mysql/backup #数据节点备份目录

    [ndb_mgmd]

    # 管理节点:

    HostName=172.16.80.56

    DataDir=/mysql/data

    [ndbd]

    # 数据节点 "A":

    HostName=172.16.80.57

    NodeId=2

    DataDir=/mysql/data

    [ndbd]

    # 数据节点 "B":

    HostName=172.16.80.58

    NodeId=3

    DataDir=/mysql/data

    [mysqld]

    # SQL节点:

    HostName=172.16.80.59

    (2)配置my.cnf

    cat /mysql/my.cnf

    [mysqld]

    # Options for mysqld process:

    ndbcluster # run NDB storage engine

    datadir=/mysql/data

    basedir=/mysql/mysql-cluster-8.0.29

    [mysql_cluster]

    # Options for NDB Cluster processes:

    ndb-connectstring=172.16.80.56 # location of management server

    (3)初始化并启动管理节点

    ndb_mgmd --defaults-file=/mysql/my.cnf --initial --config-file /mysql/config.ini --configdir=/mysql

    (4)重启管理节点并查看集群状态

    ndb_mgm

    show

    shutdown

    exit

    正常启动管理节点:

    ndb_mgmd --defaults-file=/mysql/my.cnf --config-file /mysql/config.ini --configdir=/mysql

    6、数据节点配置(两个数据节点均执行)

    (1)配置my.cnf

    cat /mysql/my.cnf

    [mysql_cluster]

    # Options for NDB Cluster processes:

    ndb-connectstring=172.16.80.56 # location of management server

    (2)启动两个ndbd数据节点

    ndbd --defaults-file=/mysql/my.cnf

    7、MySQL节点配置

    (1)创建必要目录

    su - mysql

    mkdir -p /mysql/log

    (2)创建my.cnf

    cat /mysql/my.cnf

    [mysqld]

    # Options for mysqld process:

    ndbcluster # run NDB storage engine

    datadir=/mysql/data

    basedir=/mysql/mysql-cluster-8.0.29

    log-error=/mysql/log/mysqld.log

    pid-file=/mysql/mysqld.pid

    [mysql_cluster]

    # Options for NDB Cluster processes:

    ndb-connectstring=172.16.80.56 # location of management server

    (3)创建/etc/my.cnf软链接

    ln -s /mysql/my.cnf /etc/my.cnf

    (4)创建mysqld服务并启动

    cp /mysql/mysql-cluster-8.0.29/support-files/mysql.server /etc/init.d/mysqld

    service mysqld status

    service mysqld start

    (5)重置root密码

    查看临时密码/mysql/log/mysqld.log

    mysql -uroot -p

    alter user root@localhost identified by 'R00t_123';

    exit

    mysql -uroot -pR00t_123

    show engines;

    8、起停测试

    停止顺序:

    SQL节点-->数据节点-->管理节点

    启动顺序:

    管理节点-->数据节点-->SQL节点

    停止命令:

    service mysqld stop(SQL节点)

    ndb_mgm -e shutdown(管理节点)

    启动命令:

    ndb_mgmd --defaults-file=/mysql/my.cnf --config-file /mysql/config.ini --configdir=/mysql(管理节点)

    ndbd --defaults-file=/mysql/my.cnf (所有数据节点)

    service mysqld start(SQL节点)

    9、创建NDB表测试

    (1)创建InnoDB表

    create database ndb_test;

    use ndb_test;

    CREATE TABLE `test1` (

    `id` int NOT NULL AUTO_INCREMENT,

    `name` varchar(10),

    PRIMARY KEY (`id`)

    ) ENGINE=InnoDB;

    发现InnoDB表是被建在SQL节点上的

    (2)创建ndb表

    CREATE TABLE `test2` (

    `id` int NOT NULL AUTO_INCREMENT,

    `name` varchar(10) ,

    PRIMARY KEY (`id`)

    ) ENGINE=ndbcluster/ndb;

    (3)测试两种表的insert/select速度

    DROP PROCEDURE IF EXISTS repeatCourse;

    DELIMITER $

    CREATE PROCEDURE repeatCourse()

    BEGIN

    DECLARE i INT DEFAULT 1;

    WHILE i < 400000 DO

    insert into ndb_test.test2 values(null,i);

    SET i = i + 1;

    END WHILE;

    END $

    DELIMITER ;

    CALL repeatCourse();

    似乎是ndb表的速度更快

  • 相关阅读:
    《MATLAB 神经网络43个案例分析》:第37章 基于灰色神经网络的预测算法研究——订单需求预测
    Eclipse 是如何导入web项目的
    算法与设计分析 | 汉诺塔问题
    学好IB课程需要具备什么能力?
    LeetCode刷题复盘笔记——51. N 皇后(一文搞懂回溯解决经典的N皇后问题上篇)
    结构体数组保存进二进制文件的简单做法
    人工神经网络模型的特点,人工神经网络模型定义
    正向传播和反向传播
    minio分布式文件存储
    Dynamics 365 使用ILMerge 合并CRM开发后的DLL
  • 原文地址:https://blog.csdn.net/du18020126395/article/details/125533671