Mysql Innodb;多个数据目录
我需要在单独的分区上存储两个Innodb数据库文件。(raid0上的一个数据库用于提高速度,raid1上的另一个数据库用于提高稳定性) 据我所知,实现这一点的唯一方法是使用Mysql Innodb;多个数据目录,mysql,innodb,Mysql,Innodb,我需要在单独的分区上存储两个Innodb数据库文件。(raid0上的一个数据库用于提高速度,raid1上的另一个数据库用于提高稳定性) 据我所知,实现这一点的唯一方法是使用innodb_file_per_table和符号链接.ibd和.frm文件(无论它们在何处)到配置的mysql存储目录(/var/lib/mysql,在我的系统上),其中必须存在ibdata1文件(用于表元数据) 这是完成拆分的唯一方法吗 有类似myisam的表/索引目录的innodb吗?我今天刚刚写了一篇博客文章: 您不想
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 要求:
innodb\u文件/u每个表=1
场景1(创建新表): 它与在创建表期间指定数据目录选项一样简单
创建表t1(c1int主键)数据目录='/alternative/DIRECTORY'代码>
场景2(将现有表移动到单独的磁盘): 这还需要几个步骤(需要重新启动MySQL服务器),但仍然非常简单。而且它不需要在创建表的过程中为表指定数据目录选项
/alternative/directory/table_name.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给出了:
数据目录位置必须位于已知目录中。