DSP

linux mysql问题集

2019-07-13 12:56发布

   原来的机器上有mysql5.7的版本,最近在安装gitlab的时候,自动安装了rpm包的mysql5.1,导致原来的mysqld出现了一系列的问题。

问题log可以通过 /var/log/mysqld.log来查看,如果没有输出日志的话,可以在/etc/my.cnf  配置文件的[mysqld]            log-error=/var/log/mysqld.log
问题1: 原来我用通用二进制安装的mysql5.7无法使用service mysqld stop,所有后来我使用                 原因:  由于我在进行gitlab安装的时候,出现了自带安装了mysql,可能是这个原因导致了/etc/init.d/mysqld这个服务文件被覆盖。 解决方法:killall -9 mysqld 强制将所有的mysqld进制杀掉 问题2:强制关闭了msyqld后,出现了service msyqld start 启动失败,MySQL Daemon failed to start. Starting mysqld: [FAILED]  在/var/log/mysqld.log中可以看到 key_buffer_size=402653184 read_buffer_size=2097152 max_used_connections=23 max_threads=151 threads_connected=11 It is possible that mysqld could use up to  key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 1013277 K bytes of memory 所以我在/etc/my.cnf修改了       read_buffer_size,sort_buffer_size 的值,发现并不起作用
 我猜测原因:主要是因为在进行gitlab安装的时候,rpm安装mysqld的时候,将/etc/init.d/mysqld的shell脚本覆盖成了msyqld5.1的版本的原因,后来我将原来/usr/local/mysql/support-files下的mysql.server重新替换到/etc/init.d/mysqld,再进行service  mysqld start 就成功了。(/etc/init.d/mysqld是shell脚本,对其解读可以更深入了解原因)
ps -ef |grep mysqld   可以查看到详细的信息
从上面可以看到现在的mysqld使用的是socket ,datadir,log-error,这些内容在/etc/my.cnf的[mysqld]进行修改
问题3:出现mysql 连接mysqld失败的原因 Can't connect to local MySQL server through socket                               '/var/lib/mysql/mysql.sock'         原因:主要是直接使用mysql  ,系统先匹配使用了rpm安装的mysql客户端,而这个客户端是通 过/var/lib/mysql/mysql.sock连接到mysqld的,而mysqld的socket=/tmp/mysql.sock的,所以没办法通过本机的socket连接上去 (补充:which是查找命令是否存在,以及命令的存放位置在哪儿。                whereis只能用于搜索程序名,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件                 (参数-s)。如果省略参数,                                      则返回所有信息。                find是最常用和最强大的查找命令。它能做到实时查找,精确查找,但速度慢。)

从上图可看出:rpm包安装的mysql客户端命令是在/usr/bin/mysql   ,而mysql5.7 安装的mysql客户端是在/usr/local/mysql/bin/mysql;通过which mysql输入了/usr/bin/mysql就说明了直接使用mysql的话会优先匹配到 rpm包安装的mysql的客户端。
如果你想使用mysql5.7的客户端就需要你特定的指明使用的是那个路径下的mysql客户端
从上图可以看出,如果要使用特定的mysql的话就需要指明路径
    (补充说明:Version: '5.7.11'  socket: '/tmp/mysql.sock'  port: 3306  MySQL Community Server (GPL)
    当你使用service mysqld start的时候,可以通过/var/log/mysqld.log的日志文件看到这些信息)
问题4:Incorrect information in file xx.frm                                    原因:出现这种问题的主要就是因为mysql连接到的mysqld版本不匹配            解决:可以让mysql客户端连接到正确的mysqld,或者将其中一个mysqld和mysql客户端卸载掉                       或者修改删除一个客户端(也是为了匹配到正确的mysqld)