前言
如果不做表分區和刪除歷史數據規則設置的話,隨着時間的推移zabbix的查詢性能會變得很低
查看zabbix的性能
通過zabbix的NVPS(每秒處理數值數)來衡量其性能,在zabbix的dashboard上有一個粗略的估值
數據庫優化
一、設置獨立表空間(innodb_file_per_table=1) # 5.6版本以上自動開啟 以上版本跳過這一段
1、刪除history數據
truncate history
truncate history_uint
2、備份數據
mysqldump -uroot -p123456 zabbix > zabbix.sql
3、開啟獨立表空間
innodb_file_per_table=1
4、還原數據
mysql -uroot -p123456 zabbix < zabbix.sql
5、重啟數據庫 # 先刪除ib_logfile0,ib_logfile1
/etc/init.d/mysqld restart
6、回收表空間(對應操作1)
optimize history
optimize history_uint
二、表分區
需要分區的表 # history* 有着一樣的字段,存儲着不同類型item的歷史數據。trend* 有着一樣的字段,存儲着不同類型item的歷史趨勢數據
history
history_log
history_str
history_text
history_uint
trends
trends_uint
表分區存儲過程詳細見 https://www.zabbix.org/wiki/Docs/howto/mysql_partition
加入計划任務
1 0 * * * /storage/server/mysql/bin/mysql -uroot -p123456 zabbix -e "CALL partition_maintenance_all('zabbix');"
參考:http://xianglinhu.blog.51cto.com/5787032/1700981