NDB群集安装

介绍

https://dev.mysql.com/doc/refman/8.0/en/mysql-cluster-basics.html

NDBCLUSTER (也称为NDB)是一种内存存储引擎,提供高可用性和数据持久性功能。

NDBCLUSTER存储引擎可以与一系列故障切换和负载平衡选项进行配置,但最简单的是开始在集群级别的存储引擎。NDB Cluster的NDB存储引擎包含一整套数据,仅依赖于群集本身内的其他数据。

NDB群集 的“ 群集 ”部分的配置独立于MySQL服务器。在NDB群集中,群集的每个部分都被视为一个 节点。

共有三种类型的群集节点,并且在最小的NDB群集配置中,将至少有三个节点,这些类型之一:

  • 管理节点:这种类型的节点的作用是管理NDB群集中的其他节点,执行诸如提供配置数据,启动和停止节点以及运行备份之类的功能。由于此节点类型管理其他节点的配置,因此应首先启动此类型的节点,然后再启动任何其他节点。使用命令ndb_mgmd启动一个MGM节点 。

  • 数据节点:这种类型的节点存储集群数据。

    NDB群集表通常完全存储在内存中,而不是磁盘上(这就是为什么我们将NDB群集称为 内存数据库)。但是,某些NDB群集数据可以存储在磁盘上。

  • SQL节点:这是访问集群数据的节点。对于NDB群集,SQL节点是使用NDBCLUSTER存储引擎的传统MySQL服务器 。

    SQL节点实际上只是API节点的一种特殊类型 ,它指定访问NDB群集数据的任何应用程序。API节点的另一个示例是用于还原集群备份的 ndb_restore实用程序。可以使用NDB API编写此类应用程序。

1、资源规划

节点

IP地址

硬件资源

系统

管理节点(mgmd)

192.168.137.128

1cpu、1G内存

Centos7

管理节点(mgmd)

192.168.137.129

1cpu、1G内存

Centos7

数据节点“ A”(ndbd)

SQL节点(mysqld)

192.168.137.130

1cpu、3G内存

(数据节点吃内存)

Centos7

数据节点“ B”(ndbd)

SQL节点(mysqld)

192.168.137.131

1cpu、3G内存

Centos7

2、下载安装文件(192.168.137.130、192.168.137.131)

官网地址:https://dev.mysql.com/downloads/cluster/

wget https://cdn.mysql.com//Downloads/MySQL-Cluster-8.0/mysql-cluster-8.0.19-linux-glibc2.12-x86_64.tar.gz

3.2、SQL节点

将位置更改为包含下载文件的目录,解压缩归档文件,并创建一个名为mysql该mysql 目录的符号链接 。

useradd mysql

tar -xf mysql-cluster-gpl-8.0.20-linux-glibc2.12-x86_64.tar.gz

mv mysql-cluster-gpl-8.0.20-linux-glibc2.12-x86_64 /usr/local/mysql

3.3、将位置更改为mysql目录,并使用mysqld 设置系统数据库 --initialize,如下所示:

#rm -rf /data/apps/mysql-8.0/

mkdir  -p  /data/apps/mysql-8.0/logs  && chown -R mysql.mysql  /data/apps/mysql-8.0

chown -R mysql.mysql /usr/local/mysql

cat > /usr/local/mysql/my.cnf <<EOE

[mysqld]

basedir=/usr/local/mysql

datadir=/data/apps/mysql-8.0/data

socket=/tmp/mysql.sock

user=mysql

symbolic-links=

lower_case_table_names=

max_connections=

wait_timeout=

interactive_timeout=

key_buffer_size=128M

tmp_table_size=16M

read_buffer_size=4M

read_rnd_buffer_size=16M

sort_buffer_size=32M

innodb_buffer_pool_size=1024M

ndbcluster

[mysqld_safe]

log-error=/data/apps/mysql-8.0/logs/mysqld.log

pid-file=/data/apps/mysql-8.0/mysqld.pid

user=mysql

[mysql_cluster]

ndb-connectstring=192.168.137.128,192.168.137.129 

EOE

mv /etc/my.cnf /etc/my.cnf_`date +%F-%s`

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

3.4初始化数据库

/usr/local/mysql/bin/mysqld --defaults-file=/usr/local/mysql/my.cnf --basedir=/usr/local/mysql --datadir=/data/apps/mysql-8.0/data  --initialize --user=mysql 

记住密码一会儿用

3.4 将MySQL启动脚本复制到适当的目录,使其可执行,并将其设置为在操作系统启动时启动:

cp support-files/mysql.server  /etc/rc.d/init.d/

chmod +x /etc/rc.d/init.d/mysql.server

chkconfig --add mysql.server

