ZBLOG

mysqldump Query execution was interrupted, maximum statement execution time exceeded when dumping table `xxl_job_log` at row: 134188

这个错误在使用 mysqldump 导出大表时很常见。以下是针对性的解决方案:

1. 使用 mysqldump 专用参数

# 推荐方案:使用这些参数组合
mysqldump --max-allowed-packet=1G \
          --net-read-timeout=3600 \
          --net-write-timeout=3600 \
          --quick \
          --single-transaction \
          --skip-lock-tables \
          your_database_name xxl_job_log > xxl_job_log.sql

2. 分批导出(最可靠)

# 方法1:按ID范围分批
# 先查询最大最小ID
mysql -e "SELECT MIN(id), MAX(id) FROM your_database.xxl_job_log"

# 然后分批导出(假设id范围1-500000)
for i in {0..4}; do
  start=$((i*100000+1))
  end=$(( (i+1)*100000 ))
  mysqldump your_database xxl_job_log --where="id BETWEEN $start AND $end" > xxl_job_log_${i}.sql
done

3. MySQL服务器端临时设置

-- 在另一个MySQL会话中执行(临时生效)
SET GLOBAL max_execution_time = 0;
SET GLOBAL net_read_timeout = 3600;
SET GLOBAL net_write_timeout = 3600;

-- 或者在导出前在当前会话设置
SET SESSION max_execution_time = 0;

##4. 永久解决方案:修改MySQL配置

# /etc/my.cnf 或 /etc/mysql/my.cnf
[mysqld]
max_execution_time = 0
net_read_timeout = 7200    #2小时  
net_write_timeout =7200   
max_allowed_packet=1G

[mysqldump]
quick
max_allowed_packet=1G

重启MySQL服务:

sudo systemctl restart mysql   #或 mysqld

##5. 替代方案:使用 SELECT INTO OUTFILE

--在MySQL中直接导出为文件  
SELECT * FROM xxl_job_log 
INTO OUTFILE '/tmp/xxl_job_log.csv' 
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"' 
LINES TERMINATED BY '\n';

##6. 对于超大表的优化建议

如果表非常大,考虑只导出需要的数据:

#只导出最近一年的数据  
mysqldump your_database xxl_job_log \
--where="trigger_time > DATE_SUB(NOW(), INTERVAL1 YEAR)" \
--quick --single-transaction > recent_data.sql

#或者只导出表结构,不导数据(用于分析)
mysqldump --no-data your_database xxl_job_log > structure_only.sql  

##7. 检查并优化源表

--检查表大小  
SELECT table_name, 
       ROUND((data_length + index_length) /1024/1024,2) as size_mb  
FROM information_schema.tables 
WHERE table_name = 'xxl_job_log';

--考虑归档旧数据后再导出  
CREATE TABLE xxl_job_log_archive AS 
SELECT * FROM xxl_job_log WHERE trigger_time < '2023-01-01';

推荐执行顺序

  1. 先用方案2的分批导出确保数据安全
    2.然后使用方案1的完整参数尝试一次性导出
    3.长期考虑用方案4修改配置


    内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=24418

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?