Spec-Zone .ru
спецификации, руководства, описания, API
|
Создать новое InnoDB
таблица в определенном расположении вне каталога данных MySQL,
используйте DATA DIRECTORY =
пункт absolute_path_to_directory
CREATE TABLE
оператор. (Запланируйте расположение заранее, потому что
невозможно использовать этот пункт с ALTER
TABLE
оператор.) Каталог, который Вы определяете, мог быть на другом устройстве хранения с
определенной производительностью или характеристиками емкости, такими как быстрый SSD или HDD большой емкости.
В пределах целевого каталога MySQL создает подкаталог, соответствующий имени базы данных, и в пределах этого.ibd файл для новой таблицы. В
каталоге базы данных под MySQL DATADIR
каталог, MySQL создает a
файл, содержащий путь для таблицы..isl файл обрабатывается MySQL как
символьная ссылка. (Используя фактические символьные ссылки
никогда не поддерживался для table_name
.islInnoDB
таблицы.)
Следующий пример показывает, как Вы могли бы выполнить маленькую разработку или протестировать экземпляр MySQL
на ноутбуке с основным жестким диском, который на 95 % полон, и поместите новую таблицу EXTERNAL
на различном устройстве хранения с большим свободным пространством. Команды оболочки показывают различные пути к
LOCAL
таблица в ее расположении значения по умолчанию под DATADIR
каталог, и EXTERNAL
таблица в расположении Вы определили:
mysql> \! df -k .Filesystem 1024-blocks Used Available Capacity iused ifree %iused Mounted on/dev/disk0s2 244277768 231603532 12418236 95% 57964881 3104559 95% /mysql> use test;Database changedmysql> show variables like 'innodb_file_per_table';+-----------------------+-------+| Variable_name | Value |+-----------------------+-------+| innodb_file_per_table | ON |+-----------------------+-------+1 row in set (0.00 sec)mysql> \! pwd/usr/local/mysqlmysql> create table local (x int unsigned not null primary key);Query OK, 0 rows affected (0.03 sec)mysql> \! ls -l data/test/local.ibd-rw-rw---- 1 cirrus staff 98304 Nov 13 15:24 data/test/local.ibdmysql> create table external (x int unsigned not null primary key) data directory = '/volumes/external1/data';Query OK, 0 rows affected (0.03 sec)mysql> \! ls -l /volumes/external1/data/test/external.ibd-rwxrwxrwx 1 cirrus staff 98304 Nov 13 15:34 /volumes/external1/data/test/external.ibdmysql> select count(*) from local;+----------+| count(*) |+----------+| 0 |+----------+1 row in set (0.01 sec)mysql> select count(*) from external;+----------+| count(*) |+----------+| 0 |+----------+1 row in set (0.01 sec)
MySQL первоначально содержит .ibd
открытый файл,
препятствуя тому Вам демонтировать устройство, но мог бы в конечном счете закрыть таблицу, если
сервер занят. Бойтесь случайно демонтировать внешнее устройство, в то время как MySQL работает, или
запустить MySQL, в то время как устройство разъединяется. Попытка получить доступ к таблице, когда
связанное .ibd
файл пропускает причины серьезная ошибка, которая
требует перезапуска сервера.
Перезапуск сервера мог бы перестать работать если .ibd
файл все еще
не в ожидаемом пути. В этом случае вручную удалите
файл в каталоге базы данных,
и после перезапуска делает a table_name
.islDROP
TABLE
удалить .frm
файл и удаляет информацию о
таблице из словаря
данных.
Не помещайте таблицы MySQL в смонтированный NFS объем. NFS использует протокол передачи сообщений, чтобы записать в файлы, которые могли вызвать противоречивость данных, если сетевые сообщения теряются или получаются не в порядке.
Если Вы используете снимок LVM, копию файла, или другой основанный на файле
механизм, чтобы поддержать .ibd
файл, всегда используйте FLUSH TABLES ... FOR EXPORT
оператор сначала, чтобы
удостовериться все изменения, которые были буферизованы в памяти, сбрасываются
к диску прежде, чем резервное копирование произойдет.
DATA DIRECTORY
пункт является поддерживаемой
альтернативой использованию символьных ссылок, который
всегда был проблематичен и никогда не поддерживался для человека InnoDB
таблицы.