MySQL Cluster采用一系列的Disk Data objects来实现磁盘表;接下来为您详细介绍

一、概念

MySQL Cluster采用一系列的Disk Data objects来实现磁盘表。

Tablespaces:作用是作为其他Disk Data objects的容器。

Undo log files:存储事务进行回滚需要的信息,一个或者多个undo log files组成一个log files group,最后,该log file group关联到一个tablespaces。

Data files:作用是存储表中的数据,data file直接关联到tablespaces。

在每一个数据节点上undo log files和data files都是实际的文件,默认的,存放在ndb_node_id_fs文件夹下,该路径是在MySQL Cluster的config.ini中用DataDir指定的,node_id是data node的node ID。可以用绝对路径或者相对路径指定undo log或者data file的路径。tablespaces和log file group则不是实际的文件。

注意:尽管不是所有的Disk Data Object都作为文件存储,但是他们共享同一的命名空间,这意味着每个Disk Data Object必须唯一命名。

二、创建步骤

MySQL Cluster创建一个磁盘表需要包含以下几步:

2.1、创建一个log file group,将一个或者多个undo log files关联到它上面(undo log file也叫做 undofile)。注意,undo log file只是在创建磁盘表的时候才需要,创建ndb的内存表的时候不需要。

2.2、创建一个tablespaces,关联一个log file group和一个或者多个data files到上面。

2.3、使用该tablespaces创建一个磁盘表存储数据。

下面做一个例子:

2.4、创建log file group:

我们创建一个名为lg_cloudstor的log file group,包含cloudstor_undo_1.log和cloudstor_undo_2.log两个undo log file。初始大小分别为200M和100M(默认的undo log file的初始大小为128M),你还可以指定log file group的重写缓冲大小(默认为8M),这里我们设置为20M。创建log file group的时候必须和一个undo log file一起创建。如下:

CREATE LOGFILE GROUP lg_cloudstor

ADD UNDOFILE 'cloudstor_undo_1.log'

INITIAL_SIZE 200M

UNDO_BUFFER_SIZE 20M

ENGINE NDBCLUSTER;

该语句可能会出错,出现ERROR 1064 (42000)语法错误的信息,原因是字符集的问题,先执行:set character_set_client=latin1; 在执行:

添加新的undo log file:

ALTER LOGFILE GROUP lg_cloudstor

ADD UNDOFILE 'cloudstor_undo_2.log'

INITIAL_SIZE 100M

ENGINE NDBCLUSTER;

2.5、创建tablespace

下来我们创建一个tablespace,创建tablespace必须指明一个log file group用于存储undo log。还必须指定一个data file,tablespace创建完成后,你可以稍后添加更多的data file到tablespace。下来我们创建一个使用log file group为lg_cloudstor名为 ts_cloudstore的表空间,这个表空间包含cloudstore_data_1.dbf和cloudstore_data_2.dbf两个data file,初始大小为100M(默认为128M),自动扩展为10M。

CREATE TABLESPACE ts_cloudstore

ADD DATAFILE 'cloudstore_data_1.dbf'

USE LOGFILE GROUP lg_cloudstor

INITIAL_SIZE 100M

AUTOEXTEND_SIZE 10M

ENGINE NDBCLUSTER;

添加新的datafile

ALTER TABLESPACE ts_cloudstore

ADD DATAFILE 'cloudstore_data_2.dbf'

INITIAL_SIZE 100M

AUTOEXTEND_SIZE 10M

ENGINE NDBCLUSTER;

下来我们可以看下新建的这些文件在物理磁盘上的数据文件:

2.6、创建磁盘表

下来创建一个将没有索引的列存储在表空间ts_cloudstore的磁盘表。

create table Disktable

(

id int auto_increment primary key,

c1 varchar(50) not null,

c2 varchar(30) default null,

c3 date default null,

index(c1)

)

TABLESPACE ts_cloudstore STORAGE DISK

ENGINE NDBCLUSTER;

这样,列c2,c3的数据将会存储在磁盘上,id和c1的数据仍会存储在内存中,因为只有没有索引的列才能存储在磁盘上。创建完成后,就可以进行正常的数据操作了。

log file group,tablespaces,Disk Data tables需要按照一定的顺序执行,删除这些的时候也是这样,删除规则为:有任何表空间使用log file group时,log file group不能删除;表空间含有任何data files的时候,不能删除表空间;Data files含有任何表残余的时候,不能从表空间删除数据文件。

2.7、删除数据表

drop table Disktable;

2.8、删除数据文件

当没有表在关联到表空间的时候,我们一个一个删除data files。

alter tablespace ts_cloudstore

drop datafile 'cloudstore_data_1.dbf'

engine ndbcluster;

alter tablespace ts_cloudstore

drop datafile 'cloudstore_data_2.dbf'

engine ndbcluster;

2.9、删除表空间

drop tablespace ts_cloudstore

engine ndbcluster;

2.10、删除日志组

