Spec-Zone.ru › MySQL 9.2

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"

Данная процедура применима к перемещению отдельных файлов , файлов, файлов или каталога данных. Перед перемещением файлов или каталогов ознакомьтесь с примечаниями по использованию, которые следуют далее.

  1. Остановите сервер.

  2. Переместите файлы или каталоги табличного пространства в нужное местоположение.

  3. Сделайте новый каталог известным для 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, если необходимо.

  4. Перезапустите сервер.

Примечания по использованию
  • В значении аргумента 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.
https://docs.oracle.com/cd/E17952_01/mysql-9.2-en/innodb-moving-data-files-offline.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API