Не следует использовать символические ссылки для таблиц в версиях до MySQL
4.0, где при работе с ними требуется особая тщательность. Проблема
заключается в том, что, если запускаются команды ALTER TABLE, REPAIR TABLE
или OPTIMIZE TABLE на таблице, связанной символической ссылкой, то
символические ссылки будут удалены и заменены исходными файлами. Это
происходит потому, что любая вышеназванная команда работает путем создания
временного файла в каталоге базы данных и по завершении команды происходит
замещение исходного файла временным.
Не следует связывать символическими ссылками таблицы в системах, где вызов
функции realpath() работает не полностью (по крайней мере,
realpath() поддерживают Linux и Solaris).
В MySQL 4.0 символические ссылки полностью поддерживаются только для
таблиц MyISAM. Для других типов таблиц при выполнении какой-либо из
вышеупомянутых команд могут возникать непонятные проблемы.
Обработка символических ссылок в MySQL 4.0 происходит следующим образом
(это в основном относится только к таблицам MyISAM).
В каталоге данных всегда будет находиться файл определения таблицы и файлы данных/индексов.
Можно связывать символическими ссылками файл индексов и файл данных с различными каталогами независимо друг от друга.
Связывание символическими ссылками можно выполнить из операционной системы (если не запущен
mysqld) или с помощью командыINDEX/DATA DIRECTORY="path-to-dir"вCREATE TABLE(see Раздел 6.5.3, «Синтаксис оператораCREATE TABLE»).myisamchkне замещает символическую ссылку на индекс/файл, а работает напрямую с файлами, на которые указывает символическая ссылка. Все временные файлы будут создаваться в том же каталоге, где находится файл данных/индексов.При удалении таблицы, в которой используются символические ссылки, как ссылка, так и файл, на который ссылка указывает, удаляются. Это веская причина для того, чтобы не запускать
mysqldв качестве суперпользователя (root) и не позволять другим иметь доступ к записи в каталоги баз данных MySQL.Если таблица переименовывается с помощью
ALTER TABLE RENAME, и вы не переносите таблицу в другую базу данных, то данная символическая ссылка в каталоге базы данных будет переименована и файл данных/индексов соответственно будет переименован.Если
ALTER TABLE RENAMEиспользуется для переноса таблицы в другую базу данных, то эта таблица будет перенесена в другой каталог базы данных, а старые символические ссылки и файлы, на которые они указывают, будут удалены. Иными словами, новая таблица не будет ссылкой.Если символические ссылки не применяются, то необходимо использовать опцию
--skip-symlinkвmysqldдля уверенности, что никто не сможет удалить или переименовать файл вне каталога данных этого потока.
Возможности, которые пока еще не поддерживаются:
ALTER TABLEигнорирует все опцииINDEX/DATA DIRECTORY="path".CREATE TABLEне сообщает, что данная таблица имеет символические ссылки.mysqldumpне включает в вывод информацию о символических ссылках.BACKUP TABLEиRESTORE TABLEне признают символические ссылки.