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

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

1.1 mysql-cluster简介 

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

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


1.2 请看 Cluster 结构图



1.3 Cluster主要结构

1 、管理 (MGM) 节点

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

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

2 、数据节点

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

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

3 SQL 节点

  这是用来访问Cluster数据的节点。对于MySQLCluster,客户端节点是使用NDBCluster存储引擎的传统MySQL服务器。通常,SQL节点是使用命令“mysqld–ndbcluster”启动的,或将“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(不包括BLOB和text中的数据)

  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



3 安装数据节点(10.100.200.37  10.100.200.38)
• 解压文件
• shell>tar - zxvf mysql-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


4 安装SQL节点1(10.100.200.39  10.100.200.41)
• 解压文件
• shell>tar - zxvf mysql-cluster-gpl-7.2.4-linux2.6-x86_64.tar.gz
• 拷贝安装文件
• shell> mv mysql-cluster-gpl-7.2.4-linux2.6-x86_64 / usr /local/ mysql
• 添加 mysql 用户
• shell> groupadd mysql
• shell> useradd -g mysql mysql
• 添加权限
• shell> chown -R mysql: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 --add mysqld
• shell> chkconfig --level 35 mysqld 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 、启动管理节点

  [root@banggocluster-conf]#ndb_mgmd-f /usr/local/mysql/cluster-conf/config.ini

• b 、启动数据节点

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

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

• c 、启动 SQL 节点

  /etc/rc.d/init.d/mysqldstart或servicemysqldstart

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

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

  /etc/rc.d/init.d/mysqldstop或servicemysqld stop

• b 、关闭数据节点

  ndbdstop

• c 、关闭管理节点

  ndb_mgm〉shutdown



6验证cluster的状态

验证配置的正确性

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

[root@banggo~]# 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对比)






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 有关,一般来说 NoOfReplicas 是 2 ,那么增加或减少的数量也应该是成对的,否则要设置另外的 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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值