Не удается запустить mysql после перемещения на внешний диск

Ранее в этом месяце я унаследовал MySQL Server 5.6, размещенный на минутной виртуальной машине Azure с одним жестким диском емкостью 30 ГБ. База данных занимала 22 ГБ; использование диска было на 89%.

Перенести / var / lib / mysql на смонтированный диск с помощью символической ссылки

lsblk && df
sudo mkdir /media/sdc
fdisk /dev/sdc
     n p 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?

Я что-то упустил? Я подумал, что это также может быть настройка datadir, как в этот вопрос ; но оба метода, которые я использовал, не изменяют путь к каталогу данных ...

1
задан 19 July 2017 в 17:20
1 ответ

Yoonix посоветовал мне посмотреть журнал 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 . Переименование каталога устранило проблему.

2
ответ дан 3 December 2019 в 20:20

Теги

Похожие вопросы