[技术干货] 解决Zabbix添加/克隆主机SQL报错问题

[复制链接]
乐维 发表于 2020-11-11 09:22:30 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
问题场景分析:
1、 通常是出现在删除某个监控主机,然后重新添加回来,数据库关联的外键没有删除干净;
2、 数据库架构问题,例如高可用的主主架构,如果某些事项不注意,例如每个系统时间不同步,会导致数据写入延迟或出错;
3、 zabbix在运行一段时间后,由于默认的自增长等外键大小限制问题。
解决方法:
1、 搭建NTP同步时间服务器,设置定时任务,每个多久执行一次时间同步,教程请参考以下链接:
2、 当出现添加/克隆 [10.127.3.4XXXXX]主机失败。错误信息(SQL statement execution has failed “INSERT INTO XXXX”)等类似的问题,可以通过update语句把报错的表的有关联外键xxxid的字段更新。
举例:
如图一下所示,当出现 INSERT INTO items …… Duplicae entry ‘69263’ for key ‘PRIMARY’,意思是和某个对象的itemid重复了,很多的表是通过itemsitemid字段关联的,也就是外键;
1.png
解决办法,登录数据库执行下面的update语句即可:
UPDATE ids set nextid=(select max(itemid) from items) where  table_name=”items”;
    图二是执行图一的SQL后,添加主机的报错,这里也是通过triggerid 关联的,因为在删除主机的时候,没有删除干净,再添加时,触发器不能创建。执行下面的语句即可:
    UPDATE ids set nextid=(select max(triggerid) from triggers) where  table_name=”triggers”;
图二
2.png
同理,出现图三的问题,SQL statement execution had failed “INSERT INTO item_discovery ……”这里的itemid是和itemsitemid关联的,也是执行update语句:
UPDATE ids set nextid=(select max(itemid) from item_discovery) where  table_name=”item_discovery”;
图三
3.png
总之,如果有其他的表也报错,也是执行相应的update语句,根据报错提示,update相关的表的xxxid字段即可。

技术交流欢迎加入Q群:177428068





上一篇:Zabbix“专家坐诊”第83期问答汇总
下一篇:Zabbix“专家坐诊”第84期问答汇总
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝0

帖子256

发布主题

乐维社区

微信公众号

版权所有 © 2016-2019 九一乐维丨粤ICP备17007026号