MySQL.RU .:. Одобрено лучшими российскими программистами
Справочное руководство по MySQL5.6.1.2 Использование символических ссылок для таблиц
5.6.1.2 Использование символических ссылок для таблиц
Не следует использовать символические ссылки для таблиц в версиях до MySQL
4.0, где при работе с ними требуется особая тщательность. Проблема
заключается в том, что, если запускаются команды ALTER TABLE , REPAIR TABL E
или OPTIMIZE TABLE на таблице, связанной символической ссылкой, то
символические ссылки будут удалены и заменены исходными файлами. Это
происходит потому, что любая вышеназванная команда работает путем создания
временного файла в каталоге базы данных и по завершении команды происходит
замещение исходного файла временным.
Не следует связывать символическими ссылками таблицы в системах, где вызов
функции realpath() работает не полностью (по крайней мере,
realpath() поддерживают Linux и Solaris).
В MySQL 4.0 символические ссылки полностью поддерживаются только для
таблиц MyISAM . Для других типов таблиц при выполнении какой-либо из
вышеупомянутых команд могут возникать непонятные проблемы.
Обработка символических ссылок в MySQL 4.0 происходит следующим образом
(это в основном относится только к таблицам MyISAM ).
-
В каталоге данных всегда будет находиться файл определения таблицы и
файлы данных/индексов.
-
Можно связывать символическими ссылками файл индексов и файл данных с
различными каталогами независимо друг от друга.
-
Связывание символическими ссылками можно выполнить из операционной
системы (если не запущен
mysqld ) или с помощью команды INDEX/DATA
DIRECTORY="path-to-dir" в CREATE TABLE (see section 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 не признают символические ссылки.
|