MySQL NDB Cluster简介及环境搭建

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
日志服务 SLS,月写入数据量 50GB 1个月
简介:

本文主要描述MySQL NDB Cluster简介及环境搭建。


欢迎转载,请注明作者、出处。
作者:张正
blog:http://space.itpub.net/26355921 
QQ:176036317
如有疑问,欢迎联系。


MySQL Cluster的组成有:
1.MySQL Server
2.NDB:管理数据storage
NDB 节点被组织成一个一个的NDB Group,一个NDB Group 实际上就是一组
存有完全相同的物理数据的NDB 节点群。
管理节点中有一个非常重要的参数叫NoOfReplicas,这个参数
指定了每一份数据被冗余存储在不同节点上面的份数,该参数一般至少应该被设置成2,
3.MGMT,管理节点需要最先被启动
ndb_mgm -e SHOW 查看各个节点状态是否正常,是否都已经连接到了管理节点上面。
MySQL Cluster配置:
管理节点的配置:
1.PortNumber:管理节点端口,默认为1186
2.LogDestination:管理节点上cluster日志处理方式
a) 可以写入文件如:LogDestination=FILE:filename=mycluster.
log,maxsize=500000,maxfiles=4;
b) 也可以通过标准输出来打印出来如:LogDestination=CONSOLE;
c) 还可以计入syslog 里面如:LogDestination=SYSLOG:facility=syslog;
d) 甚至多种方式共存:
LogDestination=CONSOLE;SYSLOG:facility=syslog;FILE:filename=/var/log/clusterlog
3.Datadir:设置管理节点存放文件输出的位置。
4.ArbitrationRank:配置各节点在处理某些事件出现分歧的时候的级别。有0,1,2三个值可以选择。
a) 0 代表本节点完全听其他节点的,不参与决策
b) 1 代表本节点有最高优先权,“一切由我来决策”
c) 2 代表本节点参与决策,但是优先权较1 低,但是比0 高
ArbitrationRank 参数不仅仅管理节点有,MySQL 节点也有。而且一般来说,所有
的管理节点一般都应该设置成1,所有SQL 节点都设置成2。
NDB_MGMD的配置:
1. ID为节点指定一个唯一的ID号,要求在整个Cluster环境中唯一。
2. hostname:该节点的IP地址或主机名
NDB节点配置:
NDBD_DEFAULT中的配置:
1.NoOfReplicas:每一份数据存放的份数(类似于Oracle ASM中的Redundancy)
2.DataDir:指定本地的pid 文件,trace 文件,日志文件以及错误日志子等存放的
路径,无系统默认地址,所以必须设定;
3.DataMemory:设定用于存放数据和主键索引的内存段的大小,默认值80M
4.IndexMemory:设定用于存放索引(非主键)数据的内存段大小,默认值为18M
注意:DataMemory 和IndexMemory参数设置的约束,两者任何一个达到限制数量后,
都无法再增加能存储的数据量。如果继续存入数据系统会报错“table is full”。
5.FileSystemPath:指定redo 日志,undo 日志,数据文件以及meta 数据等的存放
位置,默认位置为DataDir 的设置
6.BackupDataDir:设置备份目录路径,默认为FileSystemPath/BACKUP。
与并行事务数和其他一些并行限制有关的参数设置:
*1.MaxNoOfConcurrentTransactions:设置在一个节点上面的最大并行事务数目,默认为4096,
*2.MaxNoOfConcurrentOperations:设置同时能够被更新(或者锁定)的记录数量。其值应该设置为:总记录数,除以NDB
节点数,所得到的值
*3.MaxNoOfLocalOperations:此参数默认是MaxNoOfConcurrentOperations * 1.1
的大小,也就是说,每个节点一般可以处理超过平均值的10%的操作记录数量。但是一般来
说,MySQL 建议单独设置此参数而不要使用默认值,并且将此参数设置得更较大一些;
*4.MaxNoOfConcurrentIndexOperations:这个参数和MaxNoOfConcurrentOperations
参数比较类似,只不过所针对的是Index 的record 而已。其默认值为8192,
*5.MaxNoOfFiredTriggers
*6.TransactionBufferMemory
系统做table scan 或者range scan 的时候使用的一些buffer 的相关设置:
1.MaxNoOfConcurrentScans:这个参数主要控制在Cluster 环境中并发的table scan
和range scan 的总数量平均分配到每一个节点后的平均值。参数默认大小为256,最大只能设置为500
2.MaxNoOfLocalScans
3.BatchSizePerLocalScan
4.LongMessageBuffer
与log相关的参数配置:
log level 有从0 到15,也就是共16 种。如果设定为0,则表示不记录任何log。如果设置为最
高level,也就是15,则表示所有的信息都会通过标准输出来记录log。由于这里的所有信
息实际上都会传递到管理节点的cluster log 中,所以,一般来说,除了启动时候的log
级别需要设置为1 之外,其他所有的log level 都只需要设置为0 就可以了。
1.NoOfFragmentLogFiles 相同于Oracle的redo log的group,默认为8
2.MaxNoOfSavedMessages:这个参数设定了可以保留的trace 文件(在节点crash
的时候参数)的最大个数,文档上面说此参数默认值为25。
3.LogLevelStartup:设定启动ndb 节点时候需要记录的信息的级别(不同级别所记
录的信息的详细程度不一样),默认级别为1;
4.LogLevelShutdown:设定关闭ndb 节点时候记录日志的信息的级别,默认为0;
5.LogLevelStatistic:这个参数是针对于统计相关的日志的,就像更新数量,插入
数量,buffer 使用情况,主键数量等等统计信息。默认日志级别为0;
6.LogLevelCheckpoint:checkpoint 日志记录级别(包括local 和global 的),默认为0;
7.LogLevelNodeRestart:ndb 节点重启过程日志级别,默认为0;
8.LogLevelConnection:各节点之间连接相关日志记录的级别,默认0;
9.LogLevelError:在整个Cluster 中错误或者警告信息的日志记录级别,默认0;
10.LogLevelInfo:普通信息的日志记录级别,默认为0。
11.UndoIndexBuffer
12.UndoDataBuffer
13.RedoBuffer
SQL节点相关配置说明:
1.ArbitrationDelay:默认为0,裁定者在开始裁定之前需要被delay 多久,单位为毫秒。一般不需要更改默认值。
2.BatchByteSize:在做全表扫描或者索引范围扫描的时候,每一次fatch 的数据量,默认为32KB;
3.BatchSize:类似BatchByteSize 参数,只不过BatchSize 所设定的是每一次fetch
  的record 数量,而不是物理总量,默认为64,最大为992
