wstlwl 发表于 2019-1-20 12:08:20

zabbix数据库优化之数据库优化(二)

zabbix数据库优化之数据库优化二
  简介
      数据库history设置是保存7天。然后如果你没有分区。虽然数据在减少但是表空间不会减少。浪费硬盘空间的同事缓存内的cache部分也没有被释放。分区后可以迁移分区合并分区删除已经没有数据的分区优化表空间优化buffer内存。
  

  一,前期操作
  清空表
  Truncate table table_name;
  
  导出库
  mysqldump -uroot -p -all-databases >zabbix.sql
  
  
  整理表空间碎片
  Alter table tables_name engine=innodb;
  
  
  
  
  二,迁移mysql
  1调整升级mysql到5.7最新的存储过程需要

  2调整mysql参数
https://s3.运维网.com/wyfs02/M02/A6/77/wKioL1nPTqvhtXnQAAAKByRU5lA600.png-wh_500x0-wm_3-wmp_4-s_3027907431.png
  
  
https://s4.运维网.com/wyfs02/M01/A6/77/wKioL1nPTrXgPceyAAAKv5CxYHg878.png-wh_500x0-wm_3-wmp_4-s_1062229876.png
  检测你的参数是不是设置的合理
  
  pt-variable-advisor --source-of-variables vars.vxt
  

三,分区操作
  
  分区资料链接如下
  https://www.zabbix.org/wiki/Docs/howto/mysql_partition
  
  核心部分
  DELIMITER $$
  CREATE PROCEDURE `partition_maintenance_all`(SCHEMA_NAME VARCHAR(32))
  BEGIN
        CALL partition_maintenance(SCHEMA_NAME, 'history', 20, 24, 20);
        CALL partition_maintenance(SCHEMA_NAME, 'history_log', 20, 24, 20);
        CALL partition_maintenance(SCHEMA_NAME, 'history_str', 20, 24, 20);
  CALL partition_maintenance(SCHEMA_NAME, 'history_text', 20, 24, 20);
        CALL partition_maintenance(SCHEMA_NAME, 'history_uint', 20, 24, 20);
        CALL partition_maintenance(SCHEMA_NAME, 'trends', 20, 24, 20);
        CALL partition_maintenance(SCHEMA_NAME, 'trends_uint', 20, 24, 20);
  END$$
  DELIMITER ;
  
  创建分区的存储过程
  CALL partition_maintenance(SCHEMA_NAME, 'history', 20, 24, 20);
  

https://s2.运维网.com/wyfs02/M02/07/C5/wKiom1nPUBeDPPsxAAAKBeFT_tM517.png-wh_500x0-wm_3-wmp_4-s_1408639239.png
  保留天数20天
  时间间隔24小时   
  创建分区数   例如保留20天创建分区数20
  
  时间间隔1小时
  创建分区数量 24*20
  
  
  CALL partition_maintenance(SCHEMA_NAME, ;hisuozy', 20, 1, 22*24):
页: [1]
查看完整版本: zabbix数据库优化之数据库优化(二)