mysql innodb每个表一个文件,每个文件位于不同的目录中?

时间:2012-02-17 12:35:38

标签: mysql database innodb

我需要将一个包含3个大表的相当大的数据库导入到具有2个hds(无raid)的服务器上,每个容量为2TB。 每个表的ibd数据文件大约是800GB,因此我面临着将它们分散到磁盘上的挑战 当我说导入时,我的意思是从mysqldump文件导入。

可以做些什么?

2 个答案:

答案 0 :(得分:0)

我问过MariaDB的人,这是Kristian Nielsen告诉我的:

  

- innodb-file-per-table和symlink将数据文件放到适当的位置(可能有一种“更干净”的方式,但这就是我所知道的工作方式)

答案 1 :(得分:0)

由于您从空数据库开始,因此在导入数据之前创建空表并将其中一个数据文件移动到单独的卷非常容易。您应该在移动文件时关闭服务器,并在指向新路径的原始位置创建符号链接。

这是一个简单的例子来说明这是如何完成的。

在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