Mysql允许不同表存储在不同目录但不能修改
Mysql8.0默认引擎innoDB是可以允许表存储在不同目录的,方法如下:
mysql>CREATE TABLE ‘your table name’ (…) DATA DIRECTORY=’/usr/yourpath’;
一切看起来很好,但问题就在于,如果因为某种原因想要把原来的表修改存储位置,就会很麻烦了。首先Mysql8文档明确告诉我们, 用ALTER TABLE的方式不支持修改存储目录。
我查了下网上有的方式,对这个问题阐述最全的是如下这篇文章: https://www.moxio.com/blog/28/moving-individual-mysql-tables-on-disk
但我实际用discard tablespace 然后 import tablespace的方法并不能奏效,也许和版本有关。使用新表导入数据的方式, mysql> INSERT INTO ‘’table_name_new‘’ SELECT * FROM ‘’table_name‘’; 正如作者所说,表不能太大,有性能瓶颈问题,效率也很低,非常费时、
无意中发现一个简单的解决办法
先把mysqld 服务关闭。把数据idb文件从原来目录直接mv移动到新的目录。然后重新启动mysqld, 问题直接解决。
当然这种方法不适合于不能停止数据库的情况。另外,目标目录必须是 InnoDB能识别的目录,就是说在innodb_directories 或者其他配置文件的目录列表内。
以上测试操作系统为Centos 7.
|