1、 通常是出现在删除某个监控主机,然后重新添加回来,数据库关联的外键没有删除干净;
2、 数据库架构问题,例如高可用的主主架构,如果某些事项不注意,例如每个系统时间不同步,会导致数据写入延迟或出错;
3、 zabbix在运行一段时间后,由于默认的自增长等外键大小限制问题。
解决方法:
1、 搭建NTP同步时间服务器,设置定时任务,每个多久执行一次时间同步,教程请参考以下链接:
https://blog.51cto.com/14483703/2437662
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重复了,很多的表是通过items的itemid字段关联的,也就是外键;
解决办法,登录数据库执行下面的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”;
图二
同理,出现图三的问题,SQL statement execution had failed “INSERT INTO item_discovery ……”这里的itemid是和items的itemid关联的,也是执行update语句:
UPDATE ids set nextid=(select max(itemid) from item_discovery) where table_name=”item_discovery”;
图三
总之,如果有其他的表也报错,也是执行相应的update语句,根据报错提示,update相关的表的xxxid字段即可。
技术交流欢迎加入Q群:177428068