原因:直接從官方下載的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”讀取。