Spec-Zone.ru › MySQL 8.4

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, поэтому их указывать не нужно.

      • Файл табличного пространства на запись-запись-строка может быть перемещён только в каталог с тем же именем, что и схема. Например, если таблица 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-8.4-en/innodb-moving-data-files-offline.html

Spec-Zone.ru

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