Mysql ERROR 1114 集群空间报错及解决方案

Mysql ERROR 1114 集群空间报错及解决方案最近一直在不停的测试mysql的各种高可用方案。 Mysql目前的高可用方案有蛮多的,架构上有MM,MMM,MHA,Cluster 等等。 其中

欢迎大家来到IT世界,在知识的湖畔探索吧!

最近一直在不停的测试mysql的各种高可用方案。 Mysql目前的高可用方案有蛮多的,架构上有MM,MMM,MHA,Cluster 等等。 其中Cluster是真正的集群解决方案, 只是用的人太少了,几乎没啥实际的例子,还停留的口头阶段。但是没办法,既然要选择,还是得对比才行。

经过大概2周的测试,发现Mysql Cluster问题还真不是一般的多,性能,存储等等。怪不得没人敢用,需要前进的路还很长。

Mysql cluster的实施方案太多了,网上一抓一大把, 今天就分享个遇到的问题,和大家共同探讨。错误发生在cluster建好之后,向里面导入数据的过程中:

ERROR 1114 (HY000) at line 54: The table ‘customer_info’ is full

可能的原因:分配的内存或者硬盘空间已经用完(如果你采用磁盘表的话),需要通过ndb管理节点客户端和登录mysql查看具体的原因,通过ndb_mgm登录,执行命令:

All report memory看下分配的内存是否使用完,如果采用磁盘表的,还需要登录mysqld节点,然后执行如下查询,来确定是否是磁盘不足:

SELECT TABLESPACE_NAME, FILE_NAME, EXTENT_SIZE*TOTAL_EXTENTS/1024/1024 AS TOTAL_MB, EXTENT_SIZE*FREE_EXTENTS/1024/1024 AS FREE_MB, EXTRA FROM information_schema.FILES WHERE FILE_TYPE=”DATAFILE”;

解决办法:如果是数据内存不足的情况,直接更改文件config.ini中[NDBD DEFAULT]下的

DataMemory=20000M

IndexMemory=3096M

根据实际情况加大

如果是采用磁盘表,磁盘文件空间不足的情况,就需要添加磁盘文件,格式如下:

CREATE TABLESPACE ts_mycluster

ADD DATAFILE ‘mycluster_data_1.dbf’

USE LOGFILE GROUP lg_mycluster

INITIAL_SIZE 5000M

AUTOEXTEND_SIZE 200M

ENGINE NDBCLUSTER;

磁盘表使用时还要使用undo log, 详细创建步骤如下:

Note: 一旦mgmd 或者 ndbd 初始化(–initial),磁盘表将会丢失,但是数据文件还存在,需要手工删除

1.log file group

CREATE LOGFILE GROUP lg_mycluster

ADD UNDOFILE ‘mycluster_undo_1.log’

INITIAL_SIZE 200M

UNDO_BUFFER_SIZE 20M

ENGINE NDBCLUSTER;

–添加

ALTER LOGFILE GROUP lg_mycluster

ADD UNDOFILE ‘mycluster_undo_2.log’

INITIAL_SIZE 100M

ENGINE NDBCLUSTER;

2.创建tablespace

CREATE TABLESPACE ts_mycluster

ADD DATAFILE ‘mycluster_data_1.dbf’

USE LOGFILE GROUP lg_mycluster

INITIAL_SIZE 100M

AUTOEXTEND_SIZE 10M

ENGINE NDBCLUSTER;

–添加

ALTER TABLESPACE ts_mycluster

ADD DATAFILE ‘mycluster_data_2.dbf’

INITIAL_SIZE 100M

AUTOEXTEND_SIZE 10M

ENGINE NDBCLUSTER;

datafile 使用率:

SELECT TABLESPACE_NAME, FILE_NAME, EXTENT_SIZE*TOTAL_EXTENTS/1024/1024 AS TOTAL_MB, EXTENT_SIZE*FREE_EXTENTS/1024/1024 AS FREE_MB, EXTRA FROM information_schema.FILES WHERE FILE_TYPE=”DATAFILE”;

3.创建磁盘表

create table customer_info

(

id int auto_increment primary key,

customer_name varchar(50) not null,

customer_vname varchar(30) default null,

register_date date default null,

index(customer_name)

)

TABLESPACE ts_mycluster STORAGE DISK ENGINE NDBCLUSTER;

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

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

—-删除数据表

drop table Disktable;

—-删除数据文件

alter tablespace ts_myclustere drop datafile ‘mycluster_data_1.dbf’ engine ndbcluster;

alter tablespace ts_myclustere drop datafile ‘mycluster_data_2.dbf’ engine ndbcluster;

—-删除表空间

drop tablespace ts_mycluster engine ndbcluster;

—-删除日志组

drop logfile group lg_mycluster engine ndbcluster;

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

show create table命令生成的SQL并不能正确反映是内存表还是磁盘表,应使用ndb_desc工具来查看。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/22573.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信