vagrant - 使用NFS文件夹作为mysql datadir无法启动mysql的问题?
问题描述
我使用的主机是WIN10系统,搭建了一个以vagrant来控制的虚拟机作为开发环境。我的虚拟机是vbox,系统是centos7。所有需要依赖的vagrant插件全部都安装好了,包括vboxadditional vagrant-nfs vagrant-winnfs vagrant-bindfs。主要问题如下:我的/etc/my.cnf配置了datadir是我的vagrant NFS共享文件夹。叫/vagrant_db,权限什么的都用bindfs已经配置好了的。用户是mysql 用户组也是mysql。我的mysql.sock配置不变,仍然是/var/lib/mysql,因为我试过无数次配置到/vagrant_db都启动不了.....然后开机自动启动mysql居然可以成功.....但是数据库目录明显不是/vagrant_db。然后关闭mysql 重新开启mysql失败,报错:
2016-06-27T08:56:12.882562Z 0 [ERROR] InnoDB: Log file ./ib_logfile0 size 4096 is not a multiple of innodb_page_size2016-06-27T08:56:12.882602Z 0 [ERROR] InnoDB: Plugin initialization aborted with error Generic error2016-06-27T08:56:13.484483Z 0 [ERROR] Plugin ’InnoDB’ init function returned error.2016-06-27T08:56:13.484510Z 0 [ERROR] Plugin ’InnoDB’ registration as a STORAGE ENGINE failed.2016-06-27T08:56:13.484516Z 0 [ERROR] Failed to initialize plugins.2016-06-27T08:56:13.484519Z 0 [ERROR] Aborting
好吧,貌似是innodb出了问题。而且是./ib_logfile0这个文件的锅。机智的我就把/var/lib/mysql下面的所有文件全部复制到/vagrant_db下面去。然后果然能启动了.....估计是某些原因开启启动的时候的环境和再次启动的环境不同导致的问题?然后机智的我就去取消了mysqld的开机启动。然后手动启动mysql....依旧启动不了...不知道是为什么必须要以/var/lib/mysql为datadir成功启动一次然后复制文件过去/vagrant_db才能以/vagrant_db启动成功。我去google过说是Innodb的机制的问题。但是我现阶段的环境非常需要以NFS作为共享文件夹来作为datadir同时,我也不会多虚拟机启动去同时使用一个innodb数据库。我知道这样会触碰到innodb的锁机制。我只需要一次启动就可以使用NFS文件夹作为datadir的方案...有没有人有解决方案?
问题解答
回答1:最近正好刚移动过数据库目录:
mv /var/lib/mysql/* /home/mysql/ln -s /home/mysql/mysql.sock /var/lib/mysql/mysql.sockchown -R mysql:mysql /home/mysql
但当移动目录是挂载目录比如vagrant sync folder时,无法改变用户组,mysqld启动不了...你是怎么做到的
相关文章:
1. node.js - nodejs debug问题2. myeclipse中有AB两个项目,A项目的java文件用GBK编码,B项目用utf-8编码,怎么办?3. android - 怎么adb logcat 输出到文件,并把文件命名为当前时间?4. 这段代码既不提示错误也看不到结果,请老师明示错在哪里,谢谢!5. node.js - webpack-dev-server正常运行,webpack打包却出错,怎么办?6. objective-c - iOS 开发中 WKWebView 的使用问题拦截跳转7. java - 请问在main方法中写成对象名.属性()并赋值,与直接参参数赋值输错误是什么原因?8. angular.js - yeoman创建好框架后,如何运行dist目录9. html - jQuery 移动端横向滚动会带动网页上下滑动怎么办?10. node.js - node_moduls太多了
