1. 问题:
zabbix_server日志出现大量如下错误:
query failed: [1526] Table has no partition for value 1507509984
2. 解决
查看zabbix的数据库,看看有没有如下几个存储过程:
partition_create
partition_drop
partition_maintenance
partition_maintenance_all
partition_verify
可能会没有partition_maintenance_all,可以按照官方文档给出的sql语句创建:
https://www.zabbix.org/wiki/Docs/howto/mysql_partition#Parameters
DELIMITER $$ CREATE PROCEDURE `partition_maintenance_all`(SCHEMA_NAME VARCHAR(32)) BEGIN CALL partition_maintenance(SCHEMA_NAME, 'history', 28, 24, 14); CALL partition_maintenance(SCHEMA_NAME, 'history_log', 28, 24, 14); CALL partition_maintenance(SCHEMA_NAME, 'history_str', 28, 24, 14); CALL partition_maintenance(SCHEMA_NAME, 'history_text', 28, 24, 14); CALL partition_maintenance(SCHEMA_NAME, 'history_uint', 28, 24, 14); CALL partition_maintenance(SCHEMA_NAME, 'trends', 730, 24, 14); CALL partition_maintenance(SCHEMA_NAME, 'trends_uint', 730, 24, 14); END$$ DELIMITER ;
有了这几个存储过程后,登录zabbix数据库执行以下sql语句:
CALL partition_maintenance_all(‘zabbix‘);
这个语句可能跑比较长的时间,耐心等待。
之后重启zabbix_server即可。
可以将这个语句放到crontab中跑,这样就不会出现这种情况了:
0 8 1 * * mysql -uzabbix -ppassword zabbix -e "CALL partition_maintenance_all('zabbix');"