4.MaxScanBatchSize:在Cluster 环境中,进行并行处理的情况下,所有节点的
  BatchSize 总和的最大值。默认值为256KB,最大值为16MB。
5.[MySQLD]参数组,仅有id 和hostname




MySQL Cluster搭建

下载地址:http://dev.mysql.com/downloads/cluster/#downloads
三台主机安装MySQL Cluster RPM包

/etc/hosts
192.168.119.128  host1    #管理节点ndb_mgm
192.169.119.129  host2  #SQL节点1、NDB节点1
192.168.119.130  host3  #SQL节点2、NDB节点2

Notes:1.其中SQL节点与NDB节点是独立的,可位于不同的主机上
       2.MySQL Cluster的RPM包安装后,ndbd、ndb_mgm等程序都在/usr/bin下,因此我将/usr作为basedir

三台主机上创建mysql用户和组、并创建目录:
groupadd mysql
useradd -g mysql mysql
mkdir -p /opt/cluster/data
chown -R mysql:mysql /opt/cluster

一、管理节点(host1)
管理节点的配置文件
vi /opt/cluster/config.ini
[ndbd default]
DataMemory=40M
NoOfReplicas=2
IndexMemory=10M

[ndb_mgmd]
id=1
hostname=host1
DataDir=/opt/cluster

[ndbd]
id=2
HostName=host2
DataDir=/opt/cluster   #实际的Cluster数据文件存放位置

[ndbd]
id=3
HostName=host3
DataDir=/opt/cluster   #实际的Cluster数据文件存放位置

[mysqld]
id=4
HostName=host2

[mysqld]
id=5
HostName=host3

二、NDB和SQL节点(host2和host3)
配置文件:vi /etc/my.cnf
[mysqld]  #针对MySQL Server
port = 3306 #(SQL节点2为:3307)
socket = /tmp/mysql.sock
datadir=/opt/cluster/data       #MySQL节点中,系统数据文件存放的位置
basedir=/usr
ndbcluster
ndb-connectstring=host1
#default_storage_engine=ndb     #可在整个环境搭建好后,再加上这两个参数,
#default_tmp_storage_engine=ndb #否则在初始化启动SQL节点时会报错。

[mysql_cluster]    #针对NDB
ndb-connectstring=host1

[client]
socket=/tmp/mysql.sock

三、SQL节点数据库系统文件初始化(host2和host3)
mysql_install_db --datadir=/opt/cluster/data --basedir=/usr --user=mysql

