前言:本文是对这篇博客Zabbix: Partitioning MySQL / MariaDB database Tables in 5 min的翻译,如有翻译不当的地方,敬请谅解,请尊重原创和翻译劳动成果,转载的时候请注明出处。谢谢!
英文地址:https://bestmonitoringtools.com/zabbix-partitioning-tables-on-mysql-database
在本教程中,我们将逐步学习如何使用分区脚本(partitioning script)在MySQL或MariaDB服务器上对Zabbix数据库(history和trends表)进行分区。
Zabbix从主机采集数据并将其存储在history和trends表中,Zabbix的history表中保存原始数据(Zabbix采集的每一个值),trends表中存储每小时内的合并数据,那些数据的平均值、最小值、最大值。
Zabbix的housekeeping进程负责删除trends表和history表中的旧数据。使用delete语句从数据库删除旧数据可能对数据库性能产生负面的性能影响。因此,我们中许多人都收到过令人讨厌的警报“Zabbix housekeeper processes more than 75% busy”
这个问题能够通过数据库分区方案轻松的解决。每小时或每一天为分区表创建一个分区,并在不需要它们的时候,删除这些分区。使用SQL删除分区比使用DELET语句删除数据更高效。
你可以将本教程用于任何Zabbix 3.0之后的版本(3.2、3.4、4.0、4.2、4.4、5.0、5.2等)
在开始之前,请备份你的zabbix数据库,但是如果是新安装的Zabbix Server,则无需备份。
步骤1:下载分区脚本进行分区
在数据库服务器上下载并解压SQL脚本”zbx_db_partitiong.sql“
wget https://bestmonitoringtools.com/wp-content/uploads/2019/10/zbx_db_partitiong.tar.gz
tar -zxvf zbx_db_partitiong.tar.gz