mysql - 如何使 MySQL 中的数据库位于计算机上的另一个驱动器上?

标签 mysql

假设我的网站从用户那里获取大量数据,并将其传输到我计算机上的 MySQL,但我的计算机空间不足。如果我将硬盘驱动器连接到我的服务器计算机,我可以将新数据库放在该硬盘驱动器上,并将所有数据存储在那里吗?显然它会一直附加在一起。

最佳答案

这可能属于https://dba.stackexchange.com/相反,确实有很多关于您可以使用的技术的深入讨论。

我发现在处理大型临时数据集时有用的一件事是启用innodb_file_per_table,就我而言,这有助于在删除这些临时数据库时回收磁盘空间。

移动整个数据目录

您可以移动MySQL用来存储文件的整个目录;这称为数据目录。停止 MySQL 守护程序,移动文件夹,编辑 my.cnf 以将 datadir = 引用到新文件夹位置,然后启动守护程序。

数据目录之外的每表文件表空间

https://dev.mysql.com/doc/refman/5.6/en/tablespace-placing.html 您可以将 file-per-table 表空间配置(配置文件的 [mysqld] 部分中的 innodb_file_per_table)与 CREATE TABLE 结合使用实际上将表空间放置在数据目录之外。当您启用 innodb_file_per_table 时,您可以使用诸如 CREATE TABLE t1 (c1 INT PRIMARY KEY) DATA DIRECTORY = '/alternative/directory'; 之类的语句来放置该数据目录表空间位于不同的目录中。

分区

使用分区,您可以将数据库、表和列分解到不同的存储分区。在这种情况下,这可能不是您要寻找的,因为它们仍然驻留在数据目录中。 https://dev.mysql.com/doc/refman/5.7/en/partitioning.html

关于mysql - 如何使 MySQL 中的数据库位于计算机上的另一个驱动器上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36255203/

相关文章:

php - 如何按照数据库中定义的顺序将行分配给并发进程?

mysql - 如何在 MYSQL 中对具有相同类型 ID 的不同行数据进行分组?

php - MySQL "LIKE"子句用于过滤字符串

mysql - 针对不同组的部分数量的动态平均计算

mysql - 使用 LOAD DATA INFILE 导入 CSV?

php - 在mysql连接查询中使用变量

mysql - 运行多个数据库查询的替代方法

mysql - 查找用户在网站上花费的总时间。

php - 从包含元素的键的值枚举多维 PHP 数组上的键的最优雅的方法是什么?

php - 在 mysql (phpmyadmin) 中查询可以工作,但在 PHP 中不行