多个驱动器上的 MYSQL 数据

标签 mysql

我的 SDA 上有一个 MYSQL 数据库。它主要是一种模式,其中包含“流行”表。我想将架构中不太“流行”的表(又占用 1TB 左右)存储在我的 SDB 分区上。

enter image description here

执行此操作的正确方法是什么?我需要在该驱动器上运行另一个 MYSQL 服务器吗?或者我可以简单地设置像DATA_DIRECTORY=之类的吗?这是 Ubuntu 和 MYSQL 5.7.38。感谢您的帮助,非常感谢。

最佳答案

从 MySQL 8.0.21 开始,指定每个表的数据目录的能力终于得到了改进。

CREATE TABLE t1 (c1 INT PRIMARY KEY) DATA DIRECTORY = '/external/directory';

阅读https://dev.mysql.com/doc/refman/8.0/en/innodb-create-table-external.html#innodb-create-table-external-data-directory了解详情。

在早期版本的 MySQL 中,您可以使用符号链接(symbolic link)。也就是说,链接仍然必须驻留在默认数据目录下,但链接可以指向另一个物理设备上的文件。

以这种方式对单个表使用符号链接(symbolic link)是不可靠的,因为 OPTIMIZE TABLE 或许多形式的 ALTER TABLE 会在没有符号链接(symbolic link)的情况下重新创建文件,从而有效地将其移回主存储设备。为了解决这个问题,建议对架构子目录使用符号链接(symbolic link),而不是单独的表。

说实话,我从未发现需要使用这些技术的情况。只需保持简单:一个文件系统上的一个数据目录,并且不要将数据目录与根文件系统放在同一设备上。确保数据存储量足以容纳您的所有数据。如果您需要使用多个设备来创建一个更大的文件系统,请使用软件 RAID。

关于多个驱动器上的 MYSQL 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73253021/

相关文章:

mysql - PDO MySQL 使用 select 插入多行

mysql - Nodejs更改mysql查询中的全局变量

sql - 在MYSQL中,如何选择多行并按我指定的顺序返回?

php - 主网站和子域移动网站(面临用户目录问题)

MySQL - 将数据作为 json 存储在一列或单独的列中

php - 查找找到数据的列

mysql - 尝试从 Tomcat BasicDataSource 获取 MysqlDatasource 时出现 ClassCastException

PHP:数组搜索组

Mysql查询得到带条件的结果

C# asp.net MySQL 值返回为 Null