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
-cluster/config.ini  --reload
重新启动管理节点
•
•
登陆上去用
show
命令查看,是否出现了新添加的两个节点!
•
环状重启(一次重启数据节点和
sql
节点)
•
•
初始化新添加的两个节点:
•
ndbd
--initial
(执行初始化之后会自动创建数据文件,
undo
日志文件等等)
•
通过
ndb_mgm
创建
nodegroup
•
CREATENODEGROUP 21,22s
•
•
重新分配
cluster
的数据
•
SELECTTABLE_SCHEMA, TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE ENGINE ='NDBCLUSTER';
•
ALTERONLINE TABLE
table_name
REORGANIZE PARTITION;
•
alteronline table
card_package
reorganize partition;
•
•
然后通过
show
命令或者使用
ndb_desc
命令查看
•
ndb_desc
-c 10.80.30.39 -d
bgcarddb

card_package
-p

•
-c
后面跟管理节点的
ip
,
-d
跟数据库的名字,
table_name
为表名,
-p
输出分区的详细信息

10 MySQLClster用户权限共享

•
在
sql
节点
41
上面执行
mysql
-
uroot
-p < /
usr
/local/
mysql
/share/ndb_dist_priv.sql
•
•
在
mysql
终端调用名字为
mysql_cluster_move_privileges
的存储过程,这个存储过程的功能是备份权限表,然后将表的存储引擎转换为
ndbcluster
引擎。

mysql
>CALL
mysql.mysql_cluster_move_privileges
();
•
•
自动备份权限表

shell>mysqldumpmysql userdbtables_privcolumns_privprocs_priv>backup_file.sql

•
验证权限表

mysql>show create tablemysql.user;看engine是否为ndbcluster。

•
在
41
上面加测试账号

mysql>grant all on *.* to test@'10.100.200.%' identified by 'test123';

[root@banggo~]#mysql-h10.100.200.39 -utest-ptest123 -P3307;

OK,能连上,测试成功!

11.1 MySQLClster备份与恢复扩展(操作见No8)

•
1
、簇备份概念

