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

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

0
задан 6 August 2019 в 07:28
1 ответ

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

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

3
ответ дан 4 December 2019 в 12:17

Теги

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