zabbix 由于历史数据过大, 因此导致磁盘空间暴涨,  下面是结局方法步骤

1. 停止 ZABBIX SERER 操作

[root@gd02-qa-plxt2-nodomain-web-95 ~]# killall zabbix_server
[root@gd02-qa-plxt2-nodomain-web-95 ~]# lsof -i:10051

2. 停止 mysql 操作

[root@gd02-qa-plxt2-nodomain-web-96 dbdat]# mysqladmin -u root -p -h 127.0.0.1 shutdown

3. 修改 my.cnf

添加 skip-new 参数, 目标可用缩减 innodb 磁盘空间

4. 重启启动 mysql

/apps/svr/mysql/bin/mysqld_safe --defaults-file=/apps/conf/mysql5.6/my.cnf --ledir=/apps/svr/mysql/bin --basedir=/apps/svr/mysql/ --datadir=/apps/dbdat/mysql5_data --user=apps &

[root@gd02-qa-plxt2-nodomain-web-96 apps]# lsof -i:3306
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mysqld 25527 apps 11u IPv4 29371110 0t0 TCP *:mysql (LISTEN)

5. 分析 history 表

mysql> desc history;
+--------+---------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+---------------------+------+-----+---------+-------+
| itemid | bigint(20) unsigned | NO | MUL | NULL | |
| clock | int(11) | NO | | 0 | |
| value | double(16,4) | NO | | 0.0000 | |
| ns | int(11) | NO | | 0 | |
+--------+---------------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

mysql> select max(itemid) from history;
+-------------+
| max(itemid) |
+-------------+
| 46582 |
+-------------+
1 row in set (0.00 sec)

mysql> select * from history where itemid=46582 limit 1, 20;
+--------+------------+--------+-----------+
| itemid | clock | value | ns |
+--------+------------+--------+-----------+
| 46582 | 1396361332 | 0.0000 | 81875000 |
| 46582 | 1396361362 | 0.0000 | 768297000 |
| 46582 | 1396361392 | 0.0000 | 656787000 |
| 46582 | 1396361422 | 0.0000 | 665169000 |
| 46582 | 1396361452 | 0.0000 | 973570000 |
| 46582 | 1396361482 | 0.0000 | 625619000 |
| 46582 | 1396361512 | 0.0000 | 292743000 |
| 46582 | 1396361543 | 0.0000 | 340000 |
| 46582 | 1396361572 | 0.0000 | 15651000 |
| 46582 | 1396361602 | 0.0000 | 153264000 |
| 46582 | 1396361632 | 0.0000 | 79316000 |
| 46582 | 1396361662 | 0.0000 | 308107000 |
| 46582 | 1396361692 | 0.0000 | 237146000 |
| 46582 | 1396361722 | 0.0000 | 108810000 |
| 46582 | 1396361752 | 0.0000 | 419398000 |
| 46582 | 1396361782 | 0.0000 | 284113000 |
| 46582 | 1396361812 | 0.0000 | 254230000 |
| 46582 | 1396361842 | 0.0000 | 145938000 |
| 46582 | 1396361872 | 0.0000 | 403163000 |
| 46582 | 1396361902 | 0.3300 | 193302000 |
+--------+------------+--------+-----------+
20 rows in set (0.01 sec)

6. 删除两周前数据方法

取得时间戳, 时间只保留至 2014 3 25 日

[root@gd02-zabbix-db-research api]# date +%s -d "Mar 25, 2014 00:00:00"
1395676800

删除 history, history_unit 表方法

mysql> delete from history where clock < 1395676800;
Query OK, 8961912 rows affected (17 min 22.06 sec)

mysql> delete from history_uint where clock < 1395676800;
Query OK, 7789494 rows affected (21 min 38.02 sec)

尝试对表进行缩减发生故障

mysql> optimize table history_uint;
ERROR 1114 (HY000): The table '#sql-63b7_2d' is full
mysql> quit
Bye
[root@gd02-qa-plxt2-nodomain-web-96 mysql5_data]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/vda1 20G 18G 1.3G 94% /
tmpfs 2.0G 0 2.0G 0% /dev/shm

故障原因, 当前 / 下磁盘空间不够.