drop logfile group lg_cloudstor

engine ndbcluster;

下来查看物理文件是否已经删除:

可以在INFORMATION_SCHEMA数据库中的FILES表中查看磁盘表的信息。

2.11、几点注意的

在磁盘数据表中,TEXT和BLOB列的前256bytes存储在内存中,剩余内容存储在磁盘上;磁盘表中的每一行需要在内存中存储8bytes的数据用于指向磁盘上的数据,使用--initial选项启动集群时,不会删除磁盘上的数据文件,必须手动删除。

mysql cluster 查看数据库表名称_MySQL Cluster如何创建磁盘表方法解读相关推荐

  1. Mysql——》查看数据库表结构

    版权声明:本文为博主原创文章,无需授权即可转载,甚至无需保留以上版权声明,转载时请务必注明作者. https://blog.csdn.net/weixin_43453386/article/detai ...

  2. MySQL之查看数据库编码

    MySQL之查看数据库编码 转载于:https://www.cnblogs.com/jums/p/10601606.html

  3. mysql怎么导出所有的表名称_MYSQL导出表名(navicat 导出表名称)

    MYSQL如何只导出数据库中表的的名字?navicat中如何只导出数据库内表的名称,不导出字段名 方式一: 1.打开navicat,进入你想导出表名称的库内,新建查询: 2.录入:show table ...

  4. mysql怎么查看是否存在死锁_mysql怎么查看有没有死锁

    我就废话不多说了,大家还是直接看代码吧~create or replace function aa1(a1 integer[],a2 bigint) returns void AS $$declare ...

  5. mysql 多表备份_mysql备份与恢复多库多表备份

    实例:备份:mysqldump -u root -p'123456' kaliboy>/opt/kaliboy.sql 指定字符集备份:mysqldump -u root -p'123456'  ...

  6. mysql如何备份一个表单_Mysql亿级数据大表单表备份

    上一篇Mysql已有亿级数据大表按时间分区,介绍了亿级数据大表如何按时间分区,也留下了一个问题:备份亿级数据大表要耗时多久.本篇将就如何备份亿级数据大表展开讨论. 注意:我这里所说的备份指的是数据从一 ...

  7. mysql如何查看数据库相关信息

    使用MySQL时,需要了解当前数据库的情况,例如当前的数据库大小.字符集.用户等等.下面总结了一些查看数据库相关信息的命令 原文网址: https://www.cnblogs.com/jiangxia ...

  8. 阿里云mysql怎么查看数据库_阿里云服务器如何查看数据库

    阿里云服务器如何查看数据库,阿里云上布数据库. 在阿里云ecs云服务器上部署数据库后,在平常的操作中可能会遇到些问题,可以先做个大致的了解: 如果您想看更多的在ecs上的数据库的相关操作,请前往以下两 ...

  9. mysql赋予用户数据库所有权限_MySQL 数据库赋予用户权限操作表

    MySQL清空数据库的操作:truncate table tablename; MySQL 赋予用户权限命令的简单格式可概括为:grant 权限 on 数据库对象 to 用户 一.grant 普通数据 ...

最新文章

  1. 2.5Gb/s混合集成光发射机
  2. HDU3657Game(最大流)
  3. Jquery Mobile转场特效之slide | 小小iPhone开发
  4. boost.asio学习
  5. c语言规范标准中英文,C语言中英文翻译资料.doc
  6. OJ1089: 阶乘的最高位(C语言)
  7. PHP 获取微视无水印源地址_PHP快速实现解析无水印播放地址URL——快手篇
  8. Android开机动画的动态替换
  9. 海康 安全码 修改密码_「海康威视客户服务」“通道被锁定”“网络不可达”“未认证的设备”……NVR4.0 Lite通道专题来袭!...
  10. Animation之闪烁的星星
  11. hive基本用法及细节记录
  12. 线程池原理初探以及源码分析(详解)
  13. Uncaught ReferenceError: regeneratorRuntime is not defined 解决方法
  14. 安装MongoDB出现 service MongoDB failed to start,verify that you have sufficient privileges to start
  15. Java方法excel文件转换成xml文件
  16. List------数据结构
  17. JAVA入门_继承与重载_饲养员喂养动物
  18. 运行时错误‘-2147467259(80004005)’
  19. 2019计算机调剂武汉大学,2019年武汉大学电子信息学院考研调剂信息
  20. 海康经纬度 转换 GPS坐标

热门文章

  1. 数据结构探险——栈篇
  2. Oracle client 安装、配置
  3. 面向对象与软件工程—团队作业1
  4. 使用Vue写一个登陆页面并在管理页面查看和修改
  5. recovery.conf 用于 stream replication
  6. luogu P1046 陶陶摘苹果
  7. 注册tomcat为服务
  8. C# WebBrower1控件提示“该文档已被修改,是否保存修改结果”解决方法 .
  9. 事件冒泡控件示例(转载)
  10. Android 7.1 bootchart触发后导致不断重启