问题描述
今天对阿里云ECS服务器进行了一次计划迁移,但是迁移之后发现mysql无法启动了,不慌,开始排查问题
- 访问服务器并执行
service mysqld start
命令,得到如下信息
Job for mysqld.service failed because the control process exited with error code.
See "systemctl status mysqld.service" and "journalctl -xe" for details.
- 根据提示执行
systemctl status mysqld.service
命令,得到如下提示
Job for mysqld.service failed because the control process exited with error code.
See "systemctl status mysqld.service" and "journalctl -xe" for details.
root@iZ119fo3pmdZ:~# systemctl status mysqld.service
● mysqld.service - LSB: start and stop MySQL
Loaded: loaded (/etc/init.d/mysqld; generated)
Active: failed (Result: exit-code) since Mon 2022-09-26 15:34:23 CST; 16s ago
Docs: man:systemd-sysv-generator(8)
Process: 6491 ExecStart=/etc/init.d/mysqld start (code=exited, status=1/FAILURE)
Sep 26 15:34:22 iZ119fo3pmdZ systemd[1]: Starting LSB: start and stop MySQL...
Sep 26 15:34:22 iZ119fo3pmdZ mysqld[6491]: Starting MySQL.Logging to '/data/mysqldata/iZ119fo3pmdZ.err'.
Sep 26 15:34:23 iZ119fo3pmdZ mysqld[6491]: * The server quit without updating PID file (/data/mysqldata/iZ119fo3pmdZ.pid).
Sep 26 15:34:23 iZ119fo3pmdZ systemd[1]: mysqld.service: Control process exited, code=exited status=1
Sep 26 15:34:23 iZ119fo3pmdZ systemd[1]: mysqld.service: Failed with result 'exit-code'.
Sep 26 15:34:23 iZ119fo3pmdZ systemd[1]: Failed to start LSB: start and stop MySQL.
- 通过上述描述和度娘最终得出结论,由于我的mysql数据存储
/data/mysqldata
目录神秘消失了,所以mysql才无法启动 - 为什么
/data
会消失呢?因为我之前/data
目录下挂载了一块云盘
,现在整个盘的数据消失,那么基本可以断定,这块云盘
要么没挂载上,要么就是挂载到其它目录去了,所以执行df -Th
查看当前云盘挂载情况
- 果然,vdb1这个云盘被挂载到/mnt这个目录了
- 因为项目比较久远,总不能修改mysql存储位置到/mnt目录下吧,风险有点未知,那么最稳妥的方式就需要重新把vdb1云盘挂载到/data下
- 在修改之前我也要思考为什么服务器迁移了之后云盘挂载的目录会变呢,咨询了官方客服之后知道需要执行
vim /etc/fstab
修改开机自动挂载目录为/data
- (别急着做,先看完这段话)按照上述方法保存修改后重启服务器就解决了问题,并且以后也不会出现这个问题,但是也有一种不重启就能解决问题的方式,即依次执行以下三条命令
- umount /mnt
卸载 /mnt 下
- mount -a
按配置文件重新挂载
- df -Th
查看挂载后的目录,查看是否被挂载上,如果有自信这句命令可以不用
- 启动mysql,重启成功