Mysql8 NDB集群二进制解压安装配置图解

声明与简介

本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理。本文主要介绍mysql的NDB集群的配置及操作。

:1 当前的NDB SQL节点采用二进制的方式(免安装)安装在VVMware虚拟机内。

2 当前虚拟机内mysql运行在Linux的Centos 8内,版本号是 8.0.23、端口号3306。

3 host_128是管理节点、Host_131、host_132是SQL节点、Host_129、host_130 是数据节点

NDB官方介绍

  • NDBCLUSTER (又称NDB)是一个内存存储引擎具有高可用性和数据持久性的特征。
  • Management node: 管理节点在集群中担当管理角色。它主要提供配置数据节点、启动、关闭节点和备份等方面的功能。.
  • Data node: 数据节点担当存储角色。针对NoOfReplicas参数如果它为2,则会对应4个数据节点,通过数据的冗余(存储更多数据镜像)来达到可高用的目的。
  • SQL node: 通过SQL节点客户端可以访问集群数据,区别于传统mysql server,这里的存储引擎是NDBCLUSTER,即可该节点的启动方式里带了NDB集群参数。

NDB工作流程

MySQL NDB Cluster Workflow:

SQL节点安装

下载mysql-cluster二进制包

下载mysql-cluster-8.0.23并传送到CentOS服务器内。当前执行环境是其中一个SQL节点host_132。

解压mysql-cluster二进制包

# 切换到二进制包的目录并解压
cd /root/softwares/mysql/mysqlcluster
tar –zxvf mysql-cluster-8.0.23-linux-glibc2.12-x86_64.tar.gz

配置mysql环境变量

#为方便mysql相关命令的引用,配置环境变量
vi /etc/profile
#export MYSQL_CLUSTER_HOME=/root/softwares/mysql/mysqlcluster/mysql-cluster-8.0.23-linux-glibc2.12-x86_64
#${MYSQL_CLUSTER_HOME}/bin 为新增部分,原有的保留
#export PATH=${JAVA_HOME}/bin:$PATH:${KETTLE_HOME}:${MYSQL_CLUSTER_HOME}/bin

初始化mysql

# 切换到mysql-cluster主目录初始化mysql
cd mysql-cluster-8.0.23-linux-glibc2.12-x86_64/bin
# mysqld --initialize --user=mysql
mysqld --initialize --user=mysql --datadir=/data/mysql/
#临时密码要么在控制台要么在/var/log/mysqld.log内

修改配置文件

这里 /etc/my.cnf需要配置

#目录位置供参考,修改需根据自己实际情况。
basedir=/root/softwares/mysql/mysqlcluster/mysql-cluster-8.0.23-linux-glibc2.12-x86_64/

datadir=/data/mysql/

log-error=/var/log/mysqld.log

pid-file=/data/pid/mysqld/mysqld.pid

#basedir=<path-to-mysql-installation-directory>,即mysql二进制文件的解压目录、

其中datadir、log-error、pid-file三个文件夹mysql用户都得有权限。以pid-file参数为例:

#创建pid目录和文件并赋权于mysql用户
mkdir -p /data/pid/mysqld
chown mysql:mysql /data/pid/mysqld
chmod +755 /data/pid/mysqld

配置mysql服务

#配置成linux 服务
cp ../support-files/mysql.server /etc/init.d/mysqld
service mysqld start

配置libtinfo.so链接

#链接libtinfo.so.5
ln -s /usr/lib64/libtinfo.so.6.1 /usr/lib64/libtinfo.so.5

客户端修改初始密码

#客户端登入并修改初始密码
mysql –uroot -p 'xG1m:9lsw3V;'
alter user root@localhost identified by 'root1234';

:同理配置另外个SQL节点(即host_131)重复以上操作。

#SCP到其它SQL节点(当前演示环境指的是host_131),做以上类似操组。
scp -r mysql-cluster-8.0.23-linux-glibc2.12-x86_64 root@host_132:/root/softwares/mysql/mysqlcluster/

