17.6.3.6 Перемещение файлов табличного пространства при отключенном сервере
Переменная innodb_directories, определяющая каталоги для сканирования при запуске в поисках файлов табличного пространства, поддерживает перемещение или восстановление файлов табличного пространства в новое местоположение при отключенном сервере. Во время запуска обнаруженные файлы табличного пространства используются вместо файлов, указанных в словаре данных, а словарь данных обновляется для ссылки на перемещенные файлы. Если сканирование обнаружит дублированные файлы табличного пространства, запуск завершится с ошибкой, указывающей на то, что для одного и того же идентификатора табличного пространства было найдено несколько файлов.
Каталоги, определенные переменными innodb_data_home_dir, innodb_undo_directory и datadir, автоматически добавляются к значению аргумента innodb_directories. Эти каталоги сканируются при запуске независимо от того, задана ли переменная innodb_directories явно. Неявное добавление этих каталогов позволяет перемещать системные файлы табличного пространства, каталог данных или файлы табличного пространства отката без явного конфигурирования переменной innodb_directories. Однако, при изменении каталогов необходимо обновить настройки. Например, после перемещения каталога данных необходимо обновить переменную --datadir перед перезапуском сервера.
Переменная innodb_directories может быть указана в командной строке запуска или в файле параметров MySQL. Значение аргумента заключено в кавычки, так как некоторые интерпретаторы команд рассматривают точку с запятой (;) как специальный символ. (Например, оболочки Unix интерпретируют ее как терминатор команды).
Командная строка запуска:
mysqld --innodb-directories="directory_path_1;directory_path_2"
Файл параметров MySQL:
[mysqld]
innodb_directories="directory_path_1;directory_path_2"
Данная процедура применима к перемещению отдельных файлов , файлов, файлов или каталога данных. Перед перемещением файлов или каталогов ознакомьтесь с примечаниями по использованию, которые следуют далее.
Остановите сервер.
Переместите файлы или каталоги табличного пространства в нужное местоположение.
-
Сделайте новый каталог известным для
InnoDB.-
При перемещении отдельных файлов или файлов, добавьте неизвестные каталоги в значение
innodb_directories.Каталоги, определенные переменными
innodb_data_home_dir,innodb_undo_directoryиdatadir, автоматически добавляются к значению аргументаinnodb_directories, поэтому указывать их не нужно.Файл-в-таблице (file-per-table) табличного пространства может быть перемещен только в каталог с тем же именем, что и схема. Например, если таблица
actorпринадлежит схемеsakila, то файл данныхactor.ibdможет быть перемещен только в каталог с именемsakila.Файлы общего табличного пространства не могут быть перемещены в каталог данных или в подкаталог каталога данных.
При перемещении системных файлов табличного пространства, табличного пространства отката или каталога данных обновите переменные
innodb_data_home_dir,innodb_undo_directoryиdatadir, если необходимо.
-
Перезапустите сервер.
Примечания по использованию
В значении аргумента
innodb_directoriesнельзя использовать символы подстановки.Сканирование по
innodb_directoriesтакже проходит по подкаталогам указанных каталогов. Дублирующиеся каталоги и подкаталоги исключаются из списка каталогов для сканирования.innodb_directoriesподдерживает перемещение файлов табличного пространстваInnoDB. Перемещение файлов, принадлежащих другому движку хранения, кромеInnoDB, не поддерживается. Это ограничение также распространяется на перемещение всего каталога данных.innodb_directoriesподдерживает переименование файлов табличного пространства при перемещении файлов в отсканированный каталог. Также поддерживается перемещение файлов табличного пространства в другие поддерживаемые операционные системы.При перемещении файлов табличного пространства в другую операционную систему убедитесь, что имена файлов табличного пространства не содержат запрещенных символов или символов со специальным значением в целевой системе.
При перемещении каталога данных из операционной системы Windows в операционную систему Linux измените пути к файлам журнала бинарных логов в файле индекса журнала бинарных логов, заменив слеши «/» на обратные слеши «\». По умолчанию файл индекса журнала бинарных логов имеет то же имя, что и файл журнала бинарных логов, с расширением «
.index». Местоположение файла индекса журнала бинарных логов определяется--log-bin. По умолчанию это каталог данных.При перемещении файлов табличного пространства в другую операционную систему, которая подразумевает кросс-платформенную репликацию, администратор базы данных несет ответственность за правильную репликацию инструкций DDL, которые содержат платформозависимые каталоги. Инструкции, позволяющие указать каталоги, включают
CREATE TABLE ... DATA DIRECTORYиCREATE TABLESPACE ... ADD DATAFILE.-
Добавьте каталоги файлов-в-таблице и общих табличных пространств, созданных с абсолютным путем или в расположении вне каталога данных, в настройку
innodb_directories. В противном случаеInnoDBне сможет найти файлы во время восстановления. Дополнительную информацию см. в разделе Обнаружение табличного пространства во время восстановления после сбоя.Чтобы просмотреть расположения файлов табличного пространства, выполните запрос к таблице схемы информации
FILES:mysql>
SELECT TABLESPACE_NAME, FILE_NAME FROM INFORMATION_SCHEMA.FILES \G
© 2025 Oracle
Licensed under the GPLv2 License.