Mysql Innodb;多个数据目录

Mysql Innodb;多个数据目录,mysql,innodb,Mysql,Innodb,我需要在单独的分区上存储两个Innodb数据库文件。(raid0上的一个数据库用于提高速度,raid1上的另一个数据库用于提高稳定性) 据我所知,实现这一点的唯一方法是使用innodb_file_per_table和符号链接.ibd和.frm文件(无论它们在何处)到配置的mysql存储目录(/var/lib/mysql,在我的系统上),其中必须存在ibdata1文件(用于表元数据) 这是完成拆分的唯一方法吗 有类似myisam的表/索引目录的innodb吗?我今天刚刚写了一篇博客文章: 您不想

我需要在单独的分区上存储两个Innodb数据库文件。(raid0上的一个数据库用于提高速度,raid1上的另一个数据库用于提高稳定性)

据我所知,实现这一点的唯一方法是使用
innodb_file_per_table
和符号链接.ibd和.frm文件(无论它们在何处)到配置的mysql存储目录(/var/lib/mysql,在我的系统上),其中必须存在ibdata1文件(用于表元数据)

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


有类似myisam的表/索引目录的innodb吗?

我今天刚刚写了一篇博客文章:

您不想做符号链接的事情,而且InnoDB不支持数据目录/索引目录

实际上,InnoDB需要整个数据系统的稳定性。比方说-

  • 你有临界表A,B,C
  • 非关键表为D、E、F
  • 如果将D、E、F重新定位到/mnt/RAID0,并且丢失了该卷,InnoDB实际上也将不再允许您访问表A、B、C
  • 除非InnoDB能够访问您的所有数据,否则它将拒绝启动

如果您有两种截然不同的数据需求,则需要安装两次MySQL;)

如果有人遇到此问题,请更新此帖子,InnoDB现在从5.6版开始支持data directory。无符号链接(不推荐),适用于*nix和Windows

要求:

  • MySQL 5.6及以上版本
  • innodb_文件_per_表已启用
  • innodb\u文件/u每个表=1


    场景1(创建新表):

    它与在创建表期间指定数据目录选项一样简单

  • 创建表t1(c1int主键)数据目录='/alternative/DIRECTORY'

  • 场景2(将现有表移动到单独的磁盘):

    这还需要几个步骤(需要重新启动MySQL服务器),但仍然非常简单。而且它不需要在创建表的过程中为表指定数据目录选项

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


    参考请参考MySQL官方文档:

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

    平台-Windows Server,MySQL 5.6

    数据库测试

    表-员工

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

    目标数据目录-E:\Data\New\u Data\test\

    台阶

    确保全局变量innodb_file_per_table=1

    停止MySQL服务器

    通过简单的文件移动到E:\data\New\u data\test,将innodb文件employee.ibd移动到单独的磁盘/文件夹\

    注意-将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:\data\New\u data\test\employee.ibd

    授予文件夹E:\data的写入权限

    启动MySQL服务器

    使用试验


    从员工中选择*谢谢摩根;你会说在上的评论是一个有效的解决方案吗?是的,评论者是我的同事-建议是合理的。在没有SSD的情况下,您也可以执行类似的步骤,但出于上述原因,我不鼓励使用RAID0。由于MySQL 5.6,InnoDB支持Data directory。我只是想用更新的信息更新它。正如@techhero所指出的,现在支持符号链接数据目录。下面是MySQL 8中的相关文档:只是向任何愿意尝试的人指出:场景2不会完全工作,至少在MySQL 5.7.28上是这样。似乎您将无法创建任何需要复制表的DDL(在不在位的情况下更改表)。场景1给出了:
    数据目录位置必须位于已知目录中。