4.1数据节点,拷贝数据节点启动文件,如数据节点和sql节点在同一台,此步忽略

scp 192.168.137.130:/usr/local/mysql/bin/{ndbd,ndbmtd}  /usr/local/bin/.

cd /usr/local/bin

chmod +x ndb*

mkdir -p /data/apps/mysql-8.0

在每个数据节点主机上应重复上述步骤。

5.1管理节点。  137.128、137.129

scp 192.168.137.130:/usr/local/mysql/bin/ndb_mgm*  /usr/local/bin/.
cd /usr/local/bin
chmod +x ndb_mgm*
mkdir -p /usr/local/mysql/mysql-cluster

5.2配置管理节点。

#配置文件详解

#https://dev.mysql.com/doc/refman/8.0/en/mysql-cluster-config-file.html

cat >  /usr/local/mysql/config.ini <<EOE
[ndbd default]
# Options affecting ndbd processes on all data nodes:
NoOfReplicas= # Number of replicas
DataMemory=98M # How much memory to allocate for data storage [ndb_mgmd]
NodeId=
# Management process options:
HostName=192.168.137.128 # Hostname or IP address of MGM node
DataDir=/usr/local/mysql/mysql-cluster # Directory for MGM node log files [ndb_mgmd]
NodeId=
# Management process options:
HostName=192.168.137.129 # Hostname or IP address of MGM node
DataDir=/usr/local/mysql/mysql-cluster # Directory for MGM node log files [ndbd]
# Options for data node "A":
# (one [ndbd] section per data node)
HostName=192.168.137.130 # Hostname or IP address
NodeId= # Node ID for this data node
DataDir=/data/apps/mysql-8.0 # Directory for this data node's data files [ndbd]
# Options for data node "B":
HostName=192.168.137.131 # Hostname or IP address
NodeId= # Node ID for this data node
DataDir=/data/apps/mysql-8.0 # Directory for this data node's data files [mysqld]
NodeId=
# SQL node options:
HostName=192.168.137.130 # Hostname or IP address
# (additional mysqld connections can be
# specified for this node for various
[mysqld]
# SQL node options:
NodeId=
HostName=192.168.137.131
# purposes such as running ndb_restore)
EOE

6、 NDB群集的初始启动

6.1管理主机

/usr/local/mysql/bin/ndb_mgmd  -f /usr/local/mysql/config.ini  --initial (初始化才加)

6.2在每个数据节点主机上,运行以下命令以启动 ndbd进程:

ndbd --initial  (初始化才加)

如报错,执行下列命令

ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1

ln -s /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1

再次启动成功:

6.3 Sql节点启动数据库:

/usr/local/mysql/bin/mysqld &

如果一切顺利,并且集群已正确设置,则集群现在应该可以运行了。您可以通过调用ndb_mgm管理节点客户端来对此进行测试。输出看起来应该像这里显示的一样,尽管您可能会看到输出有些细微的差异,具体取决于所使用的MySQL版本:

管理节点

SQL节点在这里被称为 [mysqld(API)],这反映了mysqld进程充当NDB群集API节点的事实 。

7、安全关闭和重新启动NDB群集

7.1要关闭群集,请在托管管理节点的计算机上的外壳程序中输入以下命令:

ndb_mgm -e shutdown   -e此处 的选项用于将命令从外壳传递给ndb_mgm客户端。

7.2 再次启动,管理节点执行

ndb_mgmd   -f /usr/local/mysql/config.ini  

7.3 在每个数据节点执行

ndbd

7.4 使用ndb_mgm客户端来验证两个数据节点均已成功启动。

7.5 在SQL主机上:

/usr/local/mysql/bin/mysqld &

如果其中一个数据节点挂掉,必须让其中一个节点完全恢复,集群才可以继续使用

8、 其他注意

创建表时必须设定主键和加上ENGINE=NDBCLUSTER

create table s_position

(

id int not null auto_increment,

name varchar() not null default '经理', #设定默认值

description varchar(),

primary key PK_positon (id) #设定主键

) ENGINE=NDBCLUSTER;

 

