MySQL 目錄遷移引發的一系列故障
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,終於頁面成功打開了。
MySQL 目錄遷移引發的一系列故障