临时删除 swapfile

[root@gd02-qa-plxt2-nodomain-web-96 /]# swapoff -a
[root@gd02-qa-plxt2-nodomain-web-96 /]# rm -rf swapfile
[root@gd02-qa-plxt2-nodomain-web-96 /]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/vda1 20G 15G 3.7G 81% /
tmpfs 2.0G 0 2.0G 0% /dev/shm

原理说明, mysql 执行 optimize 过程中, 生成了临时表见下面文件, mysql 直接吧 history_unit 表复制成临时表再重新改名, 实现空间缩减.

[root@gd02-qa-plxt2-nodomain-web-96 zabbix]# ls *63b7_2e* -lh
-rw-rw---- 1 apps apps 8.5K 04-02 12:04 #sql-63b7_2e.frm
-rw-rw---- 1 apps apps 1.1G 04-02 12:10 #sql-63b7_2e.ibd

再次缩减

mysql> optimize table history_uint;
Query OK, 40496963 rows affected (20 min 0.04 sec)
Records: 40496963 Duplicates: 0 Warnings: 0

mysql> optimize table history;
Query OK, 45998084 rows affected (21 min 54.99 sec)
Records: 45998084 Duplicates: 0 Warnings: 0

7. 缩减前后文件大小比较
缩减前

[root@gd02-qa-plxt2-nodomain-web-96 mysql5_data]# find -size +50M -exec ls -lh {} \;
-rw-rw---- 1 apps apps 80M 04-02 10:29 ./zabbix/events.ibd
-rw-rw---- 1 apps apps 5.1G 04-02 11:44 ./zabbix/history.ibd
-rw-rw---- 1 apps apps 152M 04-02 10:29 ./zabbix/trends.ibd
-rw-rw---- 1 apps apps 4.3G 04-02 11:47 ./zabbix/history_uint.ibd
-rw-rw---- 1 apps apps 328M 04-02 10:29 ./zabbix/trends_uint.ibd
-rw-rw---- 1 apps apps 1.1G 04-02 11:47 ./ibdata1

缩减后

[root@gd02-qa-plxt2-nodomain-web-96 mysql5_data]# find -size +50M -exec ls -lh {} \;
-rw-rw---- 1 apps apps 80M 04-02 10:29 ./zabbix/events.ibd
-rw-rw---- 1 apps apps 3.6G 04-02 13:30 ./zabbix/history.ibd
-rw-rw---- 1 apps apps 152M 04-02 10:29 ./zabbix/trends.ibd
-rw-rw---- 1 apps apps 3.2G 04-02 12:24 ./zabbix/history_uint.ibd
-rw-rw---- 1 apps apps 328M 04-02 10:29 ./zabbix/trends_uint.ibd
-rw-rw---- 1 apps apps 1.1G 04-02 13:30 ./ibdata1

8. 重启启动 zabbix,  php, nginx, mysql

新问题出现:

当前 zabbix 进行初始化, 会对 mysql 进行大量数据 r/w 操作

因此可能会发生下面警报, 经过 5 分钟后初始化, 下面报警会自动消除, 不用担心.

Disk I/O is overloaded on gd02-qa-plxt2-nodomain-web-96.vclound.com

Zabbix history syncer processes more than 75% busy

Zabbix timer processes more than 75% busy

