网站总是挂掉,查看到原来是mysql总是莫名其妙的挂掉

1.查看mysql日志的位置

mysql> show VARIABLES like '%log%';
+-----------------------------------------+------------------------------------- ----------+
| Variable_name | Value |
+-----------------------------------------+------------------------------------- |
| log_error | /var/log/mysqld.log |
| log_output | FILE | |
+-----------------------------------------+------------------------------------- ----------+
rows in set (0.05 sec)

可得知mysql日志文件位于/var/log/mysqld.log

2.使用vim /var/log/mysqld.log 查看错误日志最后面发现如下内容

 :: [ERROR] /usr/local/mysql/bin/mysqld: Disk is full writing './erqilu_87/pw_log_userdefend.MYD' (Errcode: ). Waiting for someone to free space... (Expect up to  secs delay for server to continue after freeing disk space)

原来是磁盘空间满了

3.查看磁盘空间

[root@AY121231034820cd91077 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/xvda1 20G 20G 12M % /
tmpfs 498M 498M % /dev/shm
/dev/xvdb1 69G 21G 45G % /home

原来真的是爆满啊。。。。

4.查看具体那些文件占用了磁盘空间

[root@AY1212334820cd91077 ~]# du -h --max-depth= /
4.1G /var
.1G /root
97M /lib
156M /tmp
21G /home
11M /sbin
/opt
6.2M /bin
6.5G /usr
30G /
du 命令补习班
{
du -h --max-depth= / 这句话的意思是列举出(du)“/”目录下深度为一个文件夹(--max-depth=)的文件夹的大小并且以人能够看懂的方式表现(-h)也就是M,G,KB什么的
}

可以看到home文件夹最大,不过这个文件夹在第2步的时候已经知道了不是和mysql的文件挂在在同一个磁盘的

其次就是/usr文件夹还有/var文件夹

5.解决/usr文件夹的容量问题

依然使用du命令查看/usr文件夹

发现原来是/usr/local/nginx/logs文件夹中的nginx的日志文件太大了而且还有以前用vim打开的时候因为没有正确关闭而导致的swp文件,整个/usr/nginx/logs文件夹整整有6.4G

首先删除所有的swp文件和swo文件,一下子就清爽了许多

然后想着要定期的删除以下log文件,涉及到的知识有logrotate日志管理工具(参见我的另一篇日志)

打开/etc/logrotate.d/文件夹新建一个sample文件写入以下内容

        /usr/local/nginx/logs/erqilu.access.log{
olddir /usr/local/nginx/logs/oldErqiluAccessLogs //指定旧文件的存储文件夹
weekly //指定每周执行一次
dateext //指定转存后的文件以文件名+日期来命名
rotate //指定保存八个转存的文件
create root utmp //指定转存后创建新的文件权限和原来一样
sharedscripts
prerotate //执行前的动作的开始标志
/usr/bin/chattr -a /usr/local/nginx/logs/erqilu.access.log //将/usr/local/nginx/logs/erqilu.access.log变成不可追加字符串
endscript //执行前的动作的结束标志
postrotate //执行后的动作的开始标志
/usr/bin/chattr +a /usr/local/nginx/logs/erqilu.access.log //将/usr/local/nginx/logs/erqilu.access.log 变成可以追加字符
/bin/kill -HUP `cat /var/run/syslogd.pid > /dev/null` > /dev/bull || true //重新启动syslog进程 syslogd.pid中存储的是打开syslogd进程的时候分配的进程号
/bin/kill -HUP `cat /usr/local/nginx/logs/nginx.pid ` //重新启动nginx(nginx.pid文件中存储的是打开nginx服务的时候的进程号)
endscript //执行后动作的结束标志 }

然后使用命令:logrotate -f /etc/logrotate.d/sample 强制这个文件执行,

然后就会发现在 olddir /usr/local/nginx/logs/oldErqiluAccessLogs 多了一个erqilu.access.log-20150403而原来的那个文件也已经清空了,

在查看erqilu.access.log-20150403没有发现有什么问题之后,就将erqilu.access.log-20150403删除或者多执行几次:logrotate -f /etc/logrotate.d/sample

删除大文件之后,如果我们的配置正确的话,会每周都执行一次并且最大会保存八个历史文件,如果超出了八个就将最古老的那个文件删除

6.解决/var文件夹容量的问题

依然使用du命令发现占用空间最大的是/var/lib/mysql文件夹

打开一看不知道神马时候被人插入的数据库,使用phpmyadmin工具查看全是卖…………@#¥%……&*的

直接使用phpmyadmin将这个数据库删了,并且优化了一下数据库。

在这个文件夹中还有一个ibdata1文件,有几百M,经过查询时innodb类型的数据库产生的结构文件,并且如果数据库改动的话,这个文件并不会缩小,只会慢慢变大

还有两个几十M的文件ib_logfile0、ib_logfile1,经过查询,这些文件是myisam结构的数据库产生的结构文件

解决的办法如下

  • 停止mysql的运行,
  • 将服务器上的所有数据库备份(推荐使用phpmyadmin,教程可以看我的另一篇日志)
  • 将服务器上面的所有数据库删除
  • 将ibdata1、ib_logfile0、ib_logfile1全部删除,
  • 恢复原来备份的整个服务器的数据库

//蛋疼的是这样做太费事儿了,而且只是能将ibdata1这个文件缩小,得不偿失,放弃这个目标

经过这些步骤之后再次查看磁盘占用

[root@AY121231034820cd91077 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/xvda1 20G 13G .6G % /
tmpfs 498M 498M % /dev/shm
/dev/xvdb1 69G 21G 45G % /home

世界终于清静了

linux之mysql启动问题的更多相关文章

  1. Linux 平台MySQL启动关闭方式总结

    MySQL的启动方法有很多种,下面对比.总结这几种方法的一些差异和特性,下面实验的版本为MySQL 5.6.如有疏漏或不足,敬请指点一二.   1:使用mysqld启动.关闭MySQL服务 mysql ...

  2. linux下mysql 启动命令

    1,使用service 启动.关闭MySQL服务 service mysql start service mysql stop service mysql restart 运行上面命令,其实是serv ...

  3. Linux下mysql启动失败

    原因:强制重启服务器之后,发现mysql启动 失败 解决方法:强制清空 报错路径下的tmp文件,清空之后在tmp下面新建一个文件夹,文件夹的名字在你清空tmp之后启动mysql系统会给你提示 欧克,完 ...

  4. Linux下Mysql启动异常排查方案

    遇到Mysql启动异常问题,可以从以下几个方面依次进行问题排查: (1)如果遇到“Can't connect to local MySQL server through socket '/tmp/my ...

  5. linux下mysql启动出错

    1.刚安装完就启动出错,是因为没有开msql服务,开启即可,service mysql start 2.MySQL: mysql is not running but lock exists rm / ...

  6. Linux下MySql启动时报错

    /opt/mysql/support-files/mysql.server startmy_print_defaults: [ERROR] Found option without preceding ...

  7. Linux 安装MySql启动Can't locate Data/Dumper.pm in @INC

    通过RPM包CentOS7 安装MySQL的时候提示“Can't locate Data/Dumper.pm in @INC (@INC contains: /usr/local/lib64/perl ...

  8. linux下mysql启动 Starting MySQL. ERROR! The server quit without updating PID file(xxx/x.pid)

    service mysql start 报错: Starting MySQL. ERROR! The server quit without updating PID file(xxx/x.pid) ...

  9. linux 下mysql的启动 、调试、排错

    Linux 下 MySQL 启动与关闭 说明 一.启动 1.1  MySQL 进程 可以用ps 命令查看进程: [root@rac2 ~]# ps -ef|grep mysql root     21 ...

随机推荐

  1. java---数据格式的验证

    package cc.cococ.trade.util; import java.util.regex.Matcher; import java.util.regex.Pattern; public ...

  2. android 禁止viewPager 滑动

    public class ContainerViewPager extends MyViewPager { public ContainerViewPager(Context context, Att ...

  3. windows操作系统日常使用

    快捷键使用: 看实例,学经验,我看行. 1.人体学输入设备被禁用怎么办(鼠标被禁用.键盘被禁用) 有一天脑子抽风,把鼠标给禁用了.以前不常用快捷键,这下必须学学怎么使用快捷键了,现在记下来,防止以后脑 ...

  4. JVM-class文件完全解析-字段表集合

     字段表集合 这个class文件的解析,分析得有点太久了.前面介绍类魔数,次版本号,主板本号,常量池入口,常量池,访问标志,类索引,父类索引和接口索引集合.下面就应该到字段表集合了.  紧接着接口索引 ...

  5. Quartz 2D--长方形和线条绘图

    今天原本想模仿2048 游戏的. 但是在设计背景环境时,涉及到绘图的知识!于是就开始对绘图进行了一翻学习. 若想自己绘图必须 写自己的View(继承UICView):然后重写UIView 中的 dra ...

  6. MongoDB 聚合 (转) 仅限于C++开发

    MongoDB除了基本的查询功能,还提供了很多强大的聚合工具,其中简单的可计算集合中的文档个数, 复杂的可利用MapReduce做复杂数据分析. 1.count count返回集合中的文档数量 db. ...

  7. C#基础之类、组件和命名空间(二)

    一.实例化对象 Student s; 首先是在栈中开辟一块空间叫s,s里面的内容是空: s = new Student(); 在堆实例化Student对象,将对象的引用地址保存到栈s里.因此,s指向S ...

  8. objectARX 获取ucs的X方向

    struct resbuf var; acedGetVar(_T("UCSXDIR"), &var);//获取用户坐标系下X方向量 ver = asVec3d(var.re ...

  9. (转)JS中innerHTML,innerText,value

    原文:http://holysonll.blog.163.com/blog/static/21413909320134111054352/ JS中innerHTML,innerText,value 2 ...

  10. openstack 中 log模块分析

    1 . 所在模块,一般在openstack/common/log.py,其实最主要的还是调用了python中的logging模块: 入口函数在 def setup(product_name, vers ...