记一次 Vagrant 环境下更换 MySQL 数据目录 datadir 的坑

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

正常更换目录的操作。#

  1. 查看数据目录
    mysql> select @@datadir;
    +------------------+
    | @@datadir        |
    +------------------+
    | /data/mysqldata/ |
    +------------------+
  2. 复制目录,并更改目录的用户组
    $ sudo cp -r /data/mysqldata/ /new_folder/
    $ sudo chown -R mysql:mysql /new_folder/
  3. 停止 mysql,修改 my.cnf 并启动 mysql
    $ sudo service mysqld stop
    $ sudo vim /etc/my.cnf     #并不一定在这个位置,可以find / -name my.cnf查找
    $ ...datadir=/new_folder
    $ sudo service mysqld start
  4. 按照上面的操作应该能成功,但是在 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 就可以了。

原文链接: https://www.phpbest.cn/posts/18.html#
本作品采用《CC 协议》,转载必须注明作者和本文链接
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。