运维开发网

解决Zabbix添加/克隆主机SQL报错问题

运维开发网 https://www.qedev.com 2020-11-12 12:47 出处:51CTO 作者:Zabbix_Z大叔
数据库架构问题,例如高可用的主主架构,如果某些事项不注意,例如每个系统时间不同步,会导致数据写入延迟或出错

问题场景分析:

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字段关联的,也就是外键;

解决Zabbix添加/克隆主机SQL报错问题

解决办法,登录数据库执行下面的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”;

图二

解决Zabbix添加/克隆主机SQL报错问题

同理,出现图三的问题,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”;

图三

解决Zabbix添加/克隆主机SQL报错问题

总之,如果有其他的表也报错,也是执行相应的update语句,根据报错提示,update相关的表的xxxid字段即可。

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

0

精彩评论

暂无评论...
验证码 换一张
取 消