1. 程式人生 > >MySQL 目錄遷移引發的一系列故障

MySQL 目錄遷移引發的一系列故障

socket vpd mysq OS connect gif exiting edi ddr

環境:

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 目錄遷移引發的一系列故障