分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

               

1.1 mysql-cluster简介 

    简单的说,MySQLCluster实际上是在无共享存储设备的情况下实现的一种完全分布式数据库系统,其主要通过NDBCluster(简称NDB)存储引擎来实现。

       MySQLCluster刚刚诞生的时候可以说是一个可以对数据进行持久化的内存数据库,所有数据和索引都必须装载在内存中才能够正常运行,但是最新的MySQLCluster版本已经可以做到仅仅将所有索引和索引数据装载在内存中即可,实际的数据可以不用全部装载到内存中,架构如下图所示:


1.2 请看Cluster结构图

MySQL Cluster初步学习资料整理--安装部署新特性性能测试等


1.3 Cluster主要结构

1、管理(MGM)节点

  这类节点的作用是管理MySQLCluster内的其他节点,如提供配 置数据、启动并停止节点、运行备份等。由于这类节点负责管理其他节点的配置,应在启动其他节点之前首先启 动这类节点。MGM节点是用命令“ndb_mgmd启动的。

  对硬件没什么要求,差一点的机器完全能够胜任。默认端口1186

2、数据节点

  这类节点用于保存Cluster的数据。数据节点的数目与副本的数目相关,是片段的倍数。例如,对于两个副本,每个副本有两个片段,那么就有4个数据节点。不过没有必要设置多个副本。数据节点是用命令“ndbd启动的。

  可以选择大内存,cpu也相对来讲不错的,尤其是以后ndbmtd对多核Cpu的支持。默认端口2202

3SQL节点

  这是用来访问Cluster数据的节点。对于MySQLCluster,客户端节点是使用NDBCluster存储引擎的传统MySQL服务器。通常,SQL节点是使用命令“mysqldndbcluster启动的,或将“ndbcluster添加到“my.cnf”后使用“mysqld启动。

  cpu要求较高,选择多核,高频CPU较好

1.4 Cluster特性

分布式:分布式存储引擎,可以由多个NDBCluster存储引擎组成集群分别存放整体数据的一部分
支持事务:和
Innodb一样,支持事务
可与
mysqld不在一台主机:可以和mysqld分开存在于独立的主机上,然后通过网络和mysqld通信交互。
内存需求量巨大:新版本索引以及被索引的数据必须存放在内存中,老版本所有数据和索引必须存在与内存中
Cluster使用自动键值识别数据分片方案,用户无需关心数据切片方案(在5.1及以后提供了分区键规则),透明实现分布式数据库,数据分片规则根据1、主键、2唯一索引、3自动行标识rowid完成,再集群个数进行分布,其访问数据犹如RAID访问机制一样,能并行从各个节点抽取数据,散列数据,当使用非主键或分区键访问时,将导致所有簇节点扫描,影响性能(这是Cluster面对的核心挑战)
适用场景:

    具有非常高的并发需求
对单个请求的响应并不是非常的
critical
查询简单,过滤条件较为固定,每次请求数据量较少,又不希望自己进行水平Sharding

最佳实践

   尽可能让查询简单,避免数据的跨节点传输;尽可能满足SQL节点的计算性能,大一点的集群SQL节点会明显多余Data节点;在各节点之间尽可能使用万兆网络环境互联,以减少数据在网络层传输过程中的延时

1.5 mysql-cluster的优缺点

优点:

  1)        99.999 %的高可用性

  2)        快速的自动失效切换

  3)        灵活的分布式体系结构,没有单点故障

  4)        高吞吐量和低延迟

  5)        可扩展性强,支持在线扩容

缺点:

  1)        存在很多限制,比如:不支持外键,数据行不能超过8K(不包括BLOBtext中的数据)

  2)        部署、管理、配置很复杂

  3)        占用磁盘空间大,内存大

  4)        备份和恢复不方便

  5)       复杂的sql查询性能一般


2 安装 

2.1 环境介绍

mysqlcluster7.2.4安装配置
准备64位版本 5台服务器4G内存60G硬盘2cpu
10.100.200.36  64
10.100.200.37  64
10.100.200.38  64
10.100.200.39  64
10.100.200.41  64
管理节点(ndb_mgmd)10.100.200.36  64
数据节点(ndbd)     10.100.200.37  64位  10.100.200.38  64
SQL节点(mysqld/api)    10.100.200.39  64位   10.100.200.41  64
下载安装包:mysql-cluster-gpl-7.2.4-linux2.6-x86_64.tar.gz
http://mirror.services.wisc.edu/mysql/Downloads/MySQL-Cluster-7.2/

2.1 安装管理节点(10.100.200.36) 
2.1.1解压文件

    shell> tar -xvfmysql-cluster-gpl-7.2.4-linux2.6-x86_64.tar.gz

2.1.2创建安装目录

    shell> mkdir-p /usr/local/mysql/bin

    shell> mkdir-p /usr/local/mysql/ndbdata

2.1.3添加执行文件路径

    shell> vi ~/.bash_profile

  PATH=$PATH:$HOME/bin:/usr/local/mysql/bin

