环境:
Centos 6.7 、MySQL 5.7、Zabbix 3.2
背景:
Zabbix 服务器的 MySQL数据目录所在分区空间不足,需要迁移到另外一个分区去。看网上的文章都挺简单的,大白天就直接操作了。
结果导致了 MySQL起不来,紧接着 Zabbix 也起不来了。
操作方法如下:
停掉 MySQL 服务
/etc/init.d/mysql stop
复制整个datadir 到新的目录下
cp -rvf mysqldata /home/work/
编辑 my.cnf,将目录修改为新的路径
datadir = /home/work/mysqldata/data/
socket= /home/work/mysqldata/data/mysql.sock
pid-file= /home/work/mysqldata/data/mysql.pid
log_error = /home/work/mysqldata/log/error.log
log-bin= /home/work/mysqldata/log/bin-log
编辑 /etc/init.d/mysql ,将目录修改为新的路径
datadir=/home/work/mysqldata/data
mysqld_pid_file_path=/home/work/mysqldata/data/mysql.pid
ok了,启动MySQL,准备收工。
/etc/init.d/mysql start
结果出现了:
排查过程:
去查看日志,提示找不到二进制日志文件,提示的路径还是未迁移之前的。
我确定 my.cnf 里面已经修改为最新的路径,为什么还会提示这个呢?网上到处查不到资料,准备去让大神出手了。跑去二进制日志目录下瞄了一眼。看到一个 bin-log.index 文件,依稀记得里面记录了各个二进制日志文件的路径。进去一看,眼前一亮。把路径修改为最新的,启动MySQL,搞定!
拯救Zabbix
前面提到把MySQL服务停掉,Zabbix自然也自动挂了,然后启动Zabbix
/etc/init.d/zabbix_server start
zabbix_server dead but subsys locked
去查看zabbix_server.log
9598:20180628:173014.802 One child process died (PID:9630,exitcode/signal:1). Exiting ...
9598:20180628:173016.802 [Z3001] connection to database 'zabbix' failed: [2002] Can't connect to local MySQL server through socket '/home/mysqldata/data/mysql.sock' (2)
9598:20180628:173016.802 Got signal [signal:11(SIGSEGV),reason:1,refaddr:(nil)]. Crashing
我一看路径又是旧的,去把 zabbix_server.conf 里面的 socket 路径改为新的,zabbix启动成功。
打开zabbix页面,又出错了,提示
Database error
Error connecting to database: No such file or directory
又去把 /etc/php.ini 里面的 socket 也修改为最新的,重启 php-fpm,终于页面成功打开了。