当前位置:首页 > CN2资讯 > 正文内容

记一次系统宕机的解决过程——mysql日志文件mysql-bin.*占磁盘空间过大mysql宕机怎么解决

4天前CN2资讯

由于博主比较偏好网络技术且热衷于DIY,故从建博起就没有打算过CSDN等博客网站。从2007年起开始租用虚拟空间,到使用vps、云主机等直到现在采用ECS,每一阶段都需要大量的时间和精力去摸索和维护,虽然维护的过程是很艰难和急躁的,但是还是很乐于使用自己打造的东西,俗话说我的地盘我做主。

大部分博主为了省去不必要的时间和精力,一般采用CSDN等博客类网站,通过注册账号采用其平台进行博文的发布,这样的好处是降低建博成本、博客运行稳定、对蜘蛛的抓取也是很好的支持。但是美中不足就是缺少了个性化的能力,博主×××座,追求完美,所以目前本博是采用ECS+CDN的形式进行搭建的,因此,对系统的日常维护显得尤为重要而且消耗的精力较大。本文则记录一次困扰我三天的宕机问题解决过程,分享供有需要的人参考。

问题引出

前天登陆网站后发现了个奇怪的问题:首先,标签无法显示,其次,后台无法登陆,最后,文章页展示不出来(页面空白,后台报500错误)

问题分析

遇到问题后,十分纠结,首先我没有修改过后台文件,所以由代码导致的故障可以pass掉了。基本定位是系统故障或者黑客攻击。

虽然说我的服务器上每天承受着几百甚至上千人的各种攻击(密码尝试、sql注入、DDoS等等),但是我素来友好并无什么仇人,对这毫无价值的博客进行恶性攻击有点匪夷所思。登陆服务器后,进行了检测,发现并不是黑客的问题。

这下又陷入了疑惑,既然代码没问题,还不是黑客攻击,因为长期运行导致的宕机问题,很显而易见只能是数据库了,只有它可以自己的读写进行处理,而且前台的文章等内容都无法读取。

故进入服务器,重启服务器、重启mysql后,网站恢复正常。基本地位到问题根源(第一天,共耗4小时)

问题定位

当定位到是mysql数据库出现了问题后,对于是什么问题,如何修复依旧未知。

当重启后,过了几分钟又出现了同样的问题。原以为是数据库中表需要优化或修复,后来经过一系列的操作:卸载、安装、修改配置文件、修复等等均无济于事。更大的问题是,mysql一旦关闭就无法启动,而且查看/var/log/mysqld.log 是空文件。

经过一天折腾后,仍没有找到问题根本,但是基本知道是mysql的问题,尝试了无数次重装都无效而且日志文件是空。最终为了不影响博客的使用,博客土豪的采用了ECS+RDS+CDN的模式进行部署(第二天,共耗3小时)

第三天,在尝试更换新版本的mysql 5.5时,遇到了个问题无法安装,提示系统空间不足。于是我就困惑了,20G的硬盘不会因为挂个wordpress就满了吧?!通过df -lh查看了下硬盘的使用情况,顿时我惊呆了,20G的硬盘竟然使用率100%,究竟是什么占用了这么大的空间呢?

使用du -sh /root查看了下各个文件夹的使用,发现有个文件夹竟然占用了18G的大小,不断的深入发现了根源/var/lib/mysql下的N个mysql-bin.*文件,每个文件从几k到几G不等,上网查了下了解到,原来是mysql的操作日志,例如UPDATE一个表,或者DELETE一些数据,即使该语句没有匹配的数据,这个命令也会存储到日志文件中,还包括每个语句执行的时间,也会记录进去的。

因此定位问题:mysql的操作日志过大(四个月)已经18个G了,导致占据硬盘空间,使数据库无法正常使用导致宕机。

问题解决

1、进入mysql:mysql -u root -p

2、输入清楚日志文件命令:reset master;

可能会遇到问题:ERROR 1186 (HY000): Binlog closed, cannot RESET MASTER,原因是已经关闭了日志系统,所以无法清除,具体看下文问题解答。

问题避免

mysql数据文件才几百兆,而日志文件达到十几G,这究竟是有什么作用呢?这主要有两个作用:

(1)数据恢复

如果你的数据库出问题了,而你之前有过备份,那么可以看日志文件,找出是哪个命令导致你的数据库出问题了,想办法挽回损失。

(2)主从服务器之间同步数据

主服务器上所有的操作都在记录日志中,从服务器可以根据该日志来进行,以确保两个同步。

但是对于我这种小型服务器其实并不需要这样的日志系统,反而会影响我整个系统的运行。所以可以进行取消,方法如下:

1、打开mysql配置文件:vi /etc/my.cnf

2、将log-bin=mysql-bin和binlog_format=mixed 这两条注释掉即可.#log-bin=mysql-bin #binlog_format=mixed

问题解答

1、mysql启动错误:mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended

修改:vi /etc/my.cnf

1

2

3

[mysqld_safe]