2.1.4拷贝执行文件

  shell> cdmysql-cluster-gpl-7.2.4-linux2.6-x86_64

  shell> cp bin/ndb_mgmd/usr/local/mysql/bin

  shell> cp bin/ndb_mgm/usr/local/mysql/bin

2.1.5创建日志文件存储目录

  shell> mkdir/var/lib/mysql-cluster

2.1.6创建配置文件目录及修改配置文件

  shell> mkdir/usr/local/mysql/cluster-conf

  shell> vi /usr/local/mysql/cluster-conf/config.ini 



2.2 管理节点配置文件

[NDBDDEFAULT]

#TotalSendBufferMemory= 256M

NoOfReplicas=2

DataMemory=2500M

IndexMemory=256M

DataDir=/var/lib/mysql-cluster

#FileSystemPath=/data/dbdata

#Redolog

FragmentLogFileSize=32M

InitFragmentLogFiles=SPARSE

NoOfFragmentLogFiles=8

RedoBuffer=1024M

StringMemory=25

LockPagesInMainMemory=1

MaxNoOfTables=4096

MaxNoOfOrderedIndexes=2048

MaxNoOfUniqueHashIndexes=1024

MaxNoOfAttributes=24576

MaxNoOfTriggers=14336

ODirect=1


MaxNoOfConcurrentTransactions=10000

MaxNoOfConcurrentOperations=50000

MaxNoOfLocalOperations=55000

TimeBetweenGlobalCheckpoints=1000

TimeBetweenEpochs=100

TimeBetweenWatchdogCheckInitial=60000

TransactionBufferMemory=10M

DiskCheckpointSpeed=10M

DiskCheckpointSpeedInRestart=100M

TimeBetweenLocalCheckpoints=20

SchedulerSpinTimer=400

SchedulerExecutionTimer=100

RealTimeScheduler=1

BackupMaxWriteSize=1M

BackupDataBufferSize=16M

BackupLogBufferSize=4M

BackupMemory=20M


MaxNoOfExecutionThreads=4

TransactionDeadLockDetectionTimeOut=10000

BatchSizePerLocalScan=512

###Increasing the LongMessageBufferb/c of a bug (20090903)

LongMessageBuffer=8M

###Heartbeating

HeartbeatIntervalDbDb=15000

HeartbeatIntervalDbApi=15000

[MGMDEFAULT]

PortNumber:1186

DataDir:/var/lib/mysql-cluster1

[TCPDEFAULT]

SendBufferMemory:64M


#######################################

#Change HOST1 to the name of the NDB_MGMD host

#Change HOST8 to the name of the NDBD host

#Change HOST9 to the name of the NDBD host

#######################################

[NDB_MGMD]

NodeId:1

HostName:10.100.200.36

ArbitrationRank:1

[NDBD]

NodeId:4

HostName:10.100.200.37

[NDBD]

NodeId:5

HostName:10.100.200.38


######################################################

#Note: The following can be MySQLDconnections or   #

#      NDB API application connecting to thecluster #

######################################################

[API]

NodeId:10

HostName:10.100.200.39

ArbitrationRank:2

[API]

NodeId:11

HostName:10.100.200.39

ArbitrationRank:2

[API]

NodeId:12

HostName:10.100.200.39

ArbitrationRank:2

[API]

NodeId:13

HostName: 10.100.200.39

ArbitrationRank: 2

[API]

NodeId:14

HostName: 10.100.200.41

ArbitrationRank: 2

[API]

NodeId:15

HostName: 10.100.200.41

ArbitrationRank: 2

[API]

NodeId:16

HostName: 10.100.200.41

ArbitrationRank: 2

[API]

NodeId:17

HostName: 10.100.200.41

ArbitrationRank: 2



安装数据节点(10.100.200.37  10.100.200.38)
解压文件
shell>tar -zxvfmysql-cluster-gpl-7.2.4-linux2.6-x86_64.tar.gz
创建安装目录
shell>mkdir -p /usr/local/mysql/bin
shell>mkdir -p /usr/local/mysql/ndbdata
拷贝执行文件
shell>cp mysql-cluster-gpl-7.2.4-linux2.6-x86_64/bin/ndbd/usr/local/mysql/bin
添加执行文件路径
shell>vim ~/.bash_profile
PATH=$PATH:$HOME/bin:/usr/local/mysql/bin
创建配置文件:
shell>vim /etc/my.cnf
分别在主机添加如下内容:
[mysql_cluster]
#配置数据节点连接管理节点
ndb-connectstring=10.100.200.36


