Перенос данных из общего табличного пространства в табличное пространство file-per-table в СУБД MySQL или MariaDB

Развернуть все | Свернуть все

Для СУБД MySQL и MariaDB вы можете хранить данные следующими способами:

Использование общего табличного пространства увеличивает риск фрагментации табличного пространства. Поскольку выполнить операцию SHRINK невозможно, файл в общем табличном пространстве может занимать около 90% дискового пространства. Это отрицательно сказывается на производительности дисковой подсистемы. Поэтому стоит выбрать табличное пространство file-per-table.

В этой статье описывается, как переместить данные из общего табличного пространства в табличное пространство file-per-table. Если СУБД MySQL или MariaDB также используются другими приложениями, вам необходимо переместить базы данных этих приложений в табличное пространство file-per-table.

Рекомендуется выполнять перенос только в том случае, если вы используете СУБД MySQL или MariaDB для Сервера администрирования.
Перемещение данных из общего табличного пространства в табличное пространство file-per-table может увеличить нагрузку на дисковую подсистему.

Предварительные требования

Перед тем как начать, убедитесь в следующем:

Требуемое дисковое пространство составляет 150% от текущего общего размера баз данных (текущего размера файла ibdata1).

Процесс

Чтобы переместить данные из общего табличного пространства в табличное пространство file-per-table:

  1. Остановите службу Сервера администрирования Kaspersky Security Center и другие приложения, использующие экземпляр СУБД, для которого вы хотите выполнить эту процедуру.
  2. В зависимости от версии СУБД войдите в свою СУБД как суперпользователь, а затем в любом приложении запустите скрипт fix_tablespace.sql.

    Вы можете просмотреть скрипты fix_tablespace.sql, перейдя по ссылкам:

    Просмотреть скрипт для MySQL 5.7 и MariaDB 10.1+

    Просмотреть скрипт для MySQL 8.0+

    Не останавливайте выполнение скрипта.
    Если ошибок СУБД не было, но вы прервали выполнение скрипта, либо запустите скрипт повторно, либо прекратите выполнение шагов этой процедуры, перезагрузите службу СУБД и восстановите данные Сервера администрирования из резервной копии.

  3. В разделе [mysqld] файла my.cnf установите для параметра innodb_file_per_table значение 1.
  4. Перезагрузите службу MySQL или MariaDB.
  5. Запустите службу Сервера администрирования Kaspersky Security Center.

Данные будут перемещены из общего табличного пространства в табличное пространство file-per-table:

В начало