清理 zabbix 历史数据, 缩减 mysql 空间的更多相关文章

  1. Zabbix历史数据清理

    特别提醒: a.文中测试的Zabbix版本为 3.0.3 . b.清理数据属于高危操作,请在测试环境中验证后再执行线上操作!!! 1.统计数据库中每个表所占的空间: mysql> SELECT ...

  2. Zabbix清理历史数据库,缩减表大小

    zabbix 由于历史数据过大, 因此导致磁盘空间暴涨,  下面是解决方法步骤: 一.分析数据库: 1. 统计数据库中每个表所占的空间: mysql> SELECT table_name AS ...

  3. RDS MySQL 空间问题的原因和解决

    来源:https://help.aliyun.com/knowledge_detail/41739.html RDS MySQL 空间问题的原因和解决 更新时间:2016-07-22 17:20:14 ...

  4. linux 磁盘空间扩容 vg(+pv) lv(+空间) lv(缩减磁盘空间)

    preFace APP scenario description: 当你未能合理的规划存储时,在后期的维护工作中可能会涉及的存储的 再规划(eg,某一个 or 数个App 对某一个lv 即挂载点写Bi ...

  5. 权限问题导致zabbix无法监控mysql

    说说一个困扰自已两天的问题. 首先是用常规的方法安装上了mysql数据库.做了主从. 在监控从库的时候,发现所有的监控数据库的监控项都获取不到key值 . zabbix server端也不报错.获取到 ...

  6. zabbix,php,nginx,mysql源码安装 神仙操作

    →软件包 mkdir /soft/ cd /soft ♦下载以下软件包 nginx-1.14.2.tar.gz wget http://nginx.org/download/nginx-1.14.2. ...

  7. zabbix历史数据相关表研究

    zabbix历史数据相关表研究 history和trends相关表 history和trends都是存储历史数据的地方.一般是通过监控项(item)配置里.匹配更新监控项(item)和设置HouseK ...

  8. 使用zabbix监控oracle表空间

    0.概述 zabbix是一款极其强大的开源监控工具,下面我分享下zabbix如何监控表空间,跟着这个思路,监控其他项都是类似操作. 前提条件是你已经有了zabbix server和zabbix age ...

  9. Dynamics 365 CRM Free up storage 清理Dynamics 365 CRM的空间

    Dynamics 365 CRM 的空间是要买的. 但是很多情况下用户可以去清理CRM从而达到给空间减重的方法 两大使用DB空间大的功能 1. Audit log 审计记录 审计记录是用来记录各个fi ...

随机推荐

  1. spring boot 框架设计步骤

    spring boot 框架设计步骤: 1.poem.xml配置 2.application.yml配置 3.entiry实体 4.realm.Myrealm extends AuthorizingR ...

  2. quart-process_bar

    import asyncio import random import aioredis import redis from quart import Quart, request, url_for, ...

  3. ABP core学习之一 使用Mysql数据库

    修改项目EntityFrameworkCore的相关内容 1.添加类库 使用nuget包管理器,添加Pomelo.EntityFrameworkCore.MySql 2.TradeErpDbConte ...

  4. 02使用java脚本向Pxc集群写入数据

    使用java脚本向Pxc集群写入数据 批量写入pxc集群程序 导入mysql驱动包 # 批量插入数据的java脚本 package pxc_demo; import java.sql.Connecti ...

  5. Ubuntu的sources.list

    参考文章: https://blog.csdn.net/u012843189/article/details/80964287 位于/etc/apt/sources.list 其中 deb http: ...

  6. [Linux]信号集和sigprocmask信号屏蔽函数

    一.概述 系统提供这样一种能力,就是创建一个信号集,然后传递给信号屏蔽函数,从而屏蔽向该进程发送的信号. 有一点需要注意的是,不能屏蔽SIGKILL和SIGSTOP信号. 信号集是sigset_t类型 ...

  7. Unity简单塔防游戏的开发——敌人移动路径的创建及移动

    软件工程综合实践专题第一次作业 Unity呢是目前一款比较火热的三维.二维动画以及游戏的开发引擎,我也由于一些原因开始接触并喜爱上了这款开发引擎,下面呢是我在学习该引擎开发小项目时编写的一些代码的脚本 ...

  8. C# 高级编程01----.Net基础介绍

    一.C#与.Net 的关系 1)C#语言 1. C#是一种简洁.类型安全的面向对象语言,可以使用C#语言创建可以在.Net Framework上运行的应用程序 2. C# 语言功能取决于.Net 的功 ...

  9. Anaconda安装python tensorflow 环境

    1.安装Anaconda3 https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ 2.安装python 3.6 (base) C:\Users\ ...

  10. 白话大数据 | Spark和Hadoop到底谁更厉害?

    要想搞清楚spark跟Hadoop到底谁更厉害,首先得明白spark到底是什么鬼. 经过之前的介绍大家应该非常了解什么是Hadoop了(不了解的点击这里:白话大数据 | hadoop究竟是什么鬼),简 ...