四、启动
1.启动管理节点(host1)
ndb_mgmd --initial -f /opt/cluster/config.ini
2.分别启动NDB节点(host2和host3)
ndbd --initial
3.分别启动SQL节点(host2和host3)      #此步骤经常会报各种错误,需要查看localhost.err的[ERROR]记录逐个解决
mysqld_safe --defaults-file=/etc/my.cnf --datadir=/opt/cluster/data --user=mysql &
4.查看各节点状态:
ndb_mgm -e show
如下:
[root@host2 cluster]# ndb_mgm -e show
Connected to Management Server at: host1:1186
Cluster Configuration
---------------------
[ndbd(NDB)]     2 node(s)
id=2    @192.168.119.129  (mysql-5.6.11 ndb-7.3.2, Nodegroup: 0, Master)
id=3    @192.168.119.130  (mysql-5.6.11 ndb-7.3.2, Nodegroup: 0)

[ndb_mgmd(MGM)] 1 node(s)
id=1    @192.168.119.128  (mysql-5.6.11 ndb-7.3.2)

[mysqld(API)]   2 node(s)
id=4    @192.168.119.129  (mysql-5.6.11 ndb-7.3.2)
id=5    @192.168.119.130  (mysql-5.6.11 ndb-7.3.2)

5.如果root用户无法从host2连接到host3的MySQL Server,则需增加root从host2访问host3 的权限:
在host3上:grant usage on *.* to root@host2;

6.可以修改MySQL Server的默认参数:
default_storage_engine=ndb    
default_tmp_storage_engine=ndb
本文转自ITPUB博客84223932的博客,原文链接:MySQL NDB Cluster简介及环境搭建,如需转载请自行联系原博主。
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2天前
|
自然语言处理 Java 关系型数据库
Java mysql根据很长的富文本如何自动获取简介
通过使用Jsoup解析富文本并提取纯文本,然后根据需要生成简介,可以有效地处理和展示长文本内容。该方法简单高效,适用于各种应用场景。希望本文对您在Java中处理富文本并生成简介的需求提供实用的指导和帮助。
31 14
|
3天前
|
自然语言处理 Java 关系型数据库
Java mysql根据很长的富文本如何自动获取简介
通过使用Jsoup解析富文本并提取纯文本,然后根据需要生成简介,可以有效地处理和展示长文本内容。该方法简单高效,适用于各种应用场景。希望本文对您在Java中处理富文本并生成简介的需求提供实用的指导和帮助。
25 9
|
20天前
|
存储 Oracle 关系型数据库
索引在手,查询无忧:MySQL索引简介
MySQL 是一款广泛使用的关系型数据库管理系统,在2024年5月的DB-Engines排名中得分1084,仅次于Oracle。本文介绍MySQL索引的工作原理和类型,包括B+Tree、Hash、Full-text索引,以及主键、唯一、普通索引等,帮助开发者优化查询性能。索引类似于图书馆的分类系统,能快速定位数据行,极大提高检索效率。
50 8
|
3月前
|
SQL 分布式计算 关系型数据库
Hadoop-21 Sqoop 数据迁移工具 简介与环境配置 云服务器 ETL工具 MySQL与Hive数据互相迁移 导入导出
Hadoop-21 Sqoop 数据迁移工具 简介与环境配置 云服务器 ETL工具 MySQL与Hive数据互相迁移 导入导出
119 3
|
3月前
|
Oracle 关系型数据库 MySQL
Mysql(1)—简介及Windows环境下载安装
MySQL 是一个流行的关系型数据库管理系统(RDBMS),基于 SQL 进行操作。它由瑞典 MySQL AB 公司开发,后被 Sun Microsystems 收购,现为 Oracle 产品。MySQL 是最广泛使用的开源数据库之一,适用于 Web 应用程序、数据仓库和企业应用。
67 2
|
5月前
|
SQL 关系型数据库 MySQL
Nacos 1.2.1 集群搭建(二)MySQL、cluster 配置
Nacos 1.2.1 集群搭建(二)MySQL、cluster 配置
158 1
|
5月前
|
存储 关系型数据库 MySQL
[mysql]MGR简介与部署
[mysql]MGR简介与部署
|
5月前
|
运维 关系型数据库 MySQL
【MySQL】两个脚本搞定MySQL安装和主从的环境搭建
【MySQL】两个脚本搞定MySQL安装和主从的环境搭建
|
6月前
|
SQL 安全 关系型数据库
MySQL的binlog日志的简介与查看
MySQL的binlog日志的简介与查看
800 4
|
7月前
|
存储 SQL 关系型数据库
下一篇
开通oss服务