Назад | Перейти на главную страницу

MySQL не находит базу данных / таблицы через символическую ссылку

В моей установке MySQL файлы базы данных находятся в ./var/lib/mysql. Я хотел переместить одну из этих баз данных на другой диск, поэтому я последовал инструкции по перемещению одной базы данных в другой каталог и скопировал файлы данных для базы данных на другой диск, создал символическую ссылку на этот каталог с тем же именем, что и исходная папка базы данных. Включил как каталог, так и символическую ссылку на mysql, как и другие каталоги в ./var/lib/mysql.

Когда я перезапустил MySQL, все прошло нормально, но база данных, о которой идет речь, отсутствует (не критично, потому что это пробный запуск). Я проверил журналы и обнаружил следующие ошибки:

2018-07-28T02:43:59.449437Z 0 [Warning] InnoDB: Ignoring tablespace `sf_master/tablename` because it could not be opened.
2018-07-28T02:43:59.449465Z 0 [ERROR] InnoDB: The error means the system cannot find the path specified.
2018-07-28T02:43:59.449474Z 0 [ERROR] InnoDB: Cannot open datafile for read-only: './sf_master/tablename.ibd' OS error: 71

Я установил для selinux разрешающую способность, чтобы увидеть, была ли это проблема, но ошибки остались прежними.

Я подтвердил, что в my.cnf что symbolic-links=1 и что при перезапуске у меня было innodb_force_recovery = 1

Папка данных выглядит так:

-rw-r-----. 1 mysql mysql         56 Apr 24  2017 auto.cnf
drwxr-x---. 2 mysql mysql       4096 Apr 24  2017 mysql
drwxr-x---. 2 mysql mysql       4096 Dec  6  2017 operators
lrwxrwxrwx. 1 mysql mysql         16 Jul 27 22:33 sf_master -> ./nvme/sf_master
drwxr-x---. 2 mysql mysql       8192 Apr 24  2017 sys

НОТА:

Я публикую эту проблему на serverfault, потому что я думаю, что проблема связана с моим пониманием символических ссылок и того, как они используются в каталогах в файловых системах Linux, или, возможно, с разрешениями. Я использую сервер centos 7.

ОБНОВИТЬ:

По запросу Уилсона Хаука исправленный каталог:

-rw-r-----. 1 mysql mysql         56 Apr 24  2017 auto.cnf
drwxr-x---. 2 mysql mysql       4096 Apr 24  2017 mysql
drwxr-x---. 2 mysql mysql       4096 Dec  6  2017 operators
lrwxrwxrwx. 1 mysql mysql         16 Jul 27 22:33 sf_master -> /nvme/sf_master
drwxr-x---. 2 mysql mysql       8192 Apr 24  2017 sys

На самом деле это была просто очень глупая опечатка.

Ваша символическая ссылка неверна.

В /var/lib/mysql, символическая ссылка sf_master -> ./nvme/sf_master указывает на /var/lib/mysql/nvme/sf_master. Целью символической ссылки должен быть полный путь, а не относительно текущего каталога. Ведущий . делает его относительным.