• 移走mysql data目录,及常见mysql启动问题


    一般mysql安装在/usr/local/下,现以将/usr/local/mysql/data目录移动到/home/mysql下为例

    首先保证/home/mysql目录是存在的,本例中使用了mysql开机启动,如下为data目录未移动之前的开机启动service文件

    [Unit]
    Description=Mysql
    After=syslog.target network.target remote-fs.target nss-lookup.target
    
    [Service]
    Type=forking
    PIDFile=/usr/local/mysql/data/mysql.pid
    ExecStart=/usr/local/mysql/support-files/mysql.server start
    ExecReload=/bin/kill -s HUP $MAINPID
    ExecStop=/bin/kill -s QUIT $MAINPID
    PrivateTmp=false
    
    [Install]
    WantedBy=multi-user.target
    ~                                                                                                                                                                                                            

    若未使用开机启动,也可使用下面命令分别对mysql进行启动和停止操作

    启动mysql

    /usr/local/mysql/support-files/mysql.server start

    停止mysql

    /usr/local/mysql/support-files/mysql.server stop

    下面开始进入mysql data目录移动

    1、停止mysql

    systemctl stop mysql

    2、移动mysql data目录

    mv /usr/local/mysql/data /home/mysql/

    3、修改mysql配置文件my.cnf,一般在/etc/下,在[mysqld]下添加或修改如下参数,默认pid文件在datadir目录下,且和主机名一致,但为防止主机名变化后,mysql.service文件pid名称未更新,故建议将pid名称固定,pid不一定要放到data目录下,放到其他地方也行

    pid-file=/home/mysql/data/mysql.pid
    datadir=/home/mysql/data

    4、修改mysql启动文件,/usr/local/mysql/support-files/mysql.server

         该文件中datadir目录默认为空,修改成如下形式 (如果my.cnf配置有datadir,该步骤可以省略)

    datadir=/home/mysql/data

    5、修改开机启动文件,/usr/local/systemd/system/mysql.service,PIDFile修改成如下形式

    PIDFile=/home/mysql/data/mysql.pid

    6、使配置生效

    systemctl disable mysql
    systemctl enable mysql
    systemctl daemon-reload

    7、启动mysql

    systemctl start mysql

    mysql启动常见问题

    问题一

    “The server quit without updating PID file”是比较常见的mysql启动问题
    Nov 21 10:34:51 localhost.localdomain systemd[1]: Starting Mysql...
    Nov 21 10:34:53 localhost.localdomain mysql.server[45912]: Starting MySQL.. ERROR! The server quit without updating PID file (/usr/local/mysql/data/mysql.pid).
    Nov 21 10:34:53 localhost.localdomain systemd[1]: mysql.service: control process exited, code=exited status=1
    Nov 21 10:34:53 localhost.localdomain systemd[1]: Failed to start Mysql.
    Nov 21 10:34:53 localhost.localdomain systemd[1]: Unit mysql.service entered failed state.

    启动错误,在mysql的data目录下会存在一个后缀为err的日志,上述mysql data目录移动后,日志路径变为/home/mysql/data/localhost.localdomain.err,该日志会提供一些启动失败的错误信息

    如下解决方式供参考

    一、/usr/local/mysql/data目录不存在

    解决方案:(两种方式)

    1、修改/etc/my.cnf文件,添加pid-file,指向mysql具有权限的地址

    2、新建 /usr/local/mysql/data 目录,要保证mysql对该目录 具有权限             

    二、mysql对/usr/local/mysql/data目录不具有权限

    解决方案

    chown -R mysql:mysql /usr/local/mysql/data

    三、进程中已经启动有mysql,通过“ps -ef|grep mysqld”查看,如果存在则,kill掉

    四、删除mysql时为删除完全

    解决方案:

    在mysql安装目录下的data目录下,查看是否存在mysql-binlog.index,若存在,则删除

    五、mysql启动时未指定datadir

    解决方案:

    在mysql配置文件/etc/my.cnf,及启动文件mysql.server中添加datadir,可参考上述“mysql data目录移动”进行设置

    六、centos系统,默认会开启selinux  (暂时还未碰到过)

    解决方案:

    1、临时改为告警模式,shell命令行输入setenforce 0

    2、打开/etc/sysconfig/selinux,把SELINUX=enforcing改为SELINUX=disabled

     问题二

    mysql反复重启,且通过kill命令无法关闭

    每次ps -ef| grep mysqld时发现pid都不同,且启动日志中显示mysql在重复启动

    解决办法:

    我所碰到的这种情况是磁盘不足,删除了部分文件,移走重要的大文件,mysql不再重复启动,但kill不掉,kill后,mysql会自动重启,通过在上面提到的mysql自带命令可以关闭

    /usr/local/mysql/support-files/mysql.server stop
  • 相关阅读:
    HDU 1009 FatMouse' Trade
    HDU 2602 (简单的01背包) Bone Collector
    LA 3902 Network
    HDU 4513 吉哥系列故事——完美队形II
    LA 4794 Sharing Chocolate
    POJ (Manacher) Palindrome
    HDU 3294 (Manacher) Girls' research
    HDU 3068 (Manacher) 最长回文
    Tyvj 1085 派对
    Tyvj 1030 乳草的入侵
  • 原文地址:https://www.cnblogs.com/qq931399960/p/9993903.html
Copyright © 2020-2023  润新知