2020-07-19 17:21:17
今天登陆zabbix,发现zabbix-server磁盘已经超过了80%,发出了告警,如图:
登入服务器一看,使用#ll -Shil发现以下几个数据表太大了,占用了磁盘空间很多:
在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@js-online-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为独立表空间模式,每个数据库的每个表都会生成一个数据空间。同时也要修改数据库存放目录:
这个时候就可以# systemctl start mariadb重启mysql服务,启动完后查看一下刚刚在my.cnf里设置的“独立表空间”功能是否OK,检查语句是 show variables like ‘%per_table%’;,如果看到“ON”,就是说明已经开启了:
然后就可以还原数据库了:
[root@js-online-zabbixserver zabbix]# mysql -uroot zabbix < /home/zabbix_db.sql
如果这个时候报错,出现类似这样的错误:
这个可能是数据库缓存造成的,这个时候可以在数据库里使用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
最后查看一下磁盘空间情况:
发现整个磁盘运行情况都OK了~,至此整个zabbix的数据库迁移完成。
oracle数据库迁移到MySQL的三种方法
04-27
Windows 7无法创建系统映像,提示磁盘空间不足
04-25
CentOS7安装配置PostgreSQL数据库服务器
06-20
CentOS使用mysqlbinlog恢复MySQL数据库
05-07
PostgreSQL数据库修改表增加主键
07-12
centos系统安装配置phpMyAdmin数据库管理工具
04-27
memcached数据库简单配置介绍
05-25
ubuntu安装mongodb数据库服务器
05-29
安全快速更改MySQL数据库名称
04-27
没有开启Oracle日志归档,紧急情况下如何进行Oracle数据库的冷备份
04-26
通过mariadb二进制日志实现数据库增量备份
06-05
Zabbix 3.x客户端自动注册
04-07
Zabbix3.0监控Apache2.4服务器状态
07-17
SureHA 2.0集群中,共享磁盘及镜像磁盘中的数据能否保存共享设置和NTFS权限设置?
06-02
Vista磁盘管理中无法使用压缩卷分离132G空间,如何解决?
05-26
使用一键恢复备份数据后硬盘最后一个分区空间容量变小
02-20
B500一体机在Windows XP系统下蓝牙驱动下载及安装过程
06-18
B500一体机,在Windows XP系统下,声卡驱动下载及安装过程
07-02
B520一体机在Windows XP系统下摄像头驱动下载及安装过程
07-02
B520一体机在Windows XP系统独立显卡驱动下载及安装过程
06-13
Valentina Studio (数据库管理工具) v10.5.3 免费版
43.06MB
下载开源数据库软件
219M
下载windows server 2008下载
1.91GB
下载windows server 2016(服务器操作系统)中文版
5.18G
下载AOMEI Partition Assistant(磁盘分区管理工具) v8.8免费破解版
31.2M
下载Auslogics Registry Defrag(磁盘碎片整理工具) v12.4.0.0 绿色版
13.6M
下载Glary磁盘清理程序下载
9.21M
下载easyrecovery pro(硬盘数据恢复工具) v14.0.0.4 免费版
78.6M
下载easyrecovery pro(硬盘数据恢复工具) v14.0.0.4 官方版
87.8M
下载nero刻录软件(光盘记录软件) V16.0.24.0 破解版
179.65 MB
下载后羿采集器(网页数据采集软件) v3.5.3 免费版
45.0M
下载天盾微信聊天记录恢复软件下载
17.9MB
下载宝宝成长记录系统 v5.3.0.0
19.25 MB
下载无敌数据恢复免费下载
5.49MB
下载易我电脑迁移下载
30.77M
下载阿里云盘(数据同步软件) v1.4 电脑版
42.4M
下载Cerberus FTP server Enterprise(FTP服务器软件) v12.0 免费版
28.7M
下载EasyRecovery 13 下载
12.99MB
下载Emby server(流媒体服务软件,)v4.0.2.0 破解版
101M
下载FileZilla server中文版 v0.9.60.0
2.14 MB
下载