搭建mysql NDB集群的更多相关文章

  1. 抄来的,占个位儿【百度架构师是怎样搭建MySQL分布式集群】

    1.准备集群搭建环境 使用6台虚拟机来搭建MySQL分布式集群,相应的实验环境与对应的MySQL节点之间的对应关系如下图所示:     管理节点(MGM):这类节点的作用是管理MySQLCluster ...

  2. 基于keepalived搭建MySQL热机集群

    背景 MySQL的高可用方案一般有如下几种: keepalived+双主,MHA,MMM,Heartbeat+DRBD,PXC,Galera Cluster 比较常用的是keepalived+双主,M ...

  3. Windows系统搭建Mysql Cluster集群

    简单介绍一下MySQL集群涉及的三种节点:     管理节点(也可以称管理服务器)是整个集群环境的核心,类似于集群中起调度作用的枢纽,由它来负责管理其它节点(数据节点和SQL节点)的开启.关闭或重启某 ...

  4. MySQL集群---②Windows平台搭建MySQL CLUSTER集群

    原文:http://blog.csdn.net/mazhaojuan/article/details/42211857 本文将通过两台电脑来简单介绍一下Windows平台如何搭建MySQL集群. My ...

  5. MySQL NDB集群安装配置(mysql cluster 9.4.13 installation)

    一.安装前规划 1.安装软件版本:mysql-cluster-gpl-7.4.13-linux-glibc2.5-x86_64.tar.gz 2.安装规划: 主机名 Ip地址 角色 db01 192. ...

  6. 搭建mysql主从集群的步骤

    前提条件是:须要在linux上安装4个mysql数据库,都须要配置完对应的信息. 须要搭建: mysql 01: 主数据库  master                  mysql 02 :   ...

  7. Docker搭建MySQL主从集群,基于GTID

    写在前边 搭建MySQL读写分离主从集群,这里未使用binlog方式,使用的是GTID方式 源码见我的Github https://github.com/hellxz/mysql-cluster-do ...

  8. 如何搭建一个 MySQL 分布式集群

    1.准备集群搭建环境 使用6台虚拟机来搭建 MySQL分布式集群 ,相应的实验环境与对应的MySQL节点之间的对应关系如下图所示: 管理节点(MGM):这类节点的作用是管理MySQLCluster内的 ...

  9. 【Data Cluster】真机环境下MySQL数据库集群搭建

    真机环境下MySQL-Cluster搭建文档  摘要:本年伊始阶段,由于实验室对不同数据库性能测试需求,才出现MySQL集群搭建.购置主机,交换机,双绞线等一系列准备工作就绪,也就开始集群搭建.起初笔 ...

随机推荐

  1. Day10-微信小程序实战-交友小程序-实现删除好友信息与子父组件间通信

    回顾:上一次已经把消息的布局以及样式做好了 效果图: 在removeList.js文件中,messageId就是发起这个消息的用户了 先查看一下自定义组件的生命周期 https://developer ...

  2. 使用json-server与Mockjs搭建模拟服务

    为什么使用 在项目开发中,常常需要边写前端页面边写后端接口,但是后端接口服务往往是滞后于前端开发的,或者是不能及时提供的.出于前端开发的迅速和便捷去考虑,我们可以根据后端接口数据结构去模拟(mock) ...

  3. Python3-paramiko模块-基于SSH的远程连接模块

    Python3中的paramiko模块,基于SSH用于连接远程服务器并执行相关操作 http://docs.paramiko.org/en/2.1/ SSHClient 用于连接远程服务器并执行基本命 ...

  4. 【转】HBase中Zookeeper,RegionServer,Master,Client之间关系

    在2.0之前HDFS中只有一个NameNode,但对于在线的应用只有一个NameNode是不安全的,故在2.0中对NameNode进行抽象,抽象成NamService其下包含有多个NameNode,但 ...

  5. ORACLE误删除表数据或误更新/插入数据如何恢复

    工作中一不小心将本不该删除/更新/插入的数据进行删除/更新/插入了,这时候一定要尽快进行恢复. 工具/原料   PL/SQL 方法/步骤     首先新建一张测试表TEST,里面输入记录.由于删除/更 ...

  6. 教你如何开发一个完败Miracast的投屏新功能

      手机与电视,是陪伴在我们生活最常见,陪伴最长久的智能设备.迅猛发展的移动终端与通信技术,赋予了手机更广阔多元的应用生态,大屏电视则以大视野和震撼影音,弥补了手里方寸带来的视觉局限.而今,手机的延伸 ...

  7. django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.2的最佳处理方法,亲测可用

    django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.2 ...

  8. CRC循环冗余校验码

    原文转载自:https://blog.csdn.net/hm108106/article/details/73332465 1.CRC CRC循环冗余校验码是数据通信中的一种查错校验码. 循环冗余检查 ...

  9. .net core Web API参数绑定规则

    参数推理绑定 先从一个问题说起,微信小程序按照WebAPI定义的参数传递,Get请求服务器端可以正常接收到参数,但是Post请求取不到. Web API代码(.netcore 3.1)如下: [Htt ...

  10. SQL基础随记1 SQL分类 常用函数 ALL ANY EXISTS IN 约束

    SQL基础随记1 SQL分类 常用函数 ALL ANY EXISTS IN 约束   其实这里知识不难,只是好久不接触突然被问的话有时还真的一时答不上,自己写一遍胜过盲扫.当然,也有些常读常新的地方会 ...