安装SQL节点1(10.100.200.39  10.100.200.41)
解压文件
shell>tar -zxvfmysql-cluster-gpl-7.2.4-linux2.6-x86_64.tar.gz
拷贝安装文件
shell>mvmysql-cluster-gpl-7.2.4-linux2.6-x86_64 /usr/local/mysql
添加mysql用户
shell>groupaddmysql
shell>useradd-gmysqlmysql
添加权限
shell>chown -Rmysql:mysql/usr/local/mysql
拷贝配置文件
shell>cp /usr/local/mysql/support-files/my-large.cnf/etc/my.cnf
初始化数据库
shell>cd /usr/local/mysql
shell>scripts/mysql_install_db--user=mysql
拷贝守护进程所需文件
shell>cp /usr/local/mysql/support-files/mysql.server/etc/init.d/mysqld
配置守护进程
shell>chkconfig--addmysqld
shell>chkconfig--level 35mysqld on
添加执行文件路径
shell>vim~/.bash_profile
PATH=$PATH:$HOME/bin:/usr/local/mysql/bin
更改配置文件
shell>vim /etc/my.cnf
分别编辑如下信息:
[mysqld]#配置SQL节点与管理节点连接
port= 3307
socket= /tmp/mysql.sock
ndbcluster
ndb-connectstring=10.100.200.36



5启动以及关闭cluster
启动顺序管理节点->数据节点->SQL节点
a、启动管理节点

  [[email protected]cluster-conf]#ndb_mgmd-f /usr/local/mysql/cluster-conf/config.ini

b、启动数据节点

  ndbd–initial #(第一次启动必须添加选项,另外备份/恢复,修改配置文件也需要执行)

  ndbd    #不是第一次启动需要执行的命令

c、启动SQL节点

  /etc/rc.d/init.d/mysqldstartservicemysqldstart

  启动后可以用mysql-uroot -p验证mysql服务状态

关闭顺序:SQL节点->管理节点
a、关闭SQL节点

  /etc/rc.d/init.d/mysqldstopservicemysqld stop

b、关闭数据节点

  ndbdstop

c、关闭管理节点

  ndb_mgm〉shutdown



6验证cluster的状态

验证配置的正确性

1、在管理节点执行:ndb_mgm-> show

[[email protected]~]# ndb_mgm

--NDB Cluster -- Management Client --

ndb_mgm>show

Connectedto Management Server at: localhost:1186

ClusterConfiguration

---------------------

[ndbd(NDB)]     2 node(s)

id=4    @10.100.200.37  (mysql-5.5.19 ndb-7.2.4, Nodegroup:0, Master)

id=5    @10.100.200.38  (mysql-5.5.19 ndb-7.2.4, Nodegroup:0)

[ndb_mgmd(MGM)]1 node(s)

id=1    @10.100.200.36  (mysql-5.5.19 ndb-7.2.4)

[mysqld(API)]   2 node(s)

id=10   @10.100.200.39  (mysql-5.5.19 ndb-7.2.4)

………

id=14   @10.100.200.41  (mysql-5.5.19 ndb-7.2.4)

………


7ndbcluster存储引擎功能测试(innoDB对比)

MySQL Cluster初步学习资料整理--安装部署新特性性能测试等


MySQL Cluster初步学习资料整理--安装部署新特性性能测试等



8 MySQLClster备份与恢复

备份

  采用ndb_mgm管理客户端来备份,在管理节点执行ndb_mgm即可进入管理命令行,输入startbackup开始备份所有节点,如果后面还跟着对应数据节点的id就只备份对应的数据节点

恢复(参考:http://xxtianxiaxing.iteye.com/blog/563063)

  使用命令ndb_restore进行恢复,具体过程如下:

   启动管理节点

     /usr/bin/ndb_mgmd-f /usr/local/mysql/mysql-cluster/config.ini--reload

  启动数据节点:

  /usr/bin/ndbd --initial

  第一个节点恢复的时候

  在第一个节点恢复表结构(恢复的时候如果不涉及到表结构的变更,不用使用参数-m)

  /usr/bin/ndb_restore  -c 10.100.200.37-n 11 -b 1 -m --backup_path=/data/backup/backup-1/

  恢复数据,恢复数据的时候可以几个ndb节点一起执行,速度会快一点!

  /usr/bin/ndb_restore  -c 10.100.200.37-n 11 -b 1  -r --backup_path=/data/backup/backup-1/

  其他节点恢复的时候(以后的节点不需要加-m参数)

  /usr/bin/ndb_restore  -c 192.168.100.223 -n 11 -b 1 -r --backup_path=/data/dbdata1/BACKUP/BACKUP-1/

  

9 MySQLClster在线添加节点1

增加或减少数据节点的数量和NoOfReplicas有关,一般来说NoOfReplicas2,那么增加或减少的数量也应该是成对的,否则要设置另外的NoOfReplicas
首先是在配置文件中添加两个节点的设置,如下:
viconfig.ini  添加

  [NDBD]

  id=21

  HostName=10.100.200.37

  [NDBD]

  id=22

  HostName=10.100.200.38

ndb_mgm工具,停掉管理节点,然后重新启动管理节点
执行ndb_mgm进入管理命令界面,找到管理节点的id,然后执行管理节点idstop,退出
执行
/usr/bin/ndb_mgmd-f /usr/local/mysql/mysql

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-10-08
  • 2022-12-23
  • 2021-05-20
  • 2021-12-19
  • 2021-09-01
  • 2021-06-22
猜你喜欢
  • 2021-04-26
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-03-04
  • 2021-10-08
  • 2021-10-02
相关资源
相似解决方案