清理 zabbix 历史数据, 缩减 mysql 空间

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



时间: 2024-10-23 10:18:49

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

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

RDS for MySQL 空间问题的原因和解决   1. 原因 2. 解决 2.1 Binlog 文件 2.2 数据文件 2.3 临时文件 2.4 系统文件 RDS for MySQL 实例日常使用中随着实例的使用,会出现空间使用告警甚至超过实例限额被锁定的情况. 比如:   1. 原因 Binlog 日志文件占用高 数据文件占用高 临时文件占用高 系统文件占用高 实例空间使用情况可以在 RDS 控制台监控报警中查看: 2. 解决 RDS 实例支持单独升级磁盘空间,升级磁盘空间是解决空间问题的

mysql空间扩展 VS PostGIS

功能 Mysql spatial extension  PostGIS 空间索引 仅MyISAM支持R树索引,InnoDB不支持  GIST树索引(R树的变种) 支持的空间类型 仅二维数据 二维.三维以及曲线 空间操作函数 有限的空间函数 基本实现OGC标准定义的空间操作函数 例:想查找蓝色多边形内的点,mysql空间扩展仅能查出在最小外包矩形(红色框)内的点,而postgis能查出任意多边形内的点. 空间投影 不支持 支持多种常用投影坐标系 例:想查找两点间距离.MySQL Spatial仅能

MySQL空间数据类型

  MySQL空间数据类型讲解 MySQL具有与OpenGIS类对应的数据类型.某些类型只能保存单个几何值: · GEOMETRY · POINT · LINESTRING · POLYGON GEOMETRY能够保存任何类型的几何值.其他的单值类型POINT.LINESTRING以及POLYGON只能保存特定几何类型的值. 其他数据类型能保存多个值: · MULTIPOINT · MULTILINESTRING · MULTIPOLYGON · GEOMETRYCOLLECTION GEOME

mysql空间扩展VSPostGIS

  功能 Mysql spatial extension PostGIS 空间索引 仅MyISAM支持R树索引,InnoDB不支持 GIST树索引(R树的变种) 支持的空间类型 仅二维数据 二维.三维以及曲线 空间操作函数 有限的空间函数 基本实现OGC标准定义的空间操作函数 例:想查找蓝色多边形内的点,mysql空间扩展仅能查出在最小外包矩形(红色框)内的点,而postgis能查出任意多边形内的点. #FormatImgID_0# 空间投影 不支持 支持多种常用投影坐标系 例:想查找两点间距离

Win7系统怎么清理磁盘节省C盘空间?

Win7系统怎么清理磁盘节省C盘空间?   一.将软件的缓存地址更改 1.一般的ie浏览器.qq.酷我音乐盒等文件的默认缓存文件都在c盘,所以我们要先更改ie临时文件存放位置,方法是:打开ie浏览器--工具--internet选项--常规--设置,然后在弹出来的窗口中,选"转移文件夹"按钮,然后转到其他盘去. 2.接着更改qq缓存文件位置,打开系统设置,选择"文件管理",选"浏览"按钮,然后更改一下路径; 3.继续更改酷我音乐盒缓存路径.同样的选

win7回收站清理不干净占用系统空间如何解决

  win7回收站清理不干净占用系统空间如何解决         具体方法如下: 1.使用快捷键"win+r"进入运行界面,输入"cmd",回车即可; 2.在窗口中输入"chkdsk d:/f" ,回车,(有几个盘符可以输几次,输完回车再输下一个); 3.回车后会提示"是否要强制卸载该卷?(Y/N)",输入Y.

linux mysql 空间不够,都有什么解决办法,迁移好像是一种,有没有不迁移的办法,删除什么东西

问题描述 linux mysql 空间不够,都有什么解决办法,迁移好像是一种,有没有不迁移的办法,删除什么东西 解决方案 是服务器上吗 可以增加存储的容量 解决方案二: https://ruby-china.org/topics/18390 解决方案三: 定期备份数据 然后数据库清空

安装配置Zabbix来监控MySQL的基本教程_Mysql

Zabbix的简单安装配置说明1.在已有的LAMP或者LNMP的基础上安装zabbix,安装一些依赖包: yum -y install mysql-devel libcurl-devel net-snmp-devel 2.添加用户: groupadd zabbix useradd zabbix -g zabbix 3.创建数据库,添加授权账号 create database zabbix character set utf8; grant all privileges on zabbix.* t

无广告免费PHP+Mysql空间

免费提供一些无广告免费PHP+Mysql空间哦,无广告哦. 等待管理员审核.开通 (一般24小时内,除非同时有太多申请) 3.设置域名DNS(全球同步一般是6小时内):    做A指向 72.29.94.150 空间大小: 100M(超额可免费继升) 空间流量:不限 支持中文: 是 支持脚本: PHP.CGI.Perl  捆绑域名: 1个(一级或二级域名皆可),另自带一个*.ganpower.com子域名 FTP帐户: 1个 MySQL数据库: 1个 phpMyAdmin管理: 是 其他: 支持