datadir设置为软链接无法启动mysql

问题描述 投票:0回答:3

目前我遇到了 mysql 启动问题,无法弄清楚这里发生了什么。 如果datadir设置在/var/lib/mysql中,并启动mysql:

sudo /etc/init.d/mysql start

启动 MySQL...成功。 并且 mysql 可以正常工作。

但是由于设备空间的原因,我需要将 datadir 更改为另一个分区。 它会显示:

[admin@shwzu lib]$ sudo /etc/init.d/mysql start
Starting MySQL. ERROR! The server quit without updating PID file (/var/lib/mysql/datadir/shwzu.pid).

我只是尝试了有关它的所有信息,这是有关设置的详细信息

=> 1. 如果文件夹位于/var/lib/mysql,则一切正常:

drwxrwxrwx 6 mysql mysql 4096 Mar 27 06:03 mysql

=> 2. 将目标文件夹更改为另一个名为“test”的分区。并创建“mysql”文件夹。另外,我将所有者 ans 用户更改为 mysql。 然后创建软链接。 (sudo ln -s /test/mysql /var/lib/mysql)

/test分区的权限:(在/test中)

[admin@shwzu /]$ ls -l

drwxrwxrwx   7 root root  4096 Mar 27 06:27 test

/test/mysql文件夹的权限:

drwxr-xr-x 6 mysql mysql  4096 Mar 27 06:24 mysql

/test/mysql文件夹内的权限:

drwxr-xr-x 5 mysql mysql 4096 Mar 27 06:24 datadir
drwxr-xr-x 2 mysql mysql 4096 Mar 27 06:24 ibdatadir
drwxr-xr-x 2 mysql mysql 4096 Mar 27 06:24 log
-rwxr-xr-x 1 mysql mysql  158 Mar 27 06:24 RPM_UPGRADE_MARKER
-rw-r----- 1 mysql mysql 2562 Mar 27 06:24 slow_queries.log
drwxr-xr-x 2 mysql mysql 4096 Mar 27 06:24 tmp
-rw-r----- 1 mysql mysql 2031 Mar 27 06:24 shwzu.err

软链接的权限:(在/var/lib/mysql中)

  lrwxrwxrwx 1 mysql mysql   12 Mar 26 10:34 mysql -> /test/mysql

执行初始化命令:

sudo mysql_install_db
。而且效果很好。

  1. 错误信息

[admin@shwzu lib]$ sudo /etc/init.d/mysql start 启动 MySQL。错误!服务器退出而不更新 PID 文件

(/var/lib/mysql/datadir/shwzu.pid)。

/test/mysql/datadir 中的 shwzu.err 文件将显示:

140327 09:56:24 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql/datadir
140327 09:56:24 mysqld_safe mysqld from pid file /var/lib/mysql/datadir/shwzu.pid ended

==>太奇怪了!这里没有其他消息,只有两行!!!!!!

  1. 双重检查

    1)没有mysql进程。

    2)没有僵尸进程。

    3)mysql文件夹及其中的文件的所有者和用户设置为“mysql”。

    4)清理datadir中的所有内容。 => 失败并显示相同的消息。

  2. 尝试和错误

    1)将“/var/lib/mysql”文件夹名称改为“/var/lib/mysql_”,并创建软链接(软链接路径与成功文件夹相同):

    lrwxrwxrwx 1 mysql mysql 12 Mar 26 10:38 mysql -> mysql_

    [Result]: Failed with the same message.
    

    2)修改/etc/my.cnf到目标文件夹“/test/mysql”,而不是使用软链接:

    [Result]: Failed with the same message.
    

    3)将成功文件夹“/var/lib/mysql”复制到“/test/mysql”并创建软链接:

    [Result]: Failed with the same message.
    

我真的不知道这个问题,这让我很困惑,我没有找到任何解决方案。 有人可以帮我吗?

非常感谢!

mysql symlink my.cnf
3个回答
2
投票

请检查您的服务器配置文件。我在 /etc/my.cnf 中找到了“symbolic-links = 0”,并在该行前面添加了一个“#”:

[mysqld]
# Disabling symbolic-links is recommended to prevent assorted security risks; to do so, uncomment this line:
#symbolic-links = 0

2
投票

如果其他人发现此问题,请更改 my.cnf 中的 datadir 设置本身,而不是创建 MySQL 数据目录的符号链接

使它像:

datadir = /some/other/drive/mysql

实际上,仅仅更改 my.cnf 中的 datadir 是行不通的。 我还必须更改此文件中的数据目录:/etc/apparmor.d/usr.sbin.mysqld

然后:

/etc/init.d/apparmor 重新加载

摘自: 如何更改MySQL数据目录?


0
投票

apparmor才是罪魁祸首!

如果您已将 mysql 移至

/data/mysql

编辑

/etc/apparmor.d/tunables/alias
甚至还有一个mysql示例行,只需取消注释即可。

# Or if mysql databases are stored in /home:  
alias /var/lib/mysql/ -> /data/mysql/,

重启apparmor

service apparmor restart

重新启动mysqld

service mysql start
© www.soinside.com 2019 - 2024. All rights reserved.