【推荐】MySQL Cluster报错及解决方法(不断更新中)
排查问题技巧:
MySQL Cluster 自带了一个错误代码的查看的小程序。通过这个小东西我们可以方便的定位问题的原因。 这个程序就是 perror 在MYSQL安装目录的bin下面。
如报错:ERROR 1005 (HY000) at line 474868: Can't create table 'Table Name'(errno: 136)
你可以用perror命令查询 错误原因:
#/usr/local/mysql/bin/perror --ndb 136
MySQL error code 136: No more room in index file
通过它的解释 我们把 index的相关选项改高一些。如下: (依实际情况决定数值大小)
MaxNoOfTables: 1024
MaxNoOfOrderedIndexes: 1024
MaxNoOfUniqueHashIndexes: 1024
这样问题就能解决了。
问题1:在线添加节点后使用 ALTER ONLINE TABLE TABLENAME REORGANIZE PARTITIO N命令 将表数据在数据节点上重新分配时报错:
mysql> alter online table Billinfo reorganize partition;
ERROR 1297 (HY000): Got temporary error 410 'REDO log files overloaded (decrease TimeBetweenLocalCheckpoints or increase
NoOfFragmentLogFiles)' from NDBCLUSTER
解决方法:
调整管理节点上的config.ini配置文件里[ndbd default]下的 TimeBetweenLocalCheckpoints 值和 FragmentLogFileSize 值
TimeBetweenLocalCheckpoints 参数:
Default value = 20
Changed it to TimeBetweenLocalCheckpoints =6
Setting TimeBetweenLocalCheckpoints to 6 or less means that local checkpoints will be executed continuously without pause, independent of the cluster's workload.
FragmentLogFileSize 参数:
Default value = 16M
Changed it to FragmentLogFileSize=256M
Setting this parameter allows you to control directly the size of the redo log files. This can be useful in situations when MySQL Cluster is operating under a high load and it is unable to close fragment log files quickly enough before attempting to open new ones. Increasing the size of the fragment log files gives the cluster more time before having to open each new fragment log file.
问题2:插入数据时,报错ERROR 1297 (HY000): Got temporary error 4010 'Node failure caused abort of transaction' from NDBCLUSTER,数据节点强制关闭。
解决方法: 加大:MaxNoOfConcurrentTransactions 和 MaxNoOfConcurrentOperations 参数
问题3:ERROR 1297 (HY000) at line 1872: Got temporary error 410 'REDO log files overloaded, consult online manual (decrease TimeBetweenLocalCheckpoints, and|or incre' from NDBCLUSTER
Solution : Modify / Add parameter TimeBetweenLocalCheckpoints in your config.ini.
Default value = 20
Changed it to TimeBetweenLocalCheckpoints =6
Setting TimeBetweenLocalCheckpoints to 6 or less means that local checkpoints will be executed continuously without pause, independent of the cluster's workload.
问题4:error 2815: 'File not found(Ndbd file system inconsistency error, please report a bug). Ndbd file system error, restart node initial'.
解决方法:增大config.ini文件中的 NoOfFragmentLogFiles 和 RedoBuffer 参数
问题5:错误日志:
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)Ox000006
原因:这个问题是因为undo日志空间文件 用完了。
解决方法:增加 undo日志空间文件 ,语法如下
alter logfile group lg_1 add undofile 'undo_2.log' initial_size 1024M engine ndbcluster;
参考:http://blog.csdn.net/chenxingzhen001/article/details/7598167
NDB常见错误指南
在安装和使用mysql cluster集群的过程中,遇到了很多问题,现在把那些问题列出来,并复上解决方法,希望大家在以后的使用中能少花时间少走弯路:
1、导入数据的时候遇到如下报错
ERROR 1005 (HY000) at line 25: Can't create table 'tuge.pangolin_fnc_accountverification' (errno: 140)
Error | 1296 | Got error 738 'Record too big' from NDB
分析原因:表行数据太大
解决办法:需要更改表结构,使最大单行数据的大小小于8KB!
2、导入大量数据的时候遇到如下报错
Error 1297: Got temporary error 'REDO' log overloaded.
ERROR : Got temporary error 1204 'Temporary failure, distribution changed' from NDBCLUSTER
ERROR : Got temporary error 1234 'REDO log files overloaded (increase disk hardware)' from NDBCLUSTER
分析原因:遇到这个错误,是表示redo log用完了,需要增加
解决办法:修改config.ini文件,更改或添加如下参数:
FragmentLogFileSize=256M
NoOfFragmentLogFiles=16
NoOfFragmentLogFiles这个参数可以更改到更大,但是初始化的时候会慢一点
3、在导入大量数据的时候,出现如下报错:
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;
4、在还原的时候遇到如下报错:
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]
5、导入大量数据的时候或者执行大量的insert或者update操作的时候,经常会出现如下报错:
ERROR 1297 (HY000) at line 1: Got temporary error 1218 'Send Buffers overloaded in NDB kernel' from NDBCLUSTER
这个报错的原因有几个,第一、是参数SendBufferMemory设置过小,第二、和mysqld的二进制日志有关系,第三、和网络环境有关系
解决办法:查看网络环境是否OK ,是否出现双工模式部队,是否都是千兆网或者百兆网,加大SendBufferMemory的设置,一般2M就够了,设置TotalSendBufferMemory = 256M,最后如果还是出现如此报错,建议关闭mysql的二进制日志,在my.cnf中注释掉相关的参数就可以了,比如:
#log-bin=mysql-bin
6、错误日志
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;
7、还原的时候出现如下报错:
Temporary error: 266: Time-out in NDB, probably caused by deadlock
分析原因:出现这个问题是锁定超过1.2s
解决办法:在config.ini中加入:TransactionDeadLockDetectionTimeOut=10000 默认是1200
8、创建日志文件组的时候,出现如下报错:
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解决问题。
参考:http://blog.chinaunix.net/uid-20682026-id-3257100.html
【个人实践】在SQL语言数据还原时,遇到如下问题:
问题1:导入“数据表结构”前,要做如下替换处理
(1).将引擎 ENGINE=MyISAM 和 ENGINE=InnoDB 为 ENGINE=ndbcluster;
(2).把类似 KEY `user_guid` (`user_guid`) USING HASH 中的 USING HASH 去掉,否则会出现类型“#1112 - Table 'tk_user' uses an extension that doesn't exist in this MySQL version”的错误;
问题3:ERROR 1114 (HY000) at line 209502: The table 'tk_feed' is full
ndb_mgm> Node 12: Data usage decreased to 80%(2073 32K pages of total 2560)
Node 11: Data usage decreased to 78%(2012 32K pages of total 2560)
Node 12: Data usage decreased to 78%(2006 32K pages of total 2560)
Node 11: Data usage increased to 80%(2053 32K pages of total 2560)
Node 12: Data usage increased to 80%(2064 32K pages of total 2560)
Node 12: Data usage increased to 90%(2304 32K pages of total 2560)
解决方法:调整如下参数
DataMemory=15000M
IndexMemory=2560M
参考:http://stackoverflow.com/questions/5641156/mysql-cluster-the-table-is-full-workaround
问题4:ERROR 1297 (HY000) at line 421616: Got temporary error 4010 'Node failure caused abort of transaction' from NDBCLUSTER
解决方法:调整如下参数
MaxNoOfConcurrentTransactions = 16384
MaxNoOfConcurrentOperations = 100000
MaxNoOfLocalOperations = 100000
按照上面调整了参数,但“sql语言数据还原”时,还是报上面的错,最后通过继续修改如下参数,问题才给解决(泪奔):
FragmentLogFileSize = 256M
NoOfFragmentLogFiles = 16
其他参考:
【推荐】MySQL Cluster测试过程中的错误汇总--ERROR 1296 (HY000)等等
【推荐】MySQL Cluster报错及解决方法(不断更新中)的更多相关文章
- 数据库安装后无法访问且mysql重启报错的解决方法
数据库安装后无法访问,mysql重启报错: 或报错:MySQL is running but PID file could not be found 解决方法: 第一种方法:看磁盘是否已满:df –h ...
- DBeaver、Navicat、MySQL高频报错及解决方法,此文持续更新
目录 第一坑,没有用管理员身份 第二坑,MySQL 服务无法启动 第三坑,报错:ERROR 1045 (28000): Access denied for user 'root'@'localhost ...
- MySQL主从复制报错及解决方法
mysql> show slave status \G *************************** 1. row *************************** Slave_ ...
- MySQL中遇到的几种报错及其解决方法
MySQL中遇到的几种报错及其解决方法 1.[Err] 1064 - You have an error in your SQL syntax; check the manual that corre ...
- Loadrunner参数化连接oracle、mysql数据源报错及解决办法
Loadrunner参数化连接oracle.mysql数据源报错及解决办法 (本人系统是Win7 64, 两位小伙伴因为是默认安装lr,安装在 最终参数化的时候,出现连接字符串无法自动加载出来: 最 ...
- ArcGIS API for Silverlight 调用WebService出现跨域访问报错的解决方法
原文:ArcGIS API for Silverlight 调用WebService出现跨域访问报错的解决方法 群里好几个朋友都提到过这样的问题,说他们在Silverlight中调用了WebServi ...
- 网站eurl.axd报错的解决方法
网站eurl.axd报错的解决方法 错误发生的原因是当ASP.NET检测到Web站点配置为使用ASP.NET 4.0,本地ASP.NET 4.0 的组件会传递一个不能扩展的 URL到ASP.NET的管 ...
- vue项目初始化时npm run dev报错webpack-dev-server解决方法
vue项目初始化时npm run dev报错webpack-dev-server解决方法 原因:这是新版webpack存在的BUG,卸载现有的新版本webpack,装老版本就好webpack-dev- ...
- Vue 项目在其他电脑 npm run dev 运行报错的解决方法
一个 Vue 项目从一台电脑上传到 github 上之后,再另外一台电脑上 git clone .并使用 npm run dev 或 npm run start 发生以下报错的解决方法. 报错原因 ...
随机推荐
- SQL高级查询:嵌套和分页
1.嵌套子查询 --查询最近一次oop考试没有参加考试的学生 select StudentName from Student where StudentNo not in( select Studen ...
- MySQL 笔记2
-- *************一.数据约束********************---- -- 1.1 默认值 CREATE TABLE student( id INT, NAME ), addr ...
- PAT 1035. 插入与归并(25)
根据维基百科的定义: 插入排序是迭代算法,逐一获得输入数据,逐步产生有序的输出序列.每步迭代中,算法从输入序列中取出一元素,将之插入有序序列中正确的位置.如此迭代直到全部元素有序. 归并排序进行如下迭 ...
- Linux Linux程序练习十九
题目:编写一个同步服务器模型 要求: )客户端A主机给服务器B主机发送报文, )B服务器主机收到报文以后同时分发给C1主机.C2主机: )C1主机和C2主机打印出客户端A的报文 bug总结:本来这道题 ...
- c# 调用c++DLL方法及注意事项
引用命名空间 using System.Runtime.InteropServices 调用方法: 一.静态加载 用DllImprot方式来加载c++DLL.如下格式: //对应c++方法 //voi ...
- Javascript:来一个AJAX封装函数
前不久换工作了,最近一直在出差,忙得跟狗一样,所以博客都荒废许久了. 最近的工作中涉及到大量的ajax操作,本来该后台做的事也要我来做了.而现在使用的ajax函数是一个后台人员封装的—-但他又是基于 ...
- 在WebAPI使用Session
最近在改写WebApp时要将以前用泛型处理例程写的Captcha 改成使用WebApi 来实作机制,在实作的过程中发现使用IRequiresSessionState session也无法使用(cont ...
- WPF实现物理效果 拉一个小球
一直以来都对物理效果有神秘感,完全不知道怎么实现的.直到看到了周银辉在老早前写的一篇博客:http://www.cnblogs.com/zhouyinhui/archive/2007/06/23/79 ...
- C#软件设计——小话设计模式原则之:单一职责原则SRP
前言:上篇C#软件设计——小话设计模式原则之:依赖倒置原则DIP简单介绍了下依赖倒置的由来以及使用,中间插了两篇WebApi的文章,这篇还是回归正题,继续来写写设计模式另一个重要的原则:单一职责原则. ...
- python命令行下安装redis客户端
1. 安装文件: https://pypi.python.org/pypi/setuptools 直接下载然后拷贝到python目录下同下面步骤 下载 ez_setup.py>>> ...