阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Linux系统磁盘空间不足Zabbix服务器数据库迁移

426次阅读
没有评论

共计 3904 个字符,预计需要花费 10 分钟才能阅读完成。

今天登陆 Zabbix,发现 zabbix-server 磁盘已经超过了 80%,发出了告警,如图:

Linux 系统磁盘空间不足 Zabbix 服务器数据库迁移

Linux 系统磁盘空间不足 Zabbix 服务器数据库迁移

登入服务器一看,使用 #ll -Shil 发现以下几个数据表太大了,占用了磁盘空间很多:

Linux 系统磁盘空间不足 Zabbix 服务器数据库迁移

在 mysql 里查看也是这样(我的 zabbix 的 databases 就叫 zabbix):

mysql> select table_name, (data_length+index_length)/1024/1024 as total_mb, table_rows from information_schema.tables where table_schema=’zabbix’;
+—————————-+—————+————+
| table_name                | total_mb      | table_rows |
+—————————-+—————+————+
| events                    | 2876.00000000 |  23659702 |
| history                    | 3005.60937500 |  36816179 |
| history_uint              | 2762.26562500 |  35895354 |
| trends_uint                | 1189.60937500 |  16612396 |
| trends                    |  831.59375000 |  11548652 |
+—————————-+—————+————+
113 rows in set (0.08 sec)
上面几个就是数据比较大的表,那么我们重点就是对他们开刀。由于数据量太大,按照普通的方式 delete 数据的话基本上不太可能。所以决定直接采用 truncate table 的方式来快速清空这些表的数据,再使用 mysqldump 导出数据,删除共享表空间数据文件,重新导入数据。

这个时候我们先停止 zabbxi-server。

systemctl stop zabbix-server
systemctl stop httpd
然后登陆 mysql,清除历史数据:

[root@www.linuxidc.com-zabbixserver ~] # mysql -uroot -p
mysql > use zabbix;
Database changed
mysql > truncate table history;
Query OK, 123981681 rows affected (0.23 sec)
mysql > optimize table history;
1 row in set (0.02 sec)
mysql > truncate table history_uint;
Query OK, 57990562 rows affected (0.12 sec)
mysql > optimize table history_uint;
1 row in set (0.03 sec)
注意!如果在这一步,你先选择了 delete,比如先删除了 history_uint 里 7 天之前的数据:

mysql> delete from history_uint where clock<unix_timestamp(adddate(now(),-7));
但是你删了半天,发现数据量太大,这么删太慢了,又想到 zabbix 还有每小时统计一次的趋势数据,所以想干脆连 7 天的记录都不要了,于是查找并干掉了 delete 进程然后改用了 truncate,如下:

mysql> show processlist;
mysql> kill 136765
mysql> truncate table history_uint
这样的话,你会发现 truncate 的速度很很慢的,就会很奇怪。答案其实不是 truncate 慢,而是直接死锁了! 这个时候如果查看一下线程就会发现 truncate 正在等待 insert、select 等等锁。

为什么会这样呢?是因为 truncate 没有拿到 mdl 锁,MySQL 在回滚 delete 回滚结束前持有 mdl 锁,truncate 被锁后续 insert 被 truncate 锁(表锁),杀掉 truncate 就可以正常 insert、select,完成 delete 回滚,回滚完成后就可以 truncate 了。这是一种锁阻塞现象。

这个时候就只能杀掉 truncate 线程,等待 MySQL 的 delete 回滚结束,然后重新去 truncate 表。

插播结束,现在可以对原有的数据库进行备份,#mysqldump -uroot - p 密码 zabbix > /home/zabbix_db.sql。

备份完毕之后,就可以# systecmtl stop mariadb 关闭掉 mysql,同时删除掉共享表空间数据文件,#rm -rf /var/lib/mysql/ib*。

然后准备一个空间比较大的盘,比如这个新磁盘就叫 ZabbixDB,然后在里面建立一个 DB 文件夹。然后将 /ZabbixDB/DB 的所属组和用户都改成 mysql,语句是:# chown -vR mysql:mysql /ZabbixDB/DB。

改完了之后再给予 700 权限:# chmod -vR 700 /etc/ZabbixDB/DB。

然后就把整个 /var/lib/mysql* 的内容都导入到 ZabbixDB/DB 里:#cp -av /var/lib/mysql* /ZabbixDB/DB。

修改 my.cnf,在 [mysqld] 添加一句:innodb_file_per_table=1,这是修改 InnoDB 为独立表空间模式,每个数据库的每个表都会生成一个数据空间。同时也要修改数据库存放目录:

Linux 系统磁盘空间不足 Zabbix 服务器数据库迁移

这个时候就可以# systemctl start mariadb 重启 mysql 服务,启动完后查看一下刚刚在 my.cnf 里设置的“独立表空间”功能是否 OK,检查语句是 show variables like ‘%per_table%’;,如果看到“ON”,就是说明已经开启了:

Linux 系统磁盘空间不足 Zabbix 服务器数据库迁移

然后就可以还原数据库了:

[root@js-online-zabbixserver zabbix]# mysql -uroot zabbix < /home/zabbix_db.sql
如果这个时候报错,出现类似这样的错误:

Linux 系统磁盘空间不足 Zabbix 服务器数据库迁移

这个可能是数据库缓存造成的,这个时候可以在数据库里使用 FLUSH TABLES;,不过这多半会不好使。

那么这个时候,就去新的 mysql 目录夹,即 /ZabbixDB/DB,然后进入数据库 zabbix,发现这个文件夹有很多文件,但是每一个文件都是既有一个.ibd 又有一个.frm 的,而这个“globalmacro”是只有 ibd 而没有.frm 的,所以这个时候我们可以先把这个 globalmacro.ibd 转移到别的地方去,然后重新执行

# mysql -uroot zabbix < /home/zabbix_db.sql
还原数据库即可。

最后启动 zabbix-server:

systemctl start zabbix-server
systemctl start httpd
最后查看一下磁盘空间情况:

Linux 系统磁盘空间不足 Zabbix 服务器数据库迁移

发现整个磁盘运行情况都 OK 了~,至此整个 zabbix 的数据库迁移完成。

[参考资料]https://stackoverflow.com/questions/17914446/mysqldump-problems-with-restore-error-please-discard-the-tablespace-before-imp

更多 Zabbix 相关教程集合

在 Ubuntu 16.04 服务器上安装 Zabbix 3.2  http://www.linuxidc.com/Linux/2017-07/145519.htm 

CentOS 7 LNMP 环境搭建 Zabbix3.0  http://www.linuxidc.com/Linux/2017-02/140134.htm 

Ubuntu 16.04 安装部署监控系统 Zabbix2.4  http://www.linuxidc.com/Linux/2017-03/141436.htm 

Zabbix 监控安装部署及警报配置  http://www.linuxidc.com/Linux/2017-03/141611.htm 

Zabbix 触发器表达式详解 http://www.linuxidc.com/Linux/2017-03/141921.htm 

Ubuntu 16.04 下安装部署 Zabbix3.0  http://www.linuxidc.com/Linux/2017-02/140395.htm 

CentOS 6.3 下 Zabbix 监控 apache server-status http://www.linuxidc.com/Linux/2013-05/84740.htm 

CentOS 7 下 Zabbix 3.0 安装详解 http://www.linuxidc.com/Linux/2017-03/141716.htm 

CentOS 7.4 安装 Zabbix 3.4  http://www.linuxidc.com/Linux/2017-09/147202.htm

64 位 CentOS 6.2 下安装 Zabbix 2.0.6   http://www.linuxidc.com/Linux/2014-11/109541.htm 

ZABBIX 的详细介绍:请点这里
ZABBIX 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-11/148776.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计3904字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7998559
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
开发者福利:免费 .frii.site 子域名,一分钟申请即用

开发者福利:免费 .frii.site 子域名,一分钟申请即用

  开发者福利:免费 .frii.site 子域名,一分钟申请即用 前言 在学习 Web 开发、部署...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞...
星哥带你玩飞牛NAS-11:咪咕视频订阅部署全攻略

星哥带你玩飞牛NAS-11:咪咕视频订阅部署全攻略

星哥带你玩飞牛 NAS-11:咪咕视频订阅部署全攻略 前言 在家庭影音系统里,NAS 不仅是存储中心,更是内容...
手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板 前言 大家好,我是星哥。星哥发现很多新手刚接触服务器时,都会被“选购...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你 为什么要用宝塔跑分? 宝塔跑分其实就是对 CPU、内存、磁盘、IO 做...
让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级 大家好,我是星哥,之前写了一篇文章 自己手撸一...
支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare 也瘫了连监控都挂,根因藏在哪? 最近两天的互联网堪称“故障...
恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击 PHP-FPM(FastCGl Process M...
星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

  星哥带你玩飞牛 NAS-16:飞牛云 NAS 换桌面,fndesk 图标管理神器上线! 引言 哈...