我的问题是,有没有办法在同一时间(Windows)从不同的驱动器读取mysql数据文件夹?
例如:我有来自驱动器C:的1TB数据库,以及来自驱动器D:的另一个1TB。因此,当我启动mysql时,它只会看到两个驱动器中的两个数据库。
发布于 2021-05-02 20:49:51
给定的MySQL实例只能使用一个datadir。在datadir下,每个MySQL模式都驻留在一个子目录中。
例如,默认的datadir是C:\Program Files\MySQL\MySQL Server 8.0\data。
Schema1将在C:\Program Files\MySQL\MySQL Server 8.0\data\Schema1之下
Schema2将在C:\Program Files\MySQL\MySQL Server 8.0\data\Schema2之下
但是,如果您可以欺骗Windows,使其认为Schema2子文件夹实际上使用了物理驱动器D:中的存储,那么您就可以实现您想要的结果。
一种方法是使用mklink,如下面所示:https://dev.mysql.com/doc/refman/8.0/en/windows-symbolic-links.html,我更喜欢这个解决方案,因为它允许您针对D:驱动器上的特定路径。
第二种选择是使用虚拟驱动器。Windows允许您将驱动器映射到另一个驱动器的特定路径。使用此选项的Windows用户并不多,他们更喜欢使用驱动器作为驱动器。
https://winaero.com/create-virtual-drive-from-a-folder-in-windows-10/
所以你会用
SUBST D: C:\Program Files\MySQL\MySQL Server 8.0\data\Schema2有关更多细节,请阅读我链接到的文章。
无论您使用哪种解决方案,现在Schema2下的文件都会自动存储在物理驱动器D:上,并且不会占用物理驱动器C:上的空间。
如果您已经创建了Schema2呢?因此,C:上已经有了该模式的表的子目录。好吧,你得做些文件杂耍才能做到这点。我没有Windows机器,所以我不能测试它,也不能给出有关步骤的建议。
记住,在运行MySQL服务器服务时,不要手动移动MySQL表。先停止服务,否则会损坏数据。在另一台服务器上实践这种配置,而不是您的重要生产数据,并在尝试任何操作之前对整个数据库实例进行备份。
https://dba.stackexchange.com/questions/290883
复制相似问题