导入数据磁盘满重启失败解决过程

导入数据磁盘满重启失败解决过程

    # mysqlimport 导入数据磁盘满,登录 mysql 想执行 purge binary logs,但执行 show binary logs 已卡死
    systemctl stop mysql

    # stop mysql 后错误日志如下
    tail -f /var/log/mysql/error.log
        2022-02-08T01:29:23.513307Z 135 [ERROR] [MY-010907] [Server] Error writing file 'binlog' (errno: 28 - No space left on device)

    # 禁用 bin log 后重启
    vi /etc/mysql/mysql.conf.d/mysqld.cnf
        disable_log_bin
    systemctl start mysql

    # 启动几个小时也没有成功,一直卡在下面

    tail -f /var/log/mysql/error.log
        2022-02-08T01:34:52.792314Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
        2022-02-08T02:04:40.048902Z 0 [System] [MY-010229] [Server] Starting XA crash recovery...

    # 正常 stop mysql 无法成功,直接强杀

    systemctl stop mysql
    kill -9 $mysql_pid

    # 设置 force recovery 为 6,人工不执行进程崩溃前的未提交事务回滚操作
    vi /etc/mysql/mysql.conf.d/mysqld.cnf
        innodb_force_recovery=6
    systemctl start mysql

    # mysql 能正常启动,但无法删除导入失败的表
    mysql
        drop table error_table;
            error

    # 手工删除 binlog 文件,恢复正常启动模式,无法启动报错
    rm /var/lib/mysql/binlog.00*
    vi /etc/mysql/mysql.conf.d/mysqld.cnf
        innodb_force_recovery=0
    systemctl stop mysql
    systemctl start mysql
    tail -f /var/log/mysql/error.log
        2022-02-08T04:20:43.697017Z 1 [ERROR] [MY-012179] [InnoDB] Could not find any file associated with the tablespace ID: 481        

    # 正常 stop 失败,强杀,然后设置 force_recovery=1 重启,然后删除错误表
    kill -9 $mysql_pid
    vi /etc/mysql/mysql.conf.d/mysqld.cnf
        innodb_force_recovery=1
    systemctl start mysql
    mysql
        drop table error_table;

    # 恢复正常启动模式,启动成功
    systemctl stop mysql
    sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
        innodb_force_recovery=0
    systemctl start mysql

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 当Linux磁盘了时,可以采取以下措施来解决: 1. 删除不必要的文件或目录,释放磁盘空间。 2. 使用磁盘清理工具,如du和df命令,查看磁盘使用情况,找出占用空间较大的文件或目录。 3. 移动一些文件到其他磁盘或存储设备中,以释放磁盘空间。 4. 压缩一些文件或目录,以减小它们的占用空间。 5. 扩大磁盘容量,可以添加新的硬盘或扩展现有的磁盘容量。 总之,当Linux磁盘了时,需要及时采取措施来解决,以避免对系统的正常运行造成影响。 ### 回答2: 在 Linux 中,当磁盘空间不足时,我们需要采取一些措施来解决这个问题。以下是一些建议: 1.查找大文件:使用命令“du -sh *”来查找占用磁盘空间最大的文件或目录。然后决定是否删除或移动这些文件。 2.删除日志文件:许多应用程序在运行期间会生成大量的日志文件。可以使用命令“ls -lh /var/log/”来查找和删除较旧的日志文件。 3.清空回收站:如果您有一个回收站管理器来存储已删除文件,可以使用命令“rm -rf ~/.local/share/Trash/*”来清空回收站并释放储存空间。 4.删除不必要的程序:检查系统中安装的所有软件,并删除那些不再需要的程序。可以使用命令“sudo apt-get autoremove”来删除不必要的软件。 5.使用压缩技术:如果您有多个文档或文件,可以使用压缩技术将它们压缩成单个文件。这可以帮助节省一些储存空间。 6.删除缓存:使用命令“sudo apt-get clean”来清除所有旧的软件包,这可以释放一些磁盘空间。 7.扩展磁盘:如果以上的方法仍然无法解决问题,您可以考虑扩展磁盘空间。有几个方法可以增加磁盘空间,包括添加新的磁盘驱动器或调整分区大小。 需要注意的是,操作前要备份重要数据,并总是小心操作。 ### 回答3: 当Linux系统中的磁盘空间已时,需要及时采取行动,否则会导致系统崩溃或者文件丢失。以下是解决Linux磁盘的方法: 1. 查找可删除的文件:使用命令df -h 可以查看文件系统的空间使用情况,找出哪些文件占用了最多的空间。使用命令du -h --max-depth=1 / |sort -rn可找出在根文件夹下最大的文件,然后删除它们或者将它们移到其他磁盘。 2. 清空日志文件:系统日志是文本文件,会随着时间不断增大,占用大量的磁盘空间。使用命令rm /var/log/*可清空所有的日志文件,并重启syslog服务(service syslog restart)。 3. 缩小数据库:如果系统使用了数据库,将数据库的日志和缓存文件移动到其他磁盘,将其压缩和优化,以缩小数据库文件的大小。 4. 清空缓存:使用sync命令刷新缓存,将没有使用的缓存清除掉,可以释放磁盘空间。 5. 调整文件上传和备份策略:限制上传文件的大小,并定期备份和清理过期的备份数据,防止文件批量保存至服务器。 总之,当Linux系统的磁盘空间已时,应该先清理一些占用空间大的文件,然后再进行其他的操作,如清空日志文件、缩小数据库等。在日常工作中,还要注意对文件上传和备份策略进行适当的调整,以避免磁盘空间不足的情况发生。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值