原因:直接从官方下载的zabbix_appliance-5.4.0-vhdx.zip镜像搭建的运维平台,运行一段时间后,发现经常性的mysql崩溃,经排查发现是它的zabbix数据库分区只有4G多,由于监控的数据量太大导致分区爆满,引发mysql崩溃无法启动的故障,只好想办法扩容zabbix数据库所在的空间,经过各种尝试后使用如下方法成功解决问题。
思路:虚拟机上添加一块硬盘,创建新分区并挂载到扩容目录,迁移mysql的数据库目录到扩容目录,修改mysql、php和zabbix的配置文件,恢复正常运行。
原zabbix数据库(容量:4G): /var/lib/mysql/zabbix (/dev/sda5 <-- /var/lib/mysql)
扩容目录的zabbix数据库位置(容量:126G): /data/mysql_data/mysql/zabbix (/dev/sdb1 <-- /data/mysql_data)
1、hyper-v添加一块IDE硬盘
zabbix虚拟机-右键-设置-IDE控制器-添加-选择126G容量-虚拟硬盘位置-选择目录-文件名-确定-启动虚拟机
2、对新添加的硬盘进行分区
fdisk -l
fdisk /dev/sdb
选择: n-p-回车-回车 #创建分区,m可查看帮助
3、安装mkfs.ext4命令和格式化新磁盘
yum install e4fsprogs -y
mkfs -t ext4 /dev/sdb1
4、创建扩容目录(即迁移后的目录)并挂载新磁盘
mkdir mysql_data
ls -l /dev/disk/by-uuid/ #查看新磁盘UUID号码
vi /etc/fstab #配置挂载信息,如果用mount挂载,重启后可能失效
添加 UUID=b0fab428-92a9-46b5-8032-772c628d98dd /data/mysql_data ext4 defaults 0 0
reboot now
df -hT
5、迁移mysql数据库目录
systemctl stop mysqld
cp -rf /var/lib/mysql /data/mysql_data/
cd /etc/my.cnf.d/
chmod u+w zabbix.cnf
vi zabbix.cnf
修改目录:datadir = /data/mysql_data/mysql/
vi client.cnf
增加:[client]
socket = /data/mysql_data/mysql/mysql.sock
vi mysql-server.cnf
修改目录:[mysqld]
datadir=/data/mysql_data/mysql
socket=/data/mysql_data/mysql/mysql.sock
chown -R mysql:mysql /data/mysql_data/mysql/
systemctl start mysql
6、进入mysql查看迁移是否成功
mysql -uroot -p
select @@datadir;
7、修改php和zabbix_web配置文件指定mysql.sock迁移后的位置
find / -name php.ini #查找php.ini位置
vi /etc/php.ini
修改:mysqli.default_socket = /data/mysql_data/mysql/mysql.sock
systemctl restart php-fpm
vi /etc/zabbix/zabbix_server.conf
修改:DBSocket=/data/mysql_data/mysql/mysql.sock
systemctl restart zabbix-server
注:如果不指定迁移后的mysql.sock文件位置的话,zabbix会自动从默认位置“/var/lib/mysql/mysql.sock”读取。