zabbix_appliance的数据库扩容方案
问题: zabbix_appliance直接加载虚拟机来部署zabbix是很方便的办法, 下载配置好后, 监控一段时间会提示mysql存储空间不足, 进去系统df一看才4G多, 只好自已手动扩容.
思路:虚拟机上添加一块硬盘,创建新分区并挂载到扩容目录,迁移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-回车-回车-回车
3、安装mkfs.ext4命令和格式化新磁盘
yum install e4fsprogs -y
mkfs -t ext4 /dev/sdb #也可以格式化成新文件系统mkfs.xfs /dev/sdb
4、创建扩容目录(即迁移后的目录)并挂载新磁盘
mkdir /data
mount /dev/sdb /data
mkdir /data/mysql_data
lsblk -f #查看新磁盘UUID号码“ls -l /dev/disk/by-uuid/”也可
vi /etc/fstab #配置挂载信息,如果用mount挂载,重启后可能失效
添加 UUID=b0fab428-92a9-46b5-8032-772c628d98dd /data/mysql_data ext4 defaults 0 0
reboot now
df -hT
lsblk #查看一下分区和挂载目录信息
5、迁移mysql数据库目录
systemctl stop mysqld
cp -a /var/lib/mysql /data/mysql_data/ #若权限不对可使用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 mysqld
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”读取。