备份指的是在给定时间对数据库的快照。备份包含三个主要部分:
(
1
)
Metadata
(元数据):所有数据库表的名称和定义。
(
2
)
Tablerecords
(表记录):执行备份时实际保存在数据库表中的数据。
(
3
)
Transactionlog
(事务日志):指明如何以及何时将数据保存在数据库中的连续记录。
每一部分
(
这三部分
)
均会保存在参与备份的所有数据节点上。在备份过程中,每个节点均会将这三个部分保存在磁盘上的三个文件中
(
意思是说
,
有几个节点
,
将会把相同的数据
,
保存几份
.
例如
,2
个数据节点
,
那么就会分别在
2
个节点上
,
保存
2
次,保存目录默认为

[NDBD]

DateDir
=/
usr
/local/
mysql
/BACKUP
•


(
4
)
BACKUP-
backup_id.node_id.ctl


包含控制信息和元数据的控制文件。每个节点均会将相同的表定义(对于簇中的所有表)保存在自己的该文件中
(
5
)
BACKUP-backup_id-0.node_id.data

包含表记录的数据文件,它是按片段保存的,也就是说,在备份过程中,不同的节点会保存不同的片段。每个节点保存的文件以指明了记录所属表的标题开始。在记录清单后面有一个包含关于所有记录校验和的脚注。

(
6
)
BACKUP-
backup_id.node_id.log


包含已提交事务的记录的日志文件。在日志中,仅保存已在备份中保存的表上的事务。参与备份的节点将保存不同的记录,这是因为,不同的节点容纳了不同的数据库片段。
在上面所列的内容中,
backup_id
指的是备份
ID
,
node_id
是创建文件的节点的唯一
ID
。
使用管理服务器创建备份开始备份前,请确保已为备份操作恰当地配置了簇。

•
2
、备份参数
(
以下参数
,
都写入在
mgmd
的
config.ini
配置文件中
)

本节讨论的参数定义了与在线备份执行有关的内存缓冲集。
(
1
)
BackupDataBufferSize


在创建备份的过程中,为了将数据发送到磁盘,将使用两类缓冲。备份数据缓冲用于填充由扫描节点的表而记录的数据。一旦将该缓冲填充到了指定的水平
BackupWriteSize
(请参见下面的介绍),就会将页发送至磁盘。在将页写入磁盘的同时,备份进程能够继续填充该缓冲,直至其空间消耗完为止。出现该情况时,备份进程将暂停扫描,直至一些磁盘写入操作完成并释放了内存为止,然后扫描继续。
该参数的默认值为
2MB
。
(
2
)
BackupLogBufferSize


备份日志缓冲扮演的角色类似于备份数据缓冲,不同之处在于,它用于生成备份执行期间进行的所有表写入的日志。相同的原理也适用于备份数据缓冲情形下的页写入,不同之处在于,当备份日志缓冲中没有多余空间时,备份将失败。出于该原因,备份日志缓冲的大小应足以处理执行备份时产生的负载。
该参数的默认值对于大多数应用程序均是适当的。事实上,备份失败的原因更可能是因为磁盘写入速度不够,而不是备份日志缓冲变满。如果没有为应用程序产生的写负载配置磁盘子系统,簇很可能无法执行所需的操作。最好按恰当的方式配置簇,使得处理器成为瓶颈而不是磁盘或网络连接。默认值是
2MB
。
(
3
)
BackupMemory


该参数是
BackupDataBufferSize
和
BackupLogBufferSize
之和。默认值是
2MB+ 2MB = 4MB
。
(
4
)
BackupWriteSize


该参数指定了由备份日志缓冲和备份数据缓冲写入磁盘的消息大小。默认值是
32KB.

(
5
)
BackupDataDir

#
可更改默认的备份目录
,
BackupDataDir
=/
mysqlback

#
当然前提
,
mkdir
/
mysqlback
,
需要在所有数据节点上运行
也能指定存放备份的目录。默认情况下,该目录是
FileSystemPath
/BACKUP

(
6
)
FileSystemPath


该参数指定了存放为元数据创建的所有文件、
REDO
日志、
UNDO
日志和数据文件的目录。默认目录是由
DataDir
指定的。注意,启动
ndbd
进程之前,该目录必须已存在。
(
7
)
DataDir


该参数指定了存放跟踪文件、日志文件、
pid
文件以及错误日志的目录。

12.1 Join的改进1

•    在现在的mysqlcluster 7.2测试版本中,对join的功能进行了重大改进,可以说是一个里程碑的版本,由于前段时间做测试发现mysqlcluster 7.1.10对join的性能很不好,另外如果jion的表比较大的时候会导致节点之间的数据传输非常大。

    我们知道在7.2之前的版本都是将jion在mysqld节点执行,这样就需要从数据节点进行交互传输数据,造成join的性能非常差。现在7.2版本将join放到了数据节点执行,并行处理,较少了数据在sql节点的交互,因此性能大幅提升。
•
•导入数据测试(省略,参见join.txt)首先将ndb_join_pushdown参数关掉进行测试

mysql>set
ndb_join_pushdown=0;

mysql>show variables like '%ndb_join_pushdown%';

+-------------------+-------+

| Variable_name    | Value |

+-------------------+-------+

| ndb_join_pushdown | OFF  |

+-------------------+-------+

•mysql>SELECT sql_no_cacheCOUNT(*)  FROM residents,postcodesWHERE residents.postcode=postcodes.postcodeAND postcodes.town="MAIDENHEAD";
•+----------+
•|COUNT(*) |
•+----------+
•|    20000 |
•+----------+
•1row in set (17.68 sec)
•mysql>set
ndb_join_pushdown=1; 
•mysql>show variables like '%ndb_join_pushdown%';
•+-------------------+-------+
•|Variable_name     | Value |
•+-------------------+-------+
•|ndb_join_pushdown| ON    |
•+-------------------+-------+
•
•mysql>SELECT sql_no_cacheCOUNT(*) FROM residents,postcodesWHERE residents.postcode=postcodes.postcodeAND postcodes.town="MAIDENHEAD";
•+----------+
•|COUNT(*) |
•+----------+
•|    20000 |
•+----------+
•1row in set (1.72 sec)
•参考文章:http://www.clusterdb.com/mysql/dramatically-increased-mysql-cluster-join-performance-with-adaptive-query-localization/

13.1 磁盘存储表

•
#
创建日志文件组,并添加
undo
日志文件
•
CREATELOGFILE GROUP lg_2

ADD UNDOFILE 'undo_2.log'

INITIAL_SIZE 536870912

UNDO_BUFFER_SIZE 67108864

ENGINE NDBCLUSTER;

#创建表空间,并添加数据文件

•
CREATETABLESPACE ts_2

ADDDATAFILE 'data_2.dat'

USE LOGFILE GROUP lg_2

INITIAL_SIZE 536870912

ENGINE NDBCLUSTER;

•
CREATETABLE `
bgtdisk
`(     #
创建使用磁盘存储的表:

`Name` varchar(50) NOT NULL,

`ProviderName`varchar(200) NOT NULL,

PRIMARY KEY (`Name`)

) tablespace ts_2 storage disk ENGINE=ndbcluster DEFAULT CHARSET=utf8;

•
可以去
information_schema.FILES
和
ndbinfo.logspaces
里面获取日志文件和数据文件的信息。
•
修改表的存储引擎:
altertable test.t1
tablespace
ts_1 storage disk ENGINE=
ndbcluster
DEFAULT CHARSET=utf8;
•
录入数据

mysql>insert intobgtdiskselect * from postcodes;

Query OK, 100000 rows affected (9.68 sec)

Records: 100000  Duplicates: 0 Warnings: 0

•
再去数据节点,查看存储情况,数据文件已经增长,如图所示:

•
这里面有
totalsize
还有
freesize
一减就是已经存储占用的大小
•
mysql
>SELECT TABLESPACE_NAME, FILE_NAME, EXTENT_SIZE*TOTAL_EXTENTS/1024/1024 ASTOTAL_MB, EXTENT_SIZE*FREE_EXTENTS/1024/1024 AS FREE_MB, EXTRA FROM
information_schema.FILES
WHERE FILE_TYPE="DATAFILE";
•
+-----------------+------------+--------------+--------------+----------------+
•
|TABLESPACE_NAME | FILE_NAME  |TOTAL_MB     | FREE_MB      | EXTRA          |
•
+-----------------+------------+--------------+--------------+----------------+
•
|ts_1            | data_1.dat |512.00000000 | 301.00000000 | CLUSTER_NODE=4 |
•
|ts_1            | data_1.dat |512.00000000 | 301.00000000 | CLUSTER_NODE=5 |
•
|ts_1            | data_1.dat |512.00000000 | 300.00000000 | CLUSTER_NODE=6 |
•
+-----------------+------------+--------------+--------------+----------------+
•
3rows in set (0.05 sec)
•
#UNDO_BUFFER_SIZE
不能超过
config.ini
的配置
RedoBuffer
=32M
大小,否则创建失败,
•
 
CREATELOGFILE GROUP lg_1
•
  ADD UNDOFILE 'undo_2.log‘ INITIAL_SIZE634217728 UNDO_BUFFER_SIZE 33554432 ENGINE NDBCLUSTER;
•
 
•
CREATETABLESPACE ts_1 ADD DATAFILE 'data_11.dat' USE LOGFILE GROUP lg_1 INITIAL_SIZE4294967296 EXTENT_SIZE 33554432 ENGINE NDBCLUSTER;
•
•
    
执行结束之后,需要去数据目录
/
var
/lib/
mysql
-cluster/
里面看看
undo
文件和
data
文件,如果存在,那么就证明建立成功了。
•
•
  可以建立
2
个表空间
•
 
CREATETABLESPACE ts_2
•
       ADD DATAFILE 'data_20.dat‘ USE LOGFILEGROUP lg_1 INITIAL_SIZE 10737418240
•
    EXTENT_SIZE 33554432 ENGINE NDBCLUSTER;
•
•
altertable
bguserdb.MvpCard

tablespace
ts_1 storage disk ENGINE=
ndbcluster
DEFAULT CHARSET=utf8;

•
mysql
>insert into
bguserdb.MvpCard
select * from
test.MvpCard
limit 100000,1000000;

Query OK, 1000000 rows affected (1 min 55.28sec)  Records: 1000000  Duplicates: 0 Warnings: 0

•
这里面有
totalsize
还有
freesize
一减就是已经存储占用的大小
•
mysql
>SELECT TABLESPACE_NAME, FILE_NAME, EXTENT_SIZE*TOTAL_EXTENTS/1024/1024 ASTOTAL_MB, EXTENT_SIZE*FREE_EXTENTS/1024/1024 AS FREE_MB, EXTRA FROM
information_schema.FILES
WHERE FILE_TYPE="DATAFILE";
•
+-----------------+------------+--------------+--------------+----------------+
•
|TABLESPACE_NAME | FILE_NAME  |TOTAL_MB     | FREE_MB      | EXTRA          |
•
+-----------------+------------+--------------+--------------+----------------+
•
|ts_1            | data_1.dat |512.00000000 | 301.00000000 | CLUSTER_NODE=4 |
•
|ts_1            | data_1.dat |512.00000000 | 301.00000000 | CLUSTER_NODE=5 |
•
|ts_1            | data_1.dat |512.00000000 | 300.00000000 | CLUSTER_NODE=6 |
•
+-----------------+------------+--------------+--------------+----------------+
•
3rows in set (0.05 sec)

[置顶] MySQL Cluster初步学习资料整理--安装部署新特性性能测试等的更多相关文章

  1. iOS 开发学习资料整理(持续更新)

      “如果说我看得比别人远些,那是因为我站在巨人们的肩膀上.” ---牛顿   iOS及Mac开源项目和学习资料[超级全面] http://www.kancloud.cn/digest/ios-mac ...

  2. iOS 学习资料整理

    iOS学习资料整理 https://github.com/NunchakusHuang/trip-to-iOS 很好的个人博客 http://www.cnblogs.com/ygm900/ 开发笔记 ...

  3. Java 学习资料整理

    Java 学习资料整理 Java 精品学习视频教程下载汇总 Java视频教程 孙鑫Java无难事 (全12CD) Java视频教程 即学即会java 上海交大 Java初级编程基础 共25讲下载 av ...

  4. F4NNIU 的 Docker 学习资料整理

    F4NNIU 的 Docker 学习资料整理 Docker 介绍 以下来自 Wikipedia Docker是一个开放源代码软件项目,让应用程序部署在软件货柜下的工作可以自动化进行,借此在Linux操 ...

  5. 如何保障MySQL主从复制关系的稳定性?关键词(新特性、crash-safe)

    一 前言 MySQL 主从架构已经被广泛应用,保障主从复制关系的稳定性是大家一直关注的焦点.MySQL 5.6 针对主从复制稳定性提供了新特性: slave 支持 crash-safe.该功能可以解决 ...

  6. MySQL Cluster初步测试结果汇总图示报告 --> 用mysqlslap与sysbench进行测试

    Cluster结构图                                       测试环境简介 Mysql cluster集群测试环境 4 data node,32G 8核cpu 4 ...

  7. JAVA学习资料整理

    今天偶然间发现之前一个群里发过的一篇关于JAVA学习资料的东西.本着服务大众的精神,搬来了博客园: <JAVA编程思想>第四版(英文原版) 下载地址:http://115.com/file ...

  8. Git学习资料整理

    Git作为一个优秀的版本控制系统,是我们开发人员必须要学会使用的一个工具,接触git一年多以来,也看了不少相关资料,今天把我所看过的一些学习资源整理一下. Git入门当然首推廖雪峰廖老师的教程:Git ...

  9. iOS学习资料整理

    视频教程(英文) 视频 简介 Developing iOS 7 Apps for iPhone and iPad 斯坦福开放教程之一, 课程主要讲解了一些 iOS 开发工具和 API 以及 iOS S ...

随机推荐

  1. poj 2531 Network Saboteur( dfs )

    题目:http://poj.org/problem?id=2531 题意:一个矩阵,分成两个集合,求最大的 阻碍量 改的 一位大神的代码,比较简洁 #include<stdio.h> #i ...

  2. 基于邻接表的广度优先搜索遍历(bfs)

    题目:http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=2142&cid=1186 #include<stdio.h> #incl ...

  3. C#中的预处理器指令

    C#中有许多名为“预处理器指令”的命令.这些命令从来不会转化为可执行代码中的命令,但会影响编译过程的各个方面. 例如,使用预处理器指令可以禁止编译器编译代码的某一部分.如果计划发布两个版本的代码,即基 ...

  4. 4月数据库流行度排行榜 MySQL能否追上Oracle

    4月的数据库流行度排行榜可谓看点十足.闲言少叙,先上图: 前十名中,名次上升的都是NoSQL数据库,NoSQL凭借其对大数据处理的优势,发展越来越快.NoSQL是对众多非传统关系型数据库的总称,按存储 ...

  5. 从算法入手讲解如何在SQL Server中实现最优最简

    算法是计算机科学中一个重要的研究方向,是解决复杂问题的关键.在计算机世界中,算法无处不在.数据库是存储数据和执行大批量计算的场所,在数据库中使用一些简单的SQL命令,进行存储.查询.统计.以解决现实世 ...

  6. POJ 3436 ACM Computer Factory (拆点+输出解)

    [题意]每台计算机由P个零件组成,工厂里有n台机器,每台机器针对P个零件有不同的输入输出规格,现在给出每台机器每小时的产量,问如何建立流水线(连接各机器)使得每小时生产的计算机最多. 网络流的建图真的 ...

  7. Java [leetcode 29]Divide Two Integers

    题目描述: Divide two integers without using multiplication, division and mod operator. If it is overflow ...

  8. 【Struts】strust.xml中<result type="">所有类型详解

    在默认时,<result>标签的type属性值是“dispatcher”(实际上就是转发,forward).开发人员可以根据自己的需要指定不同的类型,如redirect.stream等.如 ...

  9. Base-Android快速开发框架(二)--数据存储之SharedPreferences

    对于App开发者,抽象来说,其实就是将数据以各种各样的方式展示在用户面前以及采集用户的数据.采集用户的数据包括用户的输入.触摸.传感器等,展示的数据通过网络来源于各业务系统,以及用户的 输入数据.在这 ...

  10. 浅析Netty的异步事件驱动(一)

    本篇文章着重于浅析一下Netty的事件处理流程,Netty版本为netty-3.6.6.Final. Netty定义了非常丰富的事件类型,代表了网络交互的各个阶段.并且当各个阶段发生时,触发相应的事件 ...