我使用的主机是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_size
2016-06-27T08:56:12.882602Z 0 [ERROR] InnoDB: Plugin initialization aborted with error Generic error
2016-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的方案...有没有人有解决方案?
최근에 데이터베이스 디렉토리가 이동되었습니다:
으아악그런데 이동한 디렉터리가 vagrant sync 폴더 등 마운트된 디렉터리일 경우에는 사용자 그룹을 변경할 수 없고 mysqld를 시작할 수 없습니다... 어떻게 하셨나요