Innodb的;多个数据目录

时间:2010-12-22 17:00:18

标签: mysql innodb

我需要在不同的分区上存储两个Innodb数据库文件。 (关于raid0的一个数据库用于速度,另一个用于raid1以获得稳定性)

从我读过的内容来看,实现这一目标的唯一方法是使用innodb_file_per_table和符号链接.ibd和.frm文件,无论它们可能存在于已配置的mysql存储目录中(/ var / lib) / myql在我的系统上),ibdata1文件必须存在(用于表元数据)。

这是完成拆分的唯一方法吗?

myisam的TABLE / INDEX DIRECTORY有没有innodb模拟?

3 个答案:

答案 0 :(得分:5)

只是为了更新这篇文章,如果有人遇到这个,InnoDB现在支持自5.6版以来的数据目录。没有符号链接(不推荐),适用于* nix和Windows。

<强>要求:

  1. MySQL 5.6及以上
  2. innodb_file_per_table已启用
  3. innodb_file_per_table = 1


    场景1(创建新表):

    就像创建表格时指定DATA DIRECTORY选项一样简单。

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

    2. 场景2(将现有表格移至单独的磁盘):

      这涉及更多步骤(需要重启MySQL服务器),但仍然非常简单。并且它不要求表在表创建期间指定DATA DIRECTORY选项。

      1. 停止MySQL服务器
      2. 通过简单文件复制/文件移动将innodb表 table_name .ibd文件移动到单独的磁盘/卷
      3. 创建扩展名为.isl的文本文件,例如表名 .isl
      4. 编辑.isl文件并键入您移动的 table_name .ibd文件的新路径。 /alternative/directory/table_name.ibd
      5. 确保删除旧路径中的原始.ibd文件
      6. 启动MySQL服务器
      7. 现在对移动表的后续更改将保存到新路径中的.ibd文件中。

        供参考,请参阅MySQL官方文档:http://dev.mysql.com/doc/refman/5.6/en/tablespace-placing.html

答案 1 :(得分: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;)

答案 2 :(得分:0)

场景2移动1表到新数据目录

平台 - Windows Server,MySQL 5.6

数据库 - 测试

表 - 员工

源数据目录 - D:\ Program Files \ MySQL \ MySQL Server 5.6 \ data \ test \

目标数据目录-E:\ data \ New_data \ test \

STEPS

确保全局变量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:\数据\ NEW_DATA \测试\ employee.ibd

授予文件夹E:\ data

的写入权限

启动MySQL服务器

使用测试;

从员工

中选择*