MySQL和Mariadb数据库故障排错

1、报错信息

Job for mariadb.service failed because the control process exited with error code. See "systemctl status mariadb.service" and "journalctl -xe" for details.

使用 systemctl status mariadb.service

journalctl -xe

  1. 根据如上Mariadb报错的信息,表示Mariadb数据库服务启动时,要将启动信息、日常的信息写入日志目录中的日志文件中,而错误显示该日志目录不存在:/var/log/mariadb/,解决方法:
  • 检测一下该目录/var/log/mariadb/是否存在;
  • 如果目录不存在,创建目录即可,并且授权访问;
mkdir -p /var/log/mariadb/ 
chown -R mysql.mysql /var/log/mariadb/  
chmod -R o+w /var/log/mariadb/ 

根据如上的排错方法,数据库服务还是无法启动,报错信息如下:

  1. 根据如上Mariadb报错的信息,表示Mariadb数据库服务启动时,会加载Mariadb数据目录中的基础数据、表信息,错误显示数据库服务没有初始化,初始化主要是为了装载基础数据、创建用户、权限信息,定义数据库结构等,确保数据库初始化的时候,数据目录是空的,防止将往前的数据给覆盖。
/usr/bin/mysql_install_db --user=mysql --datadir=/var/lib/mysql/ --force(强制初始化);
 ll /var/lib/mysql/ 
 chown -R mysql /var/lib/mysql/ 
  1. 当我们查看软件服务启动日志、内核日志,均无法查找问题的原因时,记得查看软件服务的自身应用程序日志。应用程序的日志路径可以通过配置文件查找,/etc/my.cnf查看。

#静态查看日志文件末尾30行的日志信息;

tail -n 30 /var/log/mariadb/mariadb.log

#实时查看日志文件末尾30行的日志信息;tail -fn 30 /var/log/mariadb/mariadb.log (背锅侠专用)

  1. 根据如上的错误提示,表示启动Mariadb数据库服务时,会将启动的进程ID号写入至pid文件中,错误显示该pid文件无法写入,该文件或者目录不存在。

解决方法:

  • 检测该文件和目录是否存在,不存在创建并且授权mysql用户访问;
mkdir -p /var/run/mariadb/
chown -R mysql.mysql /var/run/mariadb/
  1. 使用mysql命令无法进入MYSQL数据库中,报错信息如下:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

  • #根据如上的错误的提示,表示不能连接MYSQL数据库服务,通过Socket文件:/var/lib/mysql/mysql.sock。
  • MYSQL数据库服务属于C/S模式(Client和Server),启动MYSQLD属于服务端,默认执行mysql命令回车(客户端工具|本地访问|远程访问|Navicat)。
  • MYSQL数据库连接访问,有两种方式,一种是通过TCP/IP远程连接方式,一种是通过本地socket文件方式,如上错误提示是使用的本地socket文件,可以通过my.cnf查看socket文件路径或者ps -ef|grep mysql查看。
 ps -ef|grep mysql
 cat /etc/my.cnf|grep socket
 mysql --socket=/tmp/mysql.sock
 ln -s  /var/lib/mysql/mysql.sock /tmp/ 
  1. Linux运维常见故障关键词(30+)
  • Error|ERROR|error(错误);
  • Failed|fail(失败);
  • Warning|warn(警告);
  • Deny|denied(拒绝);
  • Refused|refuse(拒绝);
  • Exit|exit(退出);
  • No such|No file|NOT(没有);
  • Not found|No exist(没有找到|不存在);
  • False|false(错误);
  • Can’t|Can not(不能)|not initialized(没有初始化);
  • Command not found| C CC not found(命令没有发现)
  • Cannot create(不能创建);
  • Permission denied(没有权限);
  • Can't connect(不能连接);
  1. 基于YUM二进制LNP+MYSQL主从实战
  2. 准备3台服务器,其中一台作为Nginx WEB服务器+PHP-FPM(FastCGI),另外两台作为MYSQL主从服务器,服务器IP信息:
  • 10.10.10.140-Linux+Nginx+PHP
  • 10.10.10.141-MYSQL Master;
  • 10.10.10.142-MYSQL Slave;
  1. 配置LNP,Nginx WEB服务器+PHP-FPM(FastCGI),配置方法如下:
  • 安装LNP服务;
yum install nginx php php-devel php-mysql php-fpm -y
  • Nginx默认发布目录:/usr/share/nginx/html/;
  • Nginx配置文件目录:/etc/nginx/
  • /usr/share/nginx/html/,发布目录创建index.php测试页面;
vim index.php  
<?php
phpinfo();
?> 
  • 配置LNP服务整合;
cd /etc/nginx
cp nginx.conf.default nginx.conf 
  • 添加PHP FastCGI 9000信息内容,其他配置信息不动;
location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;}
  • 启动Nginx、PHP-FPM服务即可;
service php-fpm restart
service nginx restart 

发表评论

后才能评论