记一次vagrant环境更换mysql数据目录datadir的坑

@luke  August 3, 2018

平时用vagrant开发,无奈磁盘只给分配了10g空间,数据库文件越来越大导致mysql挂掉,想到将datadir放到共享目录,这样就不占用空间,说干就干。

正常更换目录的操作。

查看数据目录

mysql> select @@datadir;
+------------------+
| @@datadir        |
+------------------+
| /data/mysqldata/ |
+------------------+

复制目录,并更改目录的用户组

$ sudo cp -r /data/mysqldata/ /new_folder/
$ sudo chown -R mysql:mysql /new_folder/

停止mysql,修改my.cnf并启动mysql

$ sudo service mysqld stop
$ sudo vim /etc/my.cnf     #并不一定在这个位置,可以find / -name my.cnf查找
$ ...datadir=/new_folder
$ sudo service mysqld start

按照上面的操作应该能成功,但是在vagrant下有个问题,如果new_folder在vagrant共享目录,那么这个目录的用户组为vagrant:vagrant,chown也无效,所以导致更改正确但还是不能启动的问题,下面是解决办法。

vagrant环境下的操作。

在Vagrantfile中添加两行配置,

config.vm.synced_folder "/path/mysqldata", "/data/mysqldata", owner: "mysql", group: "mysql"
config.vm.provision "shell", inline: "sudo service mysql start"

然后启动虚拟机环境的时候,vagrant up --provision就可以了。

附:导入导出.gz格式的mysql数据
$ gunzip < test.gz | mysql -uroot -p database
$ mysqldump -uroot -p database | gzip > test.gz

添加新评论