Data数据节点安装

拷贝数据节点命令

#Data 节点数据节点,每个data节点上都要执行以下操作。当前执行环境为sql节点的host_132。
scp -r ./ndbd root@host_129:/usr/local/bin/
scp -r ./ndbmtd root@host_129:/usr/local/bin/

management 节点安装

拷贝管理节点命令

#拷贝管理节点命令,当前执行环境为host_132
scp -r ./ndb_mgm* root@host_128:/usr/local/bin/

配置NDB集群

配置SQL数据节点my.cnf

数据节点、SQL节点里的/etc/my.cnf里新增ndbcluser相关配置。这里的ndb-connectstring即对应管理节点IP即host_128。

ndbcluster

[mysql_cluster]

ndb-connectstring=192.168.111.128

如果数据节点无/etc/my.cnf,需要手动创建。该文件的权限见:

配置management 节点

#创建配置NDB管理节点配置文件
mkdir /var/lib/mysql-cluster
cd /var/lib/mysql-cluster
vi config.ini
#详细见下文

[ndbd default]

# Options affecting ndbd processes on all data nodes:

NoOfReplicas=1    # Number of fragment replicas

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

[ndb_mgmd]

# Management process options:

HostName=192.168.111.128          # Hostname or IP address of management node

DataDir=/var/lib/mysql-cluster  # Directory for management node log files

[ndbd]

# Options for data node "A":

# (one [ndbd] section per data node)

HostName=192.168.111.129          # Hostname or IP address

NodeId=2                        # Node ID for this data node

DataDir=/data/mysql   # Directory for this data node's data files

[ndbd]

# Options for data node "B":

HostName=192.168.111.130          # Hostname or IP address

NodeId=3                        # Node ID for this data node

DataDir=/data/mysql   # Directory for this data node's data files

[mysqld]

# SQL node options:

HostName=192.168.111.131          # Hostname or IP address

# (additional mysqld connections can be

# specified for this node for various

# purposes such as running ndb_restore)

[mysqld]

# SQL node options:

HostName=192.168.111.132          # Hostname or IP address

配置libtinfo.so链接

#登入host_128管理节点,链接libtinfo.so.5
ln -s /usr/lib64/libtinfo.so.6.1 /usr/lib64/libtinfo.so.5

启动管理节点

启动管理节点

#启动管理节点host_128上启动管理进程
cd /usr/local/bin
./ndb_mgmd --initial -f /var/lib/mysql-cluster/config.ini --configdir=/var/lib/mysql-cluster/
##查看管理节点相关进程已启动
ps aux|grep ndb_mgmd

启动数据节点

#host_129、host_130两数据节点上启动进程。
cd /usr/local/bin
./ndbd

启动SQL 节点

#host_131、host_132两sql节点启动服务
service mysqld start

管理节点查看状态

#host_128管理节点查看NDB集群状态
cd /usr/local/bin
./ndb_mgm;
Show;

:这里因为防火墙的原因,集群的数据节点和SQL节点并未加入。

关闭管理节点数据节点防火墙

#关闭防火墙或考虑永久关闭
systemctl stop firewalld.service

关闭管理节点、数据节点的防火墙后再查看NDB集群的状态。

验证NDB集群

数据库同步

-- 在一个sql节点上创建数据库和表,在另外个sql节点上查看。比如这里在host_131上创建数据test_ndb,并在当前节点host_131上查询系统表。CREATE DATABASE test_ndb CHARACTER SET utf8 COLLATE utf8_general_ci;
SELECT @@hostname,SCHEMA_NAME AS `Database` FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME='test_ndb';

-- 在另外个sql节点host132上执行数据库系统表查询,可见元数据已同步。
SELECT @@hostname,SCHEMA_NAME AS `Database` FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME='test_ndb';

NDB引擎表

