• 移走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
  • 相关阅读:
    ReactNative 打包 APK
    ReactNative常用命令
    ReactNative之坑:停在gradle一直出点
    Python搭建Web服务器,与Ajax交互,接收处理Get和Post请求的简易结构
    tensorflow 安装升级
    sqlserver 全库查询 带架构
    气象数据资料整理
    poj2841
    cf1430e
    cf1436d
  • 原文地址:https://www.cnblogs.com/qq931399960/p/9993903.html
Copyright © 2020-2023  润新知