我的 SDA 上有一个 MYSQL 数据库。它主要是一种模式,其中包含“流行”表。我想将架构中不太“流行”的表(又占用 1TB 左右)存储在我的 SDB 分区上。
执行此操作的正确方法是什么?我需要在该驱动器上运行另一个 MYSQL 服务器吗?或者我可以简单地设置像DATA_DIRECTORY=
之类的吗?这是 Ubuntu 和 MYSQL 5.7.38。感谢您的帮助,非常感谢。
最佳答案
从 MySQL 8.0.21 开始,指定每个表的数据目录的能力终于得到了改进。
CREATE TABLE t1 (c1 INT PRIMARY KEY) DATA DIRECTORY = '/external/directory';
在早期版本的 MySQL 中,您可以使用符号链接(symbolic link)。也就是说,链接仍然必须驻留在默认数据目录下,但链接可以指向另一个物理设备上的文件。
以这种方式对单个表使用符号链接(symbolic link)是不可靠的,因为 OPTIMIZE TABLE 或许多形式的 ALTER TABLE 会在没有符号链接(symbolic link)的情况下重新创建文件,从而有效地将其移回主存储设备。为了解决这个问题,建议对架构子目录使用符号链接(symbolic link),而不是单独的表。
说实话,我从未发现需要使用这些技术的情况。只需保持简单:一个文件系统上的一个数据目录,并且不要将数据目录与根文件系统放在同一设备上。确保数据存储量足以容纳您的所有数据。如果您需要使用多个设备来创建一个更大的文件系统,请使用软件 RAID。
关于多个驱动器上的 MYSQL 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73253021/