美文网首页
记一次修复MySQL socker 错误

记一次修复MySQL socker 错误

作者: __XY__ | 来源:发表于2018-04-03 15:48 被阅读0次

    问题描述

    初次往数据库中source 一个超大的文件,过了一会sql报错 table is full
    然后去data 目录查看大小,发现一个表的ibd文件2G,果断删除了这个文件。
    没想到继续报错。

    Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
    

    目前来看,是mysql服务启动的时候报错了,服务未能成功启动。

    查看log tail -f /var/log/mysql/error.log

    Header page consists of zero bytes in datafile: ./ibdata1, Space ID:0, Flags: 0. Please refer to http://dev.mysql.com/doc/refman/5.7/en/innodb-troubleshooting-datadict.html for how to resolve the issue.```
    大概意思是说 header page 为空。
    造成的结果就是innodb init 失败。
    

    尝试 innodb restore(失败)

    修改配置

    [mysqld] innodb_force_recovery = 1
    

    重启依然报错,放弃。

    search mysql missing ./ibdata1 datafile

    try google the problem ,解释如下:

    what is ibdata1

    我们一定要记住一点:/var/lib/mysql/ibdata1 是InnoDB架构中最繁忙的文件。一般来说他主要负责6种类型的信息:
    
    *  表数据
    
    *   表索引数据
    *   [多版本并发控制数据 MVCC (Multiversioning Concurrency Control)](http://en.wikipedia.org/wiki/Multiversion_concurrency_control) Data
        *   回滚段数据(Rollback Segments)
        *   Undo Space
    *   表元数据(Table Metadata (Data Dictionary))
    *   Double Write Buffer (background writing to prevent reliance on OS caching)
    *   Insert Buffer (managing changes to non-unique secondary indexes)
    *   See the [**Pictorial Representation of ibdata1**](http://www.scribd.com/doc/31337494/XtraDB-InnoDB-internals-in-drawing)
    

    去确认innodb_data_file配置没有问题

    config

    innodb_data_file_path = ibdata1:10M:autoextend:max:128M
    

    try 卸载mysql(失败,死循环)

    Apr 03 07:06:05 local systemd[1]: Failed to start MySQL Community Server.
    Apr 03 07:06:05 local systemd[1]: mysql.service: Unit entered failed state.
    Apr 03 07:06:05 local systemd[1]: mysql.service: Failed with result 'exit-code'.
    dpkg: error processing package mysql-server-5.7 (--configure):
     subprocess installed post-installation script returned error exit status 1
    Errors were encountered while processing:
     mysql-server-5.7
    E: Sub-process /usr/bin/dpkg returned an error code (1)
    

    然后去解决这个错误

    sudo dpkg --configure -D 777 mysql-server-5.7
    

    问题又回归到mysql 的这个 报错

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

    死循环。

    回头解决开始的问题本身(搞定)

    把报错的ibdata既然是已经不能用了,为什么不把它删除了呢?
    删除后发现成功~~~~~~~~~~~~~~~~~~~~
    
    

    那么这时候再进行 apt update 应该就没有问题了

    总结

    1 去找error log 去定位问题
    2 针对问题只进行相关的操作,别跑太远了,必然都是错的。
    3 其实最正确的方法是,既然表不够,去根据df -h 去查看挂载情况
    并且根据 du -sh 去确认mysql已使用的容量。

    另外一个问题

    Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.
    发现不要瞎更难/etc/mysql/mysql.conf.d/mysqld.cnf 里面的东西
    要新开一个~/.mycnf文件。

    如何确认自己的配置是否正确

    mysql --help 会自动读取相关的配置文件,如果运行没有错误,那么mysql服务器重启也不会有啥大问题。

    相关文章

      网友评论

          本文标题:记一次修复MySQL socker 错误

          本文链接:https://www.haomeiwen.com/subject/mnnqhftx.html