mysql innodb один файл на таблицу, где каждый файл находится в отдельном каталоге? - PullRequest
2 голосов
/ 17 февраля 2012

Мне нужно импортировать довольно большой БД с 3 большими таблицами на сервер с 2 hds (без рейда), каждый объемом 2 ТБ.Файл данных ibd каждой таблицы составляет около 800 ГБ, поэтому я сталкиваюсь с проблемой распределения их по дискам.Когда я говорю импорт, я имею в виду импорт из файла mysqldump.

что можно сделать?

Ответы [ 2 ]

0 голосов
/ 17 февраля 2012

Поскольку вы начинаете с пустой базы данных, довольно легко создать пустые таблицы и затем переместить один из файлов данных на отдельный том перед импортом данных.Вы должны закрыть сервер при перемещении файла и создать символическую ссылку в исходном положении, указывающую на новый путь.

Вот простой пример, иллюстрирующий, как это делается.

ВMySQL:

-- create empty tables
use test;
create table table1(id int) engine = innodb;
create table table2(id int) engine = innodb;
create table table3(id int) engine = innodb;

В терминале:

# shut down mysql server
service mysql stop

# move one of the innodb files to a new volume
mv -i /usr/local/mysql/data/test/table3.ibd /mnt3/mysql/test/data/.

# create a symlink so mysqld can use the standard path to find the file
ln -s /mnt3/mysql/test/data/table3.ibd /usr/local/mysql/data/test/table3.ibd

# start mysql server
service mysql start
0 голосов
/ 17 февраля 2012

Я спросил людей из MariaDB , и вот что сказал мне Кристиан Нильсен:

- innodb-file-per-table и символическая ссылка на файлы данных в соответствующее место (может быть «чище», но я знаю, что это работает)

...