err-log=/var/log/mysqld.log

pid-file=/var/lib/run/mysql/mysqld.pid

改成

1

2

3

[mysqld_safe]

err-log=/var/log/mysqld.log

pid-file=/var/lib/mysql/mysqld.pid


2、重装mysql后,启动失败

在重新安装mysql后需要重新初始化下,设置密码,办法,执行:mysql_secure_installation

3、数据库导入中,提示错误:#1115 – Unknown character set: ‘utf8mb4’

把utf8mb4 替换成 utf8 就可以了

4、数据库导入中,提示错误:#1153 – Got a packet bigger than ‘max_allowed_packet’ bytes

修改:vi /etc/my.cnf将max_allowed_packet值调大即可

5、遇到错误ERROR 1186 (HY000): Binlog closed, cannot RESET MASTER

开启服务器的日志系统,修改:vi /etc/my.cnf取消注释log-bin=mysql-bin和binlog_format=mixed

技术记录

1、centos彻底删除mysql


1

2

3

4

5

6

yum remove mysql mysql-server mysql-libs compat-mysql51

rm -rf /var/lib/mysql

rm /etc/my.cnf

查看是否还有mysql软件:

rpm -qa|grep mysql

有的话继续删除


2、安装mysql

(1)安装MySQL

  • yum install mysql mysql-server #询问是否要安装,输入Y即可自动安装,直到安装完成

  • /etc/init.d/mysqld start #启动MySQL

  • chkconfig mysqld on #设为开机启动

  • cp /usr/share/mysql/my-medium.cnf /etc/my.cnf #拷贝配置文件(注意:如果/etc目录下面默认有一个my.cnf,直接覆盖即可)

(2)为root账户设置密码:mysql_secure_installation后/etc/init.d/mysqld restart #重启

(3)安装PHP组件,使 PHP5 支持 MySQL

  • yum install php-mysql php-gd libjpeg* php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-bcmath php-mhash libmcrypt

  • /etc/init.d/mysqld restart #重启MySql

  • /etc/init.d/httpd restart #重启Apche


清水混凝土保护

    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/20104.html

    分享给朋友:

    “记一次系统宕机的解决过程——mysql日志文件mysql-bin.*占磁盘空间过大mysql宕机怎么解决” 的相关文章

    解决CloudCone IP被墙问题的有效方法与替代方案

    CloudCone IP被墙的背景 CloudCone是一家提供按小时计费的美国VPS服务商,其低廉的价格、SSD硬盘存储和CN2线路等优势,吸引了许多国内用户。作为一名曾经的CloudCone用户,我体会到其灵活的计费方式和稳定的性能确实能满足很多需求,特别是对于一些小型项目或者短期使用的开发者来...

    如何获取便宜稳定算力以推动科研与技术创新

    便宜稳定算力是一个现代计算资源获取的概念,特别是在人工智能、深度学习及科学计算等领域中,这种计算能力的经济性与可靠性显得尤为重要。它的定义可以简单理解为以相对较低的成本获得高效、稳定的计算资源。随着科技的迅速发展,企业和研究机构对计算资源的需求逐渐增加,如何以合理的投资实现算力购买成为一个值得关注的...

    阿里云国际站:轻松注册与支付方式全解析

    什么是阿里云国际站? 在这个科技迅速发展的时代,云计算已经成为许多企业和个人开展业务的重要基础设施。阿里云国际站便是一处全球化的云计算服务平台,旨在为世界各地的用户提供高效、灵活和安全的云计算服务。它不仅支持多种功能,还具备强大的全球基础设施,能够满足不同用户的需求。 阿里云国际站被设定为一个面向全...

    RackNerd在纽约的数据中心服务与优势

    RackNerd在纽约的数据中心的服务确实引人关注。从基础服务到多样化的产品,RackNerd为各类客户提供了丰富的选择。我对于他们的虚拟主机和独立服务器十分赞赏。这些服务不仅安全可靠,而且具有灵活的配置选项,满足了各种不同需求的用户。对于初创企业或者需要特别高可用性的业务,选择RackNerd无疑...

    支付宝与PayPal充值攻略:如何选择适合的支付方式

    支付宝和PayPal是当今全球最受欢迎的支付平台之一,它们各自具有独特的特点和广泛的用户群体。支付宝成立于2004年,由阿里巴巴集团推出,最初是为了支持电子商务交易,逐渐发展成一个多功能的支付应用。用户不仅可以通过它进行在线支付,还可以进行转账、充值、理财等多种活动。随着移动支付的兴起,支付宝也积极...

    zgocloud:提升数据管理效率的创新云计算解决方案

    zgocloud的定义与背景 在当今数字化快速发展的时代,zgocloud作为一种创新的云计算解决方案逐渐崭露头角。简单来说,zgocloud是一种基于云技术的平台,可以提供灵活的存储和计算能力。它的设计旨在更好地满足不同企业和个人用户在数据处理和管理方面的需求。成立之初,zgocloud就定位于提...