移动到外部驱动器后无法启动mysql

本月早些时候,我inheritance了一台装有一个30GB硬盘的Azure VM的MySQL服务器5.6。 数据库消耗22GB; 磁盘使用率为89%。

使用符号链接将/ var / lib / mysql迁移到挂载的磁盘

lsblk && df sudo mkdir /media/sdc fdisk /dev/sdc np 1 2048 209715199 w sudo mkfs.ext3 /dev/sdc1 sudo mount /dev/sdc1 /media/sdc sudo systemctl stop mysqld sudo cp -dpR /var/lib/mysql /media/sdc/mysql sudo mv /var/lib/mysql /var/lib/mysql.old sudo ln -s /media/sdc/mysql /var/lib/mysql sudo systemctl start mysqld 

我安装了一个外部驱动器,将数据库文件迁移到外部驱动器; 之后,并将原来的mysql目录改为指向新位置的符号链接。 最初我以为这可能是一个参考问题与MySQL不遍历的符号链接。 所以我改变了我的策略,直接挂载到/ var / lib / mysql的外部驱动器。

将磁盘挂载到/ var / lib / mysql并迁移数据。

 #Remove the migrated files (I still have mysql.old) sudo rm /var/lib/mysql sudo rm -R /media/sdc/mysql #Mount the drive to /var/lib/mysql directly. sudo mount /dev/sdc1 /var/lib/mysql sudo cp -dpR /var/lib/mysql.old /var/lib/mysql sudo systemctl restart mysql 

这也没有工作。 在这两种情况下,由于相同的原因,mysql拒绝启动:

 sudo systemctl restart mysql Job for mysqld.service failed because a timeout was exceeded. See "systemctl status mysqld.service" and "journalctl -xe" for details 

systemctl status mysqld.service

 systemctl status mysqld.service ● mysqld.service - MySQL Community Server Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled) Active: activating (start-post) since Tue 2017-07-18 20:58:12 UTC; 4min 37s ago Process: 32798 ExecStart=/usr/bin/mysqld_safe (code=exited, status=0/SUCCESS) Process: 32787 ExecStartPre=/usr/bin/mysql-systemd-start pre (code=exited, status=0/SUCCESS) Main PID: 32798 (code=exited, status=0/SUCCESS); : 32799 (mysql-systemd-s) CGroup: /system.slice/mysqld.service └─control ├─32799 /bin/bash /usr/bin/mysql-systemd-start post └─33965 sleep 1 

journalctl -xe

 ~ … ~ ...skipping... ~ … ~ 

此外,我也尝试了各种方法来启动服务器无济于事(相同的结果):

 sudo systemctl start mysqld sudo systemctl start mysql.service sudo systemctl start mysql service mysql restart 

ps aux | grep mysql

 admin_u+ 58206 0.0 0.0 112648 976 pts/0 R+ 14:19 0:00 grep --color=auto mysql 

我如何解决这个问题,并启动MySQL?

我忽略了什么? 我认为这也可能是这个问题的数据库设置; 但是,我采取的两种方法不修改datadirpath…

Yoonixbuild议我看看MySQL日志。

mysqld.log

 ... 017-07-19 13:45:13 0 [Note] Binlog end 170719 13:45:13 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended 170719 13:55:13 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql 2017-07-19 13:55:13 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details). /usr/sbin/mysqld: Error on realpath() on '/var/lib/mysql-files' (Error 2 - No such file or directory) 2017-07-19 13:55:13 0 [ERROR] Failed to access directory for --secure-file-priv. Please make sure that directory exists and is accessible by MySQL Server. Supplied value : /var/lib/mysql-files 2017-07-19 13:55:13 0 [ERROR] Aborting 

解:

当安装驱动器并将文件移动到外部驱动器时,我也移动了mysql文件。 在移回时,我没有将其重新命名为/mysql-files 。 相反,我将其重命名为/mysqlfiles 。 重命名该目录解决了问题。