-- 在一个Sql节点Host_132上执行表创建和插入操作,当前表的存储引擎是NDB
CREATE TABLE `City_NDB` (`ID` int(11) NOT NULL auto_increment,`Name` char(35) NOT NULL default '',`CountryCode` char(3) NOT NULL default '',`District` char(20) NOT NULL default '',`Population` int(11) NOT NULL default '0',PRIMARY KEY  (`ID`)
) ENGINE=NDBCLUSTER DEFAULT CHARSET=utf8;INSERT INTO `City_NDB ` VALUES (1,'Kabul','AFG','Kabol',1780000);
INSERT INTO `City_NDB M` VALUES (2,'Qandahar','AFG','Qandahar',237500);
INSERT INTO `City_NDB ` VALUES (3,'Herat','AFG','Herat',186800);
Use test_ndb;
-- 分别在两个SQL节点执行数据检索,会看到表数据会同步。
SELECT @@hostname,A.* FROM City_NDB A;

:表的引擎也可以通过修改的方式更新成NDBCLUSTER。如:

-- 修改表的存储引擎为NDBCLUSTER的示例
ALTER TABLE City ENGINE=NDBCLUSTER;

非NDB引擎表

-- 仅在一个sql节点host_130上执行表创建,这里的引擎指定为MyISAM
CREATE TABLE `City_MyISAM` (`ID` int(11) NOT NULL auto_increment,`Name` char(35) NOT NULL default '',`CountryCode` char(3) NOT NULL default '',`District` char(20) NOT NULL default '',`Population` int(11) NOT NULL default '0',PRIMARY KEY  (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO `City_MyISAM` VALUES (1,'Kabul','AFG','Kabol',1780000);
INSERT INTO `City_MyISAM` VALUES (2,'Qandahar','AFG','Qandahar',237500);
INSERT INTO `City_MyISAM` VALUES (3,'Herat','AFG','Herat',186800);-- 分别在两个SQL节点执行数据检索
SELECT @@hostname,A.* FROM City_MyISAM A;

Host_131上执行结果:

Host_132上执行则报错,因为非NDB引擎,表的元数据无法同步。

节点故障

假设下线sql节点host_131,查看下集群状态,此时只有host_132可以访问。

#sql节点host_131上执行服务停止命令
service mysqld stop;

-- 另一sql节点host_132通过客户端访问
SELECT @@hostname,A.* FROM City_NDB A;

同理数据节点也有类似结论。

关闭集群

如果是shell环境则可以通过如下命令关闭

#关闭管理节点
ndb_mgm -e shutdown

如果已经进入ndb_mgm则输入shutdown即可。该命令会停止管理节点和数据节点的NDB的相关进程。而SQL节点则需要手动的可通过如下命令停止:

#关闭mysql 服务
mysqladmin shutdown
#service mysqld stop

开启集群

#Step 1: 启动management管理节点(host_128)
cd /usr/local/bin
./ndb_mgmd --initial -f /var/lib/mysql-cluster/config.ini --configdir=/var/lib/mysql-cluster/#Step 2: 启动data数据节点(host_129、host_130)
cd /usr/local/bin
./Ndbd#启动sql节点(host_131、host_132)
mysqld_safe &
#service mysqld start

Mysql8 NDB集群二进制方式免安装配置图解相关推荐

  1. mysql集群初始化配置_集群Cluster MySQL的安装配置和使用

    集群Cluster MySQL的安装配置和使用 发布时间:2020-05-28 14:20:03 来源:亿速云 阅读:233 作者:鸽子 MySQL Cluster MySQL集群 基本概念: &qu ...

  2. 高可用,完全分布式Hadoop集群HDFS和MapReduce安装配置指南

    原文:http://my.oschina.net/wstone/blog/365010#OSC_h3_13 (WJW)高可用,完全分布式Hadoop集群HDFS和MapReduce安装配置指南 [X] ...

  3. mysql集群2台linux_安装配置基于两台服务器的MySQL集群(2)

    以下为引用的内容: # mkdir /usr/src/mysql-mgm # cd /usr/src/mysql-mgm # tar -zxvf mysql-max-4.1.9-pc-linux-gn ...

  4. redis安装、持久化、数据类型、常用操作、操作键值、安全设置、慢查询日志、存储session、主从配置、集群介绍、集群搭建配置、集群操作,php安装redis扩展...

    21.9 redis介绍 21.10 redis安装 21.11 redis持久化 21.12 redis数据类型 21.13/21.14/21.15 redis常用操作 21.16 redis操作键 ...

  5. mysql ndb集群

    重要说明:mysql-cluste与非集群时用的mysql-server与mysql-client没有任何关系,mysql-cluste安装包中已自带了集群用的server与client,启动mysq ...

  6. Redis集群方案,Codis安装测试

    Redis集群方案,Codis安装测试 1,关于豌豆荚开源的Codis Codis是豌豆荚使用Go和C语言开发.以代理的方式实现的一个Redis分布式集群解决方案,且完全兼容Twemproxy.Twe ...

  7. kubernetes集群使用GPU及安装kubeflow1.0.RC操作步骤

    kubernetes集群使用GPU及安装kubeflow1.0.RC操作步骤 Kubeflow使用场景 希望训练tensorflow模型且可以使用模型接口发布应用服务在k8s环境中(eg.local, ...

  8. linux(CentOS7)下实现集群主机分类免密登录脚本--类跳板机

    背景 在某些项目出于安全考虑,系统管理员或者甲方在提供批量主机服务器的登录后需要及时替换密码等情况,繁琐且费时费力.这种情况下我们完全可以使用一台服务器为跳板机,跟集群内做免密认证,这样管理员只需要每 ...

  9. 第一篇supervisor集群管理工具cesi安装详解-如何安装supervisor

    第一篇supervisor集群管理工具cesi安装详解-如何安装supervisor 环境 准备 安装python3.7.4 问题 解决方法 安装supervisor 配置supervisor服务 启 ...

最新文章

  1. Nginx 跨域使用字体
  2. FileZilla Server安装配置教程
  3. Spring Boot2.x-09 基于Spring Boot 2.1.2 + Mybatis使用自定义注解实现数据库切换
  4. spring BeanPostProcessor,BeanFactoryPostProcessor作用
  5. 浙江大学远程教育学院计算机考试,浙江大学远程教育学院机试题 Windows操作题(共15分,若有做错请酌情 ....docx...
  6. 二柱子四则运算2.0版本
  7. GL-关于intercopany 和intracompany 的个人理解
  8. java web初级面试题_Java Web应用程序初学者教程
  9. Combine的使用案例
  10. 错误: -source 1.6 中不支持 diamond 运算符
  11. 【zotero】异常与错误,Attachments skipped because they are top-level items,snapshots,an avoided filetype解决方法
  12. 二进制颜色查询对照表
  13. ESP32 之 ESP-IDF 实战(一)—— 物联网风力摆控制系统(①姿态解算部分)
  14. DNS大全(114DNS 、阿里DNS、百度DNS 、360 DNS、Google DNS)
  15. 抢滩登陆瑞星杀毒2005(转)
  16. 九九乘法表c语言枚举法,小学枚举法教案
  17. legacy启动和UEFI启动
  18. windows下开启文件共享的访问日志
  19. c语言存储类型关键字作用,C语言, 存储类型关键字?
  20. python最快多久学会,python学成需要多久

热门文章

  1. boost::mpl::abs相关的测试程序
  2. boost::generate相关的测试程序
  3. boost::ptr_deque相关的测试程序
  4. boost::hana::at用法的测试程序
  5. GDCM:ReadUpToTag的测试程序
  6. ITK:创建另一个图像实例
  7. ITK:在向量容器上迭代
  8. VTK:Points之ExtractEnclosedPoints
  9. VTK:Parallel之ExodusIIWriter
  10. OpenCV cv::merge用法的实例(附完整代码)