• mysql cluster排错经验分享



    mysql cluster排错经验分享

     

    折腾mysql cluster有一段时间了,期间遇到了很多问题,也翻看了不少关于mysql cluster的文档,学习到了很多经验,下面就将在mysql cluster下的排错步骤和方法和大家分享下!

    mysql cluster中很多时候都会直接返回错误,让你一看就知道问题出在什么地方,举几个明显报错的例子:

    The table 'test' is full

    FATAL: failed to create test table!

    很明显,这是说表已经慢了,没有空间了。需要检查你的DataMemoryIndexMemory的空间,如果采用硬盘存储表的话,还要检查数据文件的空间

    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    

    这个也是很明显,表单行数据太大,需要更改表结构,因为mysql cluster最大单行数据的大小为8KB

    另外一个例子是,当你导入大量数据的时候,出现如下报错:

    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或和NoOfFragmentLogFiles参数的值

     

    但是在mysql cluster中,很多报错是不太明显的,从报错中很难看出是什么问题,因此我们就需要一些日志文件的辅助,比如:

    Error handler restarting system (unknown type: xxxxxxxxxxx)

    Error handler shutdown completed - exiting

    看了这个报错以后,你会觉得不知所措,要获取更多的信息就需要查看日志文件,发生错误以后有两个地方能查看到问题的蛛丝马迹,第一个地方是数据节点的DataDir目录,文件名为ndb_xxxx_error.log,xxxx为在config.ini中设置的id号,还是上面的报错,在这个文件中显示的信息如下:

    Type of error: error

    Message: Invalid Configuration fetched from Management Server

    Fault ID: 2350

    Problem data: Unable to alloc node id

    Object of reference: Could not alloc node id at 10.0.0.1 port 1186:

    Connection done from wrong host imp 10.0.0.99.

    ProgramName: ndbd

    ProcessID: 2644

    TraceFile: <no tracefile>

    Version 5.0.11 (beta)

    ***EOM***

    从这里我们就清楚的知道了是什么问题了,是因为10.0.0.99这个ipconfig.ini中没有设置,因此这里显示为wrong host

    第二个地方是管理节点的日志,文件名为ndb_XXXX_cluster.logXXXX为你设置的id号,也可以在config.ini直接指定日志文件的名字,比如:LogDestination=FILE:filename=ndb_1_cluster.log,maxsize=10000000,maxfiles=6,上面那个报错,在这个文件中显示为:

    2005-08-31 12:21:52 [MgmSrvr] WARNING  -- Allocate nodeid (0) failed.

    Connection from ip 10.0.0.99.

    Returned error string "Connection done from wrong host ip 10.0.0.99."

    一般的问题都可以从这两个文件中找到蛛丝马迹,这样对我们处理问题就会更加有针对性,而不会像无头苍蝇,浪费了很多时间。

     

    在排错的时候,还有几个技巧拿出来和大家分享。

    1、一般,报错的时候都会有error code。比如ERROR 1504Error: 2303等等,遇到这些报错,我们可以先用mysql的报错工具perror查看,比如查看报错号为1504的错误,使用命令为: perror --ndb 1504

    2、在出现报错以后,查看WARNINGSERRORS信息,比如出现Error CODE : 1528 Failed TO CREATE LOGFILE GROUP后输入SHOW WARNINGS;,会显示出具体的报错信息:

      Got error 1504 'Out of logbuffer memory' FROM NDB

      Failed TO CREATE LOGFILE GROUP


    当你遇到的问题是在是不知道如何解决的时候,以下几个链接可以帮助你:
    1、www.google.com
    2、http://lists.mysql.com/cluster/
    3、http://forums.mysql.com/list.php?25
    还搞不定就去mysql官网提交bug吧,记得把日志文件打包上去。


    暂时写那么多,如果大家有更好的经验,欢迎留言



  • 相关阅读:
    Linux Shell脚本启动jar、关闭jar
    SpringBoot基于切面来拦截@PathVariable参数及抛出异常全局处理方法
    SpringBoot引用font awesome不显示问题的解决
    解决RestTemplate请求url出现301转发错误 301 Moved Permanently
    npm报错:Node Sass could not find a binding for your current environment: Windows 64-bit with Node.js 10.x
    npm 安装 chromedriver 失败的解决办法
    npm run dev报错 JS stacktrace(Node内存溢出)
    Mysql批量修改表字段名称为小写
    Ubuntu18 apt更换国内源 加快下载速度
    微信小程序如何实现支付宝支付?
  • 原文地址:https://www.cnblogs.com/feihongwuhen/p/7169972.html
Copyright © 2020-2023  润新知