Innodb; несколько каталогов данных - PullRequest
1 голос
/ 22 декабря 2010

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

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

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

Есть ли innodb аналог справочника TABLE / INDEX myisam?

Ответы [ 3 ]

5 голосов
/ 24 октября 2014

Просто чтобы обновить этот пост, если кто-то когда-либо сталкивался с этим, 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 имя_таблицы .ibd файлдля разделения диска / тома простым копированием файла / перемещением файла
  3. Создайте текстовый файл с расширением .isl, например, table_name .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

3 голосов
/ 25 декабря 2010

Я только что написал сообщение в блоге об этом сегодня: 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 to / mnt / RAID0, и вы потеряли этот том, InnoDB на самом деле также больше не позволит вам обращаться к таблицам A, B, C.
  • Если он не может получить доступ ко всем вашим данным, InnoDB откажетдля начала.

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

0 голосов
/ 14 марта 2017

Сценарий 2 MOVE 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 file employee.ibd на отдельный диск / папку, просто переместив файл в E: \ data \ New_data \ test \

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

в каталоге исходных данных - D: \ ProgramФайлы \ 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

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

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

...