我需要在不同的分区上存储两个Innodb数据库文件。(一个数据库在raid0上以提高速度,另一个数据库在raid1上以提高稳定性)
根据我所读到的内容,实现这一点的惟一方法是使用innodb_file_per_table并将.ibd和.frm文件符号链接到已配置的mysql存储目录(在我的系统上为/var/lib/mysql),ibdata1文件必须位于该目录(用于表元数据)。
这是完成拆分的唯一方法吗?
是否存在与myisam的表/索引目录类似的innodb?
发布于 2010-12-26 00:55:23
我今天刚刚写了一篇关于这个的博文:http://www.mysqlperformanceblog.com/2010/12/25/spreading-ibd-files-across-multiple-disks-the-optimization-that-isnt/
你不想做符号链接的事情--而且InnoDB不支持数据目录/索引目录。
对于InnoDB,您实际上需要整个数据系统的稳定性。比方说-
C.
如果您有两个截然不同的数据需求,则需要安装两个MySQL ;)
发布于 2014-10-24 04:18:39
如果有人发现这一点,请更新本文,InnoDB现在从5.6版本开始支持数据目录。无符号链接(不推荐),适用于*nix和Windows。
要求:
innodb_file_per_table = 1
场景1(创建新表):
只需在创建表的过程中指定数据目录选项即可。
CREATE TABLE t1 (c1 INT PRIMARY KEY) DATA DIRECTORY = '/alternative/directory';场景2(将现有表移到单独的磁盘):
这涉及到更多的步骤(需要重新启动MySQL服务器),但仍然非常简单。并且它不要求表在创建表的过程中指定数据目录选项。
/alternative/directory/table_name.ibd现在,对移动的表所做的后续更改将保存到新路径下的.ibd文件中。
请参考MySQL官方文档:http://dev.mysql.com/doc/refman/5.6/en/tablespace-placing.html
发布于 2017-03-14 21:27:29
场景2将1个表移动到新的数据目录
平台- Windows服务器、MySQL 5.6
数据库-测试
表-员工
源数据目录- D:\Program Files\MySQL\MySQL Server 5.6\ Data \test\
目标数据目录-E:\data\New_data\test\
步骤
确保全局变量innodb_file_per_table =1
停止MySQL服务器
通过简单文件移动到E:\data\New_data\test\,将employee.ibd文件移到独立的磁盘/文件夹中
注意-将测试保留在原始数据目录D:\Program Files\MySQL\MySQL Server5.6\ employee.frm \
在源数据目录- D:\Program Files\MySQL\MySQL Server5.6\ data \ .isl \-创建一个文本文件,扩展名为employee.isl。编辑.isl文件,然后输入您移动的employee.ibd文件的新路径。
在文件服务器文件\MySQL\MySQL -D:\Program 5.6\data\test\employee.isl E:\data\New_data\test\employee.ibd中
授予对文件夹E:\data的写入权限
启动MySQL服务器
使用测试;
select *自员工
https://stackoverflow.com/questions/4511578
复制相似问题