vagrant - 使用NFS文件夹作为mysql datadir无法启动mysql的问题?
ringa_lee
ringa_lee 2017-04-17 15:01:36
0
1
690

我使用的主机是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的方案...有没有人有解决方案?

ringa_lee
ringa_lee

ringa_lee

membalas semua (1)
迷茫

最近正好刚移动过数据库目录:

mv /var/lib/mysql/* /home/mysql/ ln -s /home/mysql/mysql.sock /var/lib/mysql/mysql.sock chown -R mysql:mysql /home/mysql

但当移动目录是挂载目录比如vagrant sync folder时,无法改变用户组,mysqld启动不了...你是怎么做到的

    Muat turun terkini
    Lagi>
    kesan web
    Kod sumber laman web
    Bahan laman web
    Templat hujung hadapan
    Tentang kita Penafian Sitemap
    Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!