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, поэтому их указывать не нужно.Файл табличного пространства на запись-запись-строка может быть перемещён только в каталог с тем же именем, что и схема. Например, если таблица
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.