zoukankan      html  css  js  c++  java
  • Mysql重启报pid文件丢失(持续更新)

    mysql重启后报错
    信息如下
    ###################################################
    Redirecting to /bin/systemctl start mysql.service
    Job for mysqld.service failed because the control process exited with error code.
    See "systemctl status mysqld.service" and "journalctl -xe" for details.
    ##################################################

    查看服务运行信息
    systemctl status mysqld.service
    ##################################################
    ● mysqld.service - LSB: start and stop MySQL
    Loaded: loaded (/etc/rc.d/init.d/mysqld; generated)
    Active: failed (thawing) (Result: exit-code) since Thu 2021-04-08 23:22:55 PDT; 6min ago
    Docs: man:systemd-sysv-generator(8)
    Process: 13546 ExecStop=/etc/rc.d/init.d/mysqld stop (code=exited, status=0/SUCCESS)
    Process: 33545 ExecStart=/etc/rc.d/init.d/mysqld start (code=exited, status=1/FAILURE)

    Apr 08 23:22:54 primary systemd[1]: Starting LSB: start and stop MySQL...
    Apr 08 23:22:55 primary mysqld[33545]: Starting MySQL. ERROR! The server quit without updating PID file (/var/run/mysqld/mysqld.pid).
    Apr 08 23:22:55 primary systemd[1]: mysqld.service: Control process exited, code=exited status=1
    Apr 08 23:22:55 primary systemd[1]: mysqld.service: Failed with result 'exit-code'.
    Apr 08 23:22:55 primary systemd[1]: Failed to start LSB: start and stop MySQL.
    ##################################################

    情形一.异常数据文件影响服务启动
    截取错误日志/var/log/mysqld.log
    ##################################################
    2021-04-09T06:38:24.889010Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
    2021-04-09T06:38:24.889074Z 0 [Note] --secure-file-priv is set to NULL. Operations related to importing and exporting data are disabled
    2021-04-09T06:38:24.889090Z 0 [Note] /usr/local/mysql/bin/mysqld (mysqld 5.7.23-log) starting as process 35083 ...
    mysqld: File '/usr/local/mysql/bin-log/master-bin.index' not found (Errcode: 21 - Is a directory)
    2021-04-09T06:38:24.895144Z 0 [ERROR] Aborting

    2021-04-09T06:38:24.895151Z 0 [Note] Binlog end
    2021-04-09T06:38:24.895251Z 0 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete
    ##################################################

    日志说未找到/usr/local/mysql/bin-log/master-bin.index文件
    迁移或清空对应路径下文件master-bin.index后恢复
    mv master-bin.index master-bin.index.bak
    再次重启后成功

    具体什么原因最好的办法是先查看下错误日志:

    1、可能是/usr/local/mysql/data/mysql.pid文件没有写的权限
    解决方法 :给予权限,执行 “chown -R mysql:mysql /var/data” “chmod -R 755 /usr/local/mysql/data” 然后重新启动mysqld!

    2、可能进程里已经存在mysql进程
    解决方法:用命令“ps -ef|grep mysqld”查看是否有mysqld进程,如果有使用“kill -9 进程号”杀死,然后重新启动mysqld!

    3、可能是第二次在机器上安装mysql,有残余数据影响了服务的启动。
    解决方法:去mysql的数据目录/data看看,如果存在mysql-bin.index,就赶快把它删除掉吧,它就是罪魁祸首了。本人就是使用第三条方法解决的 !

    4、mysql在启动时没有指定配置文件时会使用/etc/my.cnf配置文件,请打开这个文件查看在[mysqld]节下有没有指定数据目录(datadir)。
    解决方法:请在[mysqld]下设置这一行:datadir = /usr/local/mysql/data

    5、skip-federated字段问题
    解决方法:检查一下/etc/my.cnf文件中有没有没被注释掉的skip-federated字段,如果有就立即注释掉吧。

    6、错误日志目录不存在
    解决方法:使用“chown” “chmod”命令赋予mysql所有者及权限

    7、selinux惹的祸,如果是centos系统,默认会开启selinux
    解决方法:关闭它,打开/etc/selinux/config,把SELINUX=enforcing改为SELINUX=disabled后存盘退出重启机器试试。

    以上摘抄https://blog.csdn.net/miss1181248983/article/details/82426283

    情形二.非正常关机导致pid文件丢失
    截取错误日志/var/log/mysqld.log
    ##################################################
    2021-04-10T05:58:06.290754Z 0 [ERROR] InnoDB: Table mysql.innodb_table_stats not found.
    2021-04-10T05:58:06.290791Z 0 [ERROR] InnoDB: Fetch of persistent statistics requested for table mysql.gtid_executed but the required system tables mysql.innodb_table_stats and mysql.innodb_index_stats are not present or have un
    expected structure. Using transient stats instead.
    2021-04-10T05:58:06.291796Z 0 [Warning] Failed to set up SSL because of the following SSL library error: SSL context is not usable without certificate and private key
    2021-04-10T05:58:06.292262Z 0 [Note] Server hostname (bind-address): '*'; port: 3306
    2021-04-10T05:58:06.292598Z 0 [Note] IPv6 is available.
    2021-04-10T05:58:06.292609Z 0 [Note] - '::' resolves to '::';
    2021-04-10T05:58:06.292634Z 0 [Note] Server socket created on IP: '::'.
    2021-04-10T05:58:06.294492Z 0 [ERROR] Can't start server: can't check PID filepath: No such file or directory
    ##################################################
    1.确认pid文件路径
    more /etc/my.cnf |grep -i pid

    2.依照my.cnf文件配置,创建对应的文件并修改权限(root特权执行)
    mkdir -p /var/run/mysqld
    chown mysql:mysql /var/run/mysqld
    touch /var/run/mysqld/mysqld.pid
    chown mysql:mysql /var/run/mysqld/mysqld.pid
    3.再次尝试重启

    情形三.如有用户权限启动问题,可尝试如下修改
    cp /etc/init.d/mysqld mysqld.bak
    修改mysql启动文件/etc/init.d/mysqld中start模块

    添加--user=root到mysqld_safe
    (bindir/mysqld_safe --user=root --datadir=")datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null &

    尝试重启

  • 相关阅读:
    防火墙透明模式
    HP管理工具System Management Homepage安装配置
    kbmmw 中JSON 中使用SQL 查询
    kbmmw 中JSON 操作入门
    第一个kbmmw for Linux 服务器
    kbmmw 5.02发布
    kbmmw 5.01 发布
    使用delphi 10.2 开发linux 上的Daemon
    使用unidac 在linux 上无驱动直接访问MS SQL SERVER
    使用delphi 10.2 开发linux 上的webservice
  • 原文地址:https://www.cnblogs.com/hongliang-dba/p/14637434.html
Copyright © 2011-2022 走看看