记一次 The table ‘xx‘ is full 错误处理

今天要对自己本地机器上的数据库进行批量清洗和迁移操作,本来项目执行的好好的,就去忙其他的了,忙完回来后,发现报错了。一脸懵~~~~

下面就来说说我这次遇到的问题和解决方法

 遇到问题不要慌,先搜一下

大佬们都说遇到这种问题通常有两种原因:

1、磁盘满了;
2、表数据太多了

先按照第一种情况排查一下:

第一步,找到mysql的安装位置,我的是自己电脑(windows)上安装的数据库,我记得是安装在C盘上,就打开了‘文件管理器’,本来我的c盘就所剩不多了,果然满了。后悔把mysql装C盘了。

 

 第二步,清理binary logs

 查询binary logs是否开启

show VARIABLES like 'log_%';

log_bin的状态未ON,表明binlog日志开启,结果如下:

第二步:查询日志列表

show binary logs;

 结果如下

 

第三步:删除binlog日志文件,

注意:切勿删除正在使用的binlog!!不要手动去删除,会导致binlog.index和真实存在的binlog不匹配,要使用PURGE:

// 删除一天前的日志
PURGE MASTER LOGS BEFORE DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY);

// 删除	2023-05-25 18:09:51 前的日志
PURGE BINARY LOGS BEFORE '2023-05-25 18:09:51';

// 删除 DESKTOP-EN54GC6-bin.000065 前的日志
PURGE BINARY LOGS TO 'DESKTOP-EN54GC6-bin.000065';

最后,我们还可以根据自己的情况选择自动清理时效,

// 显示过期时效  binlog_expire_logs_seconds,默认2592000(30天)过期,可以设置 604800(7天)
show variables like '%expire%';

// 设置过期时效 
set global binlog_expire_logs_seconds=60*60*24;

// 刷新
flush logs;

 设置过期时间也可以直接修改my.ini配置文件,关闭修改再重启

expire_logs_days = 7 #自动删除15天前的日志。默认值为0,表示从不删除。

mysql8.0 关闭binlog :关闭mysql服务,找到my.ini, 在[mysqld] 下添加 skip-log-bin,然后重启MySQL,

注意 :不可以不关闭的情况下,修改重启。 在关闭后,可以下使用reset master把现有的binlog都删除掉,因为binlog关闭了,不会有正在使用的binlog,所以没问题。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值