MySQL可以在不同的物理存储设备上使用多个数据目录

我正在使用128Gb SSD上的数据目录运行MySQL。 我正在处理每周加载和处理的大数据集(〜20Gb),每个数据集都存储在一个单独的数据库中用于时间点比较。 把所有的数据放到一个单一的数据库中是不可行的,因为在这样的大型数据库上的性能已经成为一个问题。 但是,我无法一次在SSD上保存6个以上的数据集。 现在我每周都要手动将最旧的2Tb转盘转储到数据库中,为新的转换空间腾出空间。 但是,如果我需要一个“归档”数据库(半经常发生),我必须删除当前的(转储后),重新加载它,做我需要的,然后扭转结果。

有没有办法将MySQLconfiguration为使用多个数据目录,比如说一个在SSD上,另一个在2TB的旋转磁盘上,然后透明地“合并”它们? 如果我能做到这一点,那么归档不再意味着“完全移出数据库”,而是意味着“移到慢物理设备上”。 在旋转磁盘上执行查询所需的时间将less于完全转储,删除,加载,删除和重新加载两个整个数据库所需的时间,所以这是一个胜利。

我想使用像unionfs这样的东西,但我想不出一种方法来控制哪个数据库被存储在哪个物理驱动器上,因为它通过合并目录级别(从我所知道的)来工作,所以我仍然坚持使用多个目录。

任何帮助感谢,提前感谢

首先,我认为我们应该考虑对于每个数据库db_name ,它将在其datadir(例如/var/lib/mysql )中存储一个文件夹 。 所以,从理论上讲,你可以只有符号链接到不同磁盘上的文件夹。 但是,这还有一个问题:如果使用InnoDB存储引擎,它不会将数据存储在文件夹中。 而是使用单个日志文件ibdata*

我认为这很重要:正如你所指出的,如果你想要的只是一个两个文件系统的简单联合,但是在写数据的时候它并不理解(或者不理解)后台存储的底层语义。

从头顶开始,我不能告诉你有一个文件系统可以完成你想要的function – 我也认为它可能太小。

不过 ,我想可能有几件事情可以考虑到你想要的地方:

  • 运行MySQL的两个副本,用他们自己的单独的数据目录。 然后,您可以使用FEDERATED表types来“模拟”将单个MySQL实例中的所有数据的效果。
  • 有点简单:符号链接,使用MyISAM表types(这将需要一些广泛的testing,当涉及到删除表,也许你只能截断它们,以防止链接丢失)