MySQL2003报错解决方案

MySQL2003错误通常由以下两个原因引起:出现这样的问题我们应该如何处理?以下是小树懒为大家整理的解决方案。
方法一:用鼠标启动MySQL服务第一步:打开管理器第三步:重新启动服务版本。
方法二:配置MySQL自动启动进入控制面板->服务管理,找到Mysql服务,右键更改其属性,以后启动就不会出现问题了。
注意:第三方软件可能会阻止MySQL在启动时启动。
方法三:使用cmd命令启动MySQL服务每次登录前,在cmd命令行中输入以下命令启动:如果mysql已经启动,则先将其关闭,打开命令提示符(管理员权限)。
,并执行以下命令:然后运行​​以下命令将重新启动mysql服务:方法四:更改端口1:检查检查正在使用的端口号使用以下cmd命令检查正在使用的端口号:检查端口号,输入以下命令:2:更改默认端口:在mysql安装路径中找到my.ini文件并更改。
其中的两个端口号(将蓝色部分的开头和结尾更改为默认的3306),保存并重新启动服务。
方法五:重新安装方法:当以上方法都无法解决MySQL2003错误时,如果没有其他解决办法,可以选择重新安装MySQL。
请务必卸载并重新安装所有原MySQL相关内容(包括MySQL服务和注册表相关MySql内容)。

启动mysql服务器报错

正常情况下,MySQL启动错误很容易排查,但今天我们要讨论一种不寻常的情况。
我拿到一台服务器,安装了mysql后,得到的错误如下:

有的同学把bufferpool设置的太大了,达到了96G。
这显然表明内存无法分配。
如果是这样我就不在这里分享了哈哈。

我的服务器内存是128G。
如下:

服务器内存使用情况:

那么问题就是还剩下多少内存。
无法分配内存??。
你觉得婴儿鞋怎么样?

1.首先,我的脑海中出现了一点记忆碎片?于是运维同学检查了一下,反馈硬件正常。

2.我又检查了mysql的配置参数,网上一直都是用这些参数。

3.将文件复制到另一台机器上,另一台服务器可以正常启动(两台机器硬件配置相同)。

那么如果硬件问题和mysql配置问题都排除了。
只保留操作系统的内核参数配置。
所以对比了两台服务器,发现后台的Kernel框架是一致的。

复制下面的代码:

vm.overcommit_memory

Mysql启动常规服务器。
将参数值改为0,mysql启动错误服务器时该值应为2。

那么问题是,这个规格是什么?这实际上导致mysql无法分配内存,最终无法启动。
查询信息后;我发现了vm.overcommit_memory是什么。

vm.overcommit_memory

默认值为:0。
来自内核文档;该参数有三个值;这意味着:0:当用户空间请求更多内存时。
内核试图估计可用内存。
1:当该参数的值为1时,内核主要用于科学计算2:当该参数的值设置为2时;内核允许内存被过度使用,直到被使用为止。
一种从不使用内存的算法。
这意味着系统整个内存地址空间不能超过swap+50%的RAM值,50%的参数设置是在overcommit_ratio中指定的。

vm.overcommit_ratio的默认值为:50

此限制值仅在vm.overcommit_memory=2时适用。

然后我们看看总共不能超过多少个内存地址。
其实你可以看直播。

[root@yayundeng3306]#cat/proc/meminfo|grep-icommitCommitLimit:70144396kBCommited_AS:135196kB[root@yayundeng3306]#

看70G就知道了。
那么你如何计算这个呢?这就是上面的公式。
交换+RAM值的50%;50%参数设置设置为overcommit_ratio。

总虚拟内存=可用物理内存×百分比+交换空间分区

[root@yayundeng3306]#cat/proc/meminfo|grepMemTotalMem总计:132096808kB[root@yayundeng3306]g3306]#[root@yayundeng3306]#free-ktotal使用的空闲共享缓冲区cacheMem:1320968081583944130512864010240133220://缓冲区/缓存:1440484130656324Swap:409599204095992[root@yayundeng3306]#cat/proc/sys/vm/overcommit_ratio50[root@yayundeng3306]undeng3306]#

总虚拟内存=132096808*50%+4095992=70144396kB

那么最终结果就是bufferpool不能超过70144396kB-135196kB=70009kB=70009kB。
事实上,经过测试,缓冲池只能设置为57G。

最后,查看总虚拟内存:

CommitLimit:最大可用虚拟内存

Commissed_AS:已使用虚拟内存

[root@yayundeng3306]#cat/proc/meminfo|grep-icommitCommitLimit:70144396kBCommissed_AS:65539208kB

然后是内核参数如果vm.overcommit_memory返回默认值0;不会受到限制。

复制代码如下:

/proc/sys/vm/overcommit_memory

参考资料:

http://服务器故障。
com/questions/606185/how-does-vm-overcommit-memory-workhttp://linuxperf.com/?p=102

总结:

说了很多,那么内核参数vm为什么要修改.overcommit_memory的值呢?这台服务器先跑了一个GreenPlum数据库,我拿到的时候也没有重装系统,所以如果我拿到的机器之前跑过其他作业的话。
最安全的方法就是重装系统。
如果不是自己的事,莫名其妙的问题就会变成现实。