Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7487235
  • 博文数量: 368
  • 博客积分: 9600
  • 博客等级: 上校
  • 技术积分: 18875
  • 用 户 组: 普通用户
  • 注册时间: 2009-01-01 00:00
文章分类

全部博文(368)

文章存档

2017年(9)

2016年(19)

2015年(3)

2014年(6)

2013年(8)

2012年(78)

2011年(66)

2010年(135)

2009年(44)

分类: Mysql/postgreSQL

2011-04-01 10:42:33

    在操作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注释,能回避这个错误!
阅读(2441) | 评论(1) | 转发(2) |
给主人留下些什么吧!~~

kerlion2012-01-19 17:18:41

我也遇到同样的问题