一、 导入数据的时候遇到以下报错:node
ERROR 1005 (HY000) at line 25: Can't create table 'tuge.pangolin_fnc_accountverification' (errno: 140)mysql
Error | 1296 | Got error 738 'Record too big' from NDB sql
分析缘由:表但行数据太大vim
解决办法:须要更改表结构,使最大单行数据的大小小于8KB!网络
二、 导入大量数据的时候遇到以下报错this
Error 1297: Got temporary error 'REDO' log overloaded. spa
ERROR : Got temporary error 1204 'Temporary failure, distribution changed' from NDBCLUSTERrest
ERROR : Got temporary error 1234 'REDO log files overloaded (increase disk hardware)' from NDBCLUSTER日志
分析缘由:遇到这个错误,是表示redo log用完了,须要增长orm
解决办法:修改config.ini文件,更改或添加以下参数:
FragmentLogFileSize=256M
NoOfFragmentLogFiles=16
NoOfFragmentLogFiles这个参数能够更改到更大,可是初始化的时候会慢一点
三、 在导入大量数据的时候,出现以下报错:
ERROR 1114 (HY000) at line 54: The table 'gps_led_sendadverthistory' 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=11480M
IndexMemory=1024M
根据实际状况加大
若是是采用磁盘表,磁盘文件空间不足的状况,就须要添加磁盘文件,格式以下:
ALTER TABLESPACE ts_1
ADD DATAFILE 'data_4.dat'
INITIAL_SIZE 10240M
ENGINE NDBCLUSTER;
四、 在还原的时候遇到以下报错:
Configuration error: Error : Could not alloc node id at 192.168.100.223 port 1186: Id 12 configured as ndbd(NDB), connect attempted as mysqld(API).
Unable to connect to management server.
分析缘由:由于还原的时候会去链接mysqld,而在配置ndb的时候没有添加空的mysqld节点,所以出现这个报错
解决办法:在config.ini添加几个空的mysqld节点,语法以下:
[MYSQLD]
[MYSQLD]
[MYSQLD]
[MYSQLD]
五、 导入大量数据的时候或者执行大量的insert或者update操做的时候,常常会出现以下报错:
ERROR 1297 (HY000) at line 1: Got temporary error 1218 'Send Buffers overloaded in NDB kernel' from NDBCLUSTER
这个报错的缘由有几个,第1、是参数SendBufferMemory设置太小,第2、和mysqld的二进制日志有关系,第3、和网络环境有关系
解决办法:查看网络环境是否OK ,是否出现双工模式部队,是否都是千兆网或者百兆网,加大SendBufferMemory的设置,通常2M就够了,设置TotalSendBufferMemory = 256M,最后若是仍是出现如此报错,建议关闭mysql的二进制日志,在my.cnf中注释掉相关的参数就能够了,好比:
#log-bin=mysql-bin
六、 错误日志
Status: Temporary error, restart node
Message: System error, node killed during node restart by other node (Internal error, programming error or missing error message, please report a bug)
Error: 2303
Error data: Node 12 killed this node because GCP stop was detected
Error object: NDBCNTR (Line: 273) 0x00000006
分析缘由:这个问题是由于undo日志文件空间用完了!
解决办法:增长undo日志空间文件,语法以下:
ALTER LOGFILE GROUP lg_1
ADD UNDOFILE 'undo_2.log'
INITIAL_SIZE 2048M
ENGINE NDBCLUSTER;
七、 还原的时候出现以下报错:
Temporary error: 266: Time-out in NDB, probably caused by deadlock
分析缘由:出现这个问题是锁定超过1.2s
解决办法:在config.ini中加入:TransactionDeadLockDetectionTimeOut=10000 默认是1200
八、 建立日志文件组的时候,出现以下报错:
Error CODE : 1528 Failed TO CREATE LOGFILE GROUP
用SHOW WARNINGS; 查看详细报错以下:
Got error 1504 'Out of logbuffer memory' FROM NDB
Failed TO CREATE LOGFILE GROUP
分析缘由:是由于SharedGlobalMemory的值比UNDO_BUFFER_SIZE小致使错误
解决办法:把SharedGlobalMemory调大,原来个人UNDO_BUFFER_SIZE为128,可是个人SharedGlobalMemory为80,将SharedGlobalMemory设置成384M解决问题
9.查看集群状态
#显示管理节点和数据节点则配置成功
ndb_mgm -e show
##出错:
全部节点正常启动,可是显示一直链接不上
ndb_mgm> show
Connected to Management Server at: 10.10.54.57:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 (not connected, accepting connect from 10.10.54.56)
id=3 (not connected, accepting connect from 10.10.54.58)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @10.10.54.57 (mysql-5.5.35 ndb-7.2.15)
[mysqld(API)] 5 node(s)
id=10 (not connected, accepting connect from 10.10.54.56)
id=11 (not connected, accepting connect from 10.10.54.58)
id=12 (not connected, accepting connect from any host)
id=13 (not connected, accepting connect from any host)
id=14 (not connected, accepting connect from any host)
//查看日志:
[root@xiao56 ndb]# vim ndb_2_out.log
[ndbd] ERROR -- ndbd_malloc_impl.cpp:619:grow(155414, 2061) not using 64Mb - Unable to use due to bitmap pages missaligned!!
解决方法:把DataMemory和IndexMemory的值调小
DataMemory=256M
IndexMemory=64M
#一个NDB节点能存放的数据量是会受到DataMemory和IndexMemory两个参数设置的约束,二者任何一个达到限制数量后,都没法再增长能存储的数据量。若是继续存入数据系统会报错“table is full”。