• 关于Temporary error: 1218错误的思考


        在操作mysql cluster的时候,尤其是涉及到数据更新,比如大批量的insert语句、利用ndb_restore还原数据库的时候,经常会出现Temporary error: 1218: Send Buffers overloaded in NDB kernel的错误。出现这个错误是因为SendBufferMemory的使用已经超过了一定的比值,默认是0.8.
       搜索网上的一些解决办法无非是加大SendBufferMemory的值以及TotalSendBufferMemory的值,查看到官网的mysql cluster的论坛说是那个东西和mysql的日志有关系,建议彻底关闭log。这个解决办法的却很让人郁闷。通过我不停的实验,发现这个和你的网路情况有很大的关系,我的环境是因为有一个节点的网络是100M的,其他的都是1000M,当我把那个节点的带宽调整到1000M时,那个问题再没出现过。对此,我分析可能由于ndb是网络数据库,当网络情况不好的时候,会导致发送内容堆积在SendBufferMemory,从而导致1218错误的发生。
        如果你的mysql cluster经常出现这样的错误,请检查你的mysql cluster的网络环境,以及用ethtool查看每个节点上的带宽。

        如果还不能解决这个问题,请临时的暂停日志记录,比如在配置文件中注释掉log-bin=mysql-bin,然后重启mysqld节点,这个可以临时解决这个问题,希望这篇文章对大家有帮助!


    备注:经过本人的反复实践,发现这个参数和mysql的二进制日志关系很密切,所以在导入大量数据的时候,吧log-bin=mysql-bin注释,能回避这个错误!
  • 相关阅读:
    顺序栈用C语言实现
    对队列的操作和算法
    对链表的操作与算法
    对动态数组的操作与算法
    链表
    冒泡排序
    指针之动态分配内存
    字符串匹配KMP算法
    DS二叉树--层次遍历
    DS图--最小生成树
  • 原文地址:https://www.cnblogs.com/feihongwuhen/p/7170056.html
Copyright © 2020-2023  润新知