1.1 mysql -cluster 简介
简单的说, MySQL Cluster 实际上是在无共享存储设备的情况下实现的一种完全分布式数据库系统,其主要通过 NDBCluster (简称 NDB )存储引擎来实现。
MySQL Cluster 刚刚诞生的时候可以说是一个可以对数据进行持久化的内存数据库,所有数据和索引都必须装载在内存中才能够正常运行,但是最新的 MySQL Cluster 版本已经可以做到仅仅将所有索引和索引数据装载在内存中即可,实际的数据可以不用全部装载到内存中,架构如下图所示:
1.2 请看Cluster 结构图
1.3Cluster 主要结构
·1 、管理 (MGM) 节点 :
这类节点的作用是管理 MySQL Cluster 内的其他节点,如提供配置数据、启动并停止节点、运行备份等。由于这类节点负责管理其他节点的配置,应在启动其他节点之前首先启动这类节点。 MGM 节点是用命令“ ndb_mgmd ” 启动的。
对硬件没什么要求,差一点的机器完全能够胜任。默认端口 1186 。
·
·2 、数据节点 :
这类节点用于保存 Cluster 的数据。数据节点的数目与副本的数目相关,是片段的倍数。例如,对于两个副本,每个副本有两个片段,那么就有 4 个数据节点。不过没有必要设置多个副本。数据节点是用命令“ ndbd ” 启动的。
可以选择大内存, cpu 也相对来讲不错的,尤其是以后 ndbmtd 对多核 Cpu 的支持。默认端口 2202
·
·3 、 SQL 节点 :
这是用来访问 Cluster 数据的节点。对于 MySQL Cluster ,客户端节点是使用 NDBCluster 存储引擎的传统 MySQL 服务器。通常, SQL 节点是使用命令“ mysqld – ndbcluster ” 启动的,或将“ ndbcluster ” 添加到“ my.cnf” 后使用“ mysqld ” 启动。
对 cpu 要求较高,选择多核,高频 CPU 较好
1.4Cluster 特性
·分布式:分布式存储引擎,可以由多个 NDBCluster 存储引擎组成集群分别存放整体数据的一部分
支持事务:和 Innodb 一样,支持事务
可与 mysqld 不在一台主机:可以和 mysqld 分开存在于独立的主机上,然后通过网络和 mysqld 通信交互。
内存需求量巨大:新版本索引以及被索引的数据必须存放在内存中,老版本所有数据和索引必须存在与内存中
·
·Cluster 使用自动键值识别数据分片方案,用户无需关心数据切片方案(在 5.1 及以后提供了分区键规则),透明实现分布式数据库,数据分片规则根据 1 、主键、 2 唯一索引、 3 自动行标识 rowid 完成,再集群个数进行分布,其访问数据犹如 RAID 访问机制一样,能并行从各个节点抽取数据,散列数据,当使用非主键或分区键访问时,将导致所有簇节点扫描,影响性能(这是 Cluster 面对的核心挑战)
·
·适用场景:
具有非常高的并发需求
对单个请求的响应并不是非常的 critical
查询简单,过滤条件较为固定,每次请求数据量较少,又不希望自己进行水平 Sharding
·最佳实践
尽可能让查询简单,避免数据的跨节点传输;尽可能满足 SQL 节点的计算性能,大一点的集群 SQL 节点会明显多余 Data 节点;在各节点之间尽可能使用万兆网络环境互联,以减少数据在网络层传输过程中的延时
1.5mysql -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.3864 位
·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 - xvf mysql-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> cd mysql-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 LongMessageBuffer b/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 MySQLD connections 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.3910.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@banggo cluster-conf]# ndb_mgmd -f / usr /local/ mysql /cluster-conf/config.ini
·b 、启动数据节点
ndbd –initial #( 第一次启动必须添加选项,另外备份 / 恢复,修改配置文件也需要执行 )
ndbd # 不是第一次启动需要执行的命令
·c 、启动 SQL 节点
/etc/ rc.d / init.d / mysqld start 或 service mysqld start
启动后可以用 mysql - uroot -p 验证 mysql 服务状态
·
·关闭顺序: SQL 节点 -> 管理节点
·a 、关闭 SQL 节点
/etc/ rc.d / init.d / mysqld stop 或 service mysqld stop
·b 、关闭数据节点
ndbd stop
·c 、关闭管理节点
ndb_mgm 〉shutdown
6 验证 cluster 的状态
验证配置的正确性
1、在管理节点执行:ndb_mgm-> show
[iyunv@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)
………
7 ndbcluster 存储引擎功能测试 ( 与 innoDB 对比 )
8 MySQL Clster 备份与恢复
备份
采用ndb_mgm管理客户端来备份,在管理节点执行ndb_mgm即可进入管理命令行,输入startbackup开始备份所有节点,如果后面还跟着对应数据节点的id就只备份对应的数据节点
恢复( 参考: http://xxtianxiaxing.iyunv.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 MySQL Clster 在线添加节点 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 MySQL Clster 用户权限共享
·在 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> mysqldump mysql userdb tables_priv columns_priv procs_priv > backup_file .sql
·验证权限表
mysql >show create table mysql.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 MySQL Clster 备份与恢复扩展 ( 操作见 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.1Join 的改进 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 DEFAULTCHARSET=utf8;
·录入数据
mysql >insert into bgtdisk select * from postcodes;
Query OK, 100000 rows affected (9.68 sec)
Records: 100000 Duplicates: 0Warnings: 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 WHEREFILE_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 33554432ENGINE 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 DEFAULTCHARSET=utf8;
·mysql >insert into bguserdb.MvpCard select * from test.MvpCard limit100000,1000000;
Query OK, 1000000 rows affected (1 min 55.28sec) Records: 1000000 Duplicates: 0Warnings: 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 WHEREFILE_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)
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com