Не следует использовать
символические ссылки для таблиц в
версиях до 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 не признают
символические ссылки.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.
© 1995-2005 MySQL AB. All rights reserved.
