CREATE TABLE mydb.mytb
(
id int not null auto_increment,
stuff TEXT,
PRIMARY KEY (id)
) ENGINE=MyISAM
DATA DIRECTORY '/backups/dat_folder'
INDEX DIRECTORY '/backups/ndx_folder';
CREATE TABLE mydb.mytblink like mydb.mytb;
ALTER TABLE mydb.mytblink
DATA DIRECTORY '/backups/dat_folder'
INDEX DIRECTORY '/backups/ndx_folder';
INSERT INTO mydb.mytblink SELECT * FROM mydb.mytb;
作为一个潜在的捷径,你可以这样做:
CREATE TABLE mydb.mytblink like mydb.mytb;
ALTER TABLE mydb.mytblink
DATA DIRECTORY '/backups/dat_folder'
INDEX DIRECTORY '/backups/ndx_folder';
cp /var/lib/mysql/mydb/mytb.MYD /backups/dat_folder
cp /var/lib/mysql/mydb/mytb.MYI /backups/ndx_folder
FLUSH TABLES;
您可以在 MySQL 中使用符号链接。您需要做的就是为您的 MyISAM 表的 .frm、.MYI 和 .MYD 文件创建一个符号链接到您想要的 MySQL 数据库模式目录中。在那之后,跑
flush tables;
,他们应该出现。MySQL 用户能够访问这些文件也很重要,因此您可能会遇到一些用户权限问题。
此外,根据您的 MySQL 版本,my.cnf 中可能有一个启用/禁用符号链接的设置,因此您也需要留意它。
建议符号链接整个数据库,而不是特定的表 - 请参阅 MySQL 5.5 手册的第 7.11.3.1 节。
第 7.11.3.1.2 节声明可以将 MyISAM 数据和索引文件符号链接到不同的目录(出于性能原因在不同的分区上),但不是 .FRM 表定义文件。
您还需要确保没有在服务器变量中打开“skip-symbolic-links”。
您可以移动现有数据和索引文件(或整个数据库),然后返回符号链接,只需确保先关闭服务器!如果它没有正确启动备份,检查“skip-symbolic-links”选项没有被设置...
您可以创建一个 MyISAM 并即时指定数据目录和索引目录是什么。符号链接由 mysqld 创建。
根据MySQL 文档,您可以使用 DATA_DIRECTORY 和 INDEX_DIRECTORY 选项运行 CREATE TABLE(不适用于 Windows)。
例如,如果您运行此命令
这就是你得到的
如果您为目录选择这样的挂载点,这样做的好处是通过让数据和索引文件在不同的磁盘上运行来减少磁盘 I/O。
警告:这不能用 InnoDB 完成,因为它与 ibdata1 有大量交互。我在 2011 年 8 月 7 日回复了这个问题。
如果您已经建立了数据,则必须执行以下操作
如果失败,请执行以下操作:
作为一个潜在的捷径,你可以这样做:
试试看 !!!