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. day06 字典、元组、set的方法及常用操作

    今日内容: 1.深浅拷贝 2.元组 3.字典 4.set 1.深浅拷贝 # 1.值拷贝 # 采用赋值的方法进行 # 只会将堆区容器变量与栈区的绑定关系进行复制 # 2.浅拷贝 # 会将堆区与栈区的绑定 ...

  2. Linux initramfs说明

    1.前言 最近在尝试对手头的开发板进行移植,此处记录initramfs挂载的基本流程,记录一下,以备后查.分析时是基于linux3.4.2 2. rootfs的挂载 start_kernel-> ...

  3. 【intern】最长公共子串、编辑距离、KMP 等

    这可能是一个很长的blog…… # from https://blog.csdn.net/justheretobe/article/details/51764587 #!/usr/bin/env py ...

  4. vue 双向数据绑定的实现学习(二)- 监听器的实现

    废话:上一篇https://www.cnblogs.com/adouwt/p/9928278.html 提到了vue实现的基本实现原理:Object.defineProperty() -数据劫持 和  ...

  5. webpack打包文件

    npm init -y//生成package.json npm install webpack webpack-cli --save-dev//安装webpack和webpack-cli根据入口文件. ...

  6. 高性能伪事务之Lua in Redis

    EVAL简介 Redis2.6加入了对Lua脚本的支持.Lua脚本可以被用来扩展Redis的功能,并提供更好的性能. 在<Redis拾遗>中曾经引用了<Redis in Action ...

  7. java - day008 -final ,static ,访问控制符.

    面向对象   封装         类: 模板         对象: 实例         引用,遥控器         构造方法                新建对象时执行           ...

  8. spring boot正常启动但是访问会找不到“ localhost 的网页”的错误

    最近启动springboot项目访问localhost老报找不到网页,找了很久发现yml配置文件中配置了“context.path”,只要在端口号后面加上context.path地址就可以访问了. 如 ...

  9. 学习笔记_J2EE_Spring(一)_入门

    3.      Spring概述 3.1.   Spring是什么 Spring是一个优秀的高可用的JavaEE轻量级开发框架.提供一站式开发解决方案. 3.2.   Spring框架出现的背景 在世 ...

  10. 设计模式 — 抽象工厂模式(Abstract Factory)

    工厂模式已经分析了简单工厂模式和工厂方法模式.并且了解了工厂方法模式去简单工厂模式的延伸,工厂方法模式如果不把工厂类抽象的话,就是简单工厂模式.由前面两个工厂模式可以猜测出抽象工厂模式应该是这两种工厂 ...