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

   结果出现了:

    MySQL启动错误.png

   

排查过程:

        去查看日志,提示找不到二进制日志文件,提示的路径还是未迁移之前的。

       MySQL错误日志.png

   

      我确定 my.cnf 里面已经修改为最新的路径,为什么还会提示这个呢?网上到处查不到资料,准备去让大神出手了。跑去二进制日志目录下瞄了一眼。看到一个 bin-log.index 文件,依稀记得里面记录了各个二进制日志文件的路径。进去一看,眼前一亮。把路径修改为最新的,启动MySQL,搞定!

二进制.png

     


拯救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,终于页面成功打开了。


猜你喜欢

转载自blog.51cto.com/fsckyl/2133857