求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
 
  
 
 
     
   
分享到
MySQL Cluster初步学习资料整理
 
作者 黄杉,火龙果软件    发布于 2013-11-26
 

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 -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

4 安装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、启动管理节点

[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

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_nameREORGANIZE PARTITION;

alteronline table card_packagereorganize partition;

然后通过show命令或者使用ndb_desc命令查看

ndb_desc-c 10.80.30.39 -dbgcarddbcard_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>CALLmysql.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)

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.t1tablespacets_1 storage disk ENGINE=ndbclusterDEFAULT 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 FROMinformation_schema.FILESWHERE 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.MvpCardtablespacets_1 storage disk ENGINE=ndbclusterDEFAULT CHARSET=utf8;
mysql>insert intobguserdb.MvpCardselect * fromtest.MvpCardlimit 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 FROMinformation_schema.FILESWHERE 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)
相关文章

微服务测试之单元测试
一篇图文带你了解白盒测试用例设计方法
全面的质量保障体系之回归测试策略
人工智能自动化测试探索
相关文档

自动化接口测试实践之路
jenkins持续集成测试
性能测试诊断分析与优化
性能测试实例
相关课程

持续集成测试最佳实践
自动化测试体系建设与最佳实践
测试架构的构建与应用实践
DevOps时代的测试技术与最佳实践
 
分享到
 
 
     


LoadRunner性能测试基础
软件测试结果分析和质量报告
面向对象软件测试技术研究
设计测试用例的四条原则
功能测试中故障模型的建立
性能测试综述
更多...   


性能测试方法与技术
测试过程与团队管理
LoadRunner进行性能测试
WEB应用的软件测试
手机软件测试
白盒测试方法与技术


某博彩行业 数据库自动化测试
IT服务商 Web安全测试
IT服务商 自动化测试框架
海航股份 单元测试、重构
测试需求分析与测试用例分析
互联网web测试方法与实践
基于Selenium的Web自动化测试
更多...