Innodb; несколько каталогов данных

У меня есть требование хранить два файла базы данных Innodb в отдельных разделах. (одна база данных на raid0 для скорости, другая на raid1 для стабильности)

Из того, что я читал, единственный способ добиться этого - использовать innodb_file_per_table и связывать файлы .ibd и .frm, где бы они ни жили, с настроенным каталогом хранилища mysql (/ var / lib / mysql в моей системе), где должен находиться файл ibdata1 (для метаданных таблицы).

Это единственный способ совершить раскол?

Есть ли innodb аналог TABLE / INDEX DIRECTORY myisam?


person mikewaters    schedule 22.12.2010    source источник


Ответы (3)


Я только что написал об этом в блоге сегодня: http://www.mysqlperformanceblog.com/2010/12/25/spreading-ibd-files-across-multiple-disks-the-optimization-that-isnt/

Вы не хотите делать символические ссылки - а InnoDB не поддерживает DATA DIRECTORY / INDEX DIRECTORY.

Вам действительно нужна стабильность всей системы данных для InnoDB. Скажем -

  • У вас есть критические таблицы A, B, C.
  • Некритичные таблицы - это D, E, F.
  • Если вы переместили D, E, F в / mnt / RAID0 и потеряли этот том, InnoDB фактически не позволит вам получить доступ к таблицам A, B, C.
  • Если у него нет доступа ко всем вашим данным, InnoDB откажется запускаться.

Если у вас два очень разных требования к данным, вам понадобится две установки MySQL;)

person Morgan Tocker    schedule 25.12.2010
comment
Спасибо, Морган; можно ли сказать, что комментарий на mysqlperformanceblog.com/2010/12/25/ будет ли подходящим решением? - person mikewaters; 26.12.2010
comment
Да, комментатор - мой коллега - совет здравый. В вашем случае вы можете проделать аналогичные шаги и без SSD, но я бы не рекомендовал использовать RAID0 по причинам, о которых я писал выше. - person Morgan Tocker; 27.12.2010
comment
Каталог данных поддерживается для InnoDB, начиная с MySQL 5.6. - person techhero; 24.10.2014
comment
Просто хотел обновить это новой информацией. Как отметил @techhero, теперь поддерживается символическая ссылка на каталог данных. Вот документация по нему в MySQL 8: dev .mysql.com / doc / refman / 8.0 / en /. - person Sammy Larbi; 26.02.2021

Просто чтобы обновить этот пост, если кто-то когда-нибудь столкнется с этим, InnoDB теперь поддерживает каталог данных, начиная с версии 5.6. Без символической ссылки (не рекомендуется), работает как для * nix, так и для Windows.

Требования:

  1. MySQL 5.6 и выше
  2. innodb_file_per_table включен

innodb_file_per_table = 1


Сценарий 1 (создание новых таблиц):

Это так же просто, как указать параметры DATA DIRECTORY во время создания таблицы.

  1. CREATE TABLE t1 (c1 INT PRIMARY KEY) DATA DIRECTORY = '/alternative/directory';

Сценарий 2 (перемещение существующей таблицы на отдельный диск):

Это включает в себя еще несколько шагов (требуется перезапуск сервера MySQL), но все же довольно прямолинейно. И это не требует, чтобы в таблице была указана опция DATA DIRECTORY во время создания таблицы.

  1. Остановить сервер MySQL
  2. Переместите файл innodb table table_name .ibd на отдельный диск / том простым копированием / перемещением файла
  3. Создайте текстовый файл с расширением .isl, например. имя_таблицы .isl
  4. Отредактируйте файл .isl и введите новый путь к перемещенному файлу table_name .ibd. /alternative/directory/table_name.ibd
  5. Убедитесь, что исходный файл .ibd по старому пути был удален
  6. Запустить сервер MySQL

Теперь последующие изменения в перемещенной таблице будут сохраняться в файл .ibd по новому пути.

Для справки обратитесь к официальному документу MySQL: http://dev.mysql.com/doc/refman/5.6/en/tablespace-placing.html

person techhero    schedule 23.10.2014
comment
Просто чтобы указать всем, кто хочет попробовать это: сценарий 2 не будет работать полностью, по крайней мере, в MySQL 5.7.28. Похоже, что вы потеряете возможность создавать любой DDL, требующий копирования таблицы (изменять таблицу без inplace). - person chimmi; 28.02.2020
comment
Сценарий 1 дает мне: The DATA DIRECTORY location must be in a known directory. - person Nasif Imtiaz Ohi; 20.02.2021

Сценарий 2 ПЕРЕМЕСТИТЬ 1 ТАБЛИЦУ В НОВЫЙ КАТАЛОГ ДАННЫХ

Платформа - Windows Server, MySQL 5.6

База данных - Тест

Таблица - Сотрудник

Каталог исходных данных - D: \ Program Files \ MySQL \ MySQL Server 5.6 \ data \ test \

Каталог данных назначения -E: \ data \ New_data \ test \

ШАГИ

Убедитесь, что глобальная переменная innodb_file_per_table = 1

Остановить сервер MySQL

Переместите файл innodb employee.ibd на отдельный диск / папку, просто переместив файл в E: \ data \ New_data \ test \

Примечание. Сохраните файл employee.frm в исходном каталоге данных D: \ Program Files \ MySQL \ MySQL Server 5.6 \ data \ test \

в каталоге исходных данных - D: \ Program Files \ MySQL \ MySQL Server 5.6 \ data \ test \ - Создайте текстовый файл с расширением .isl, например. employee.isl Отредактируйте файл .isl и введите новый путь к файлу employee.ibd, который вы переместили.

В файле -D: \ Program Files \ MySQL \ MySQL Server 5.6 \ data \ test \ employee.isl E: \ data \ New_data \ test \ employee.ibd

предоставить разрешение на запись в папку E: \ data

Запустить сервер MySQL

использовать тест;

выберите * от сотрудника

person Ratheesh    schedule 14.03.2017