故障案例 | 主从复制环境中tokudb引擎报错排查过程

[MY-010584] [Repl] Slave SQL for channel ‘‘: Worker 1 failed executing transaction ‘8a6a904d-f 2022-07-26T09:42:41.428914+08:00 18 [Warning] [MY-010584] [Repl] Slave SQL for channel '': Worker 1 failed executing transaction '8a6a904d-f8df-11ec-8bc3-000c2927da2f:132' at master log jaspondb-binlog.000006, end_log_pos 45170; Error executing row event: 阅读详情

欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答

  • GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。

0.背景介绍

在某系统中为了保证历史数据的压缩性,采用tokudb引擎存储数据。

slave节点所在机器数据盘总大小33TB,故障时磁盘剩余空间1.1TB。

[root@redhat76-greatdb greatdb]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        33T   32T  1.1T  97% /
devtmpfs         63G     0   63G   0% /dev
tmpfs            63G     0   63G   0% /dev/shm
tmpfs            63G  4.0G   59G   7% /run

1.现象描述

master节点正常进行,slave节点的数据库错误日志如下:

2021-05-08T18:31:00.210203+08:00 44458 [ERROR] Slave SQL for channel '': Worker 1 failed executing transaction 'fb18799a-afeb-11eb-a3f0-fa163e18e1d9:513684180' at master log greatdb-bin.031344, end_log_pos 8397; Could not execute write_rows event on table test.t1; Got error 28 from storage engine, Error_code: 1030; handler error No Error!; the event's master log FIRST, end_log_pos 8397, Error_code:1030
2021-05-08T18:31:00.210236+08:00 44457 [Warning] Slave SQL for channel '': ... The slave coordinator and worker threads are stoppped, possibly leaving data in inconsistent state, A restart should restore consistency automatically, althougn using non-transactional storage for data or info tables or DDL queries could lead to problems. In such cases you have to examine your data (see documentation for details). Error_code:1756 

此时slave不可进行读写,回放中止

2.原因分析

由于此前没有处理过tokudb相关问题,且受此时磁盘剩余1.1TB空间影响。因此,第一反应是检查 tmpdir 空间是否足够。

MySQL [(none)]> show variables like '%tmpdir%';
+-------------------+----------------------------------------+
| Variable_name     | Value                                  |
+-------------------+----------------------------------------+
| innodb_tmpdir     |                                        |
| slave_load_tmpdir | /greatdb/tmp                           |
| tmpdir            | /greatdb/dbdata/greatdb57_data3307/tmp |
+-------------------+----------------------------------------+
3 rows in set (0.01 sec)

检查 tmpdir 目录的空间和内容,确认空间足够,应该不是问题原因。

再次检查错误日志,其中 1030 Got error 28 from storage engine 表明可能是tokudb的限制,因此检查tokudb引擎相关参数。

其中注意到参数 tokudb_fs_reserve_percent:

MySQL [(none)]> show variables like '%tokudb%fs%';
+---------------------------+-------+
| Variable_name             | Value |
+---------------------------+-------+
| tokudb_fs_reserve_percent | 5     |
| tokudb_fsync_log_period   | 0     |
+---------------------------+-------+
2 rows in set (0.00 sec)

手册里该参数的解释是:

variable tokudb_fs_reserve_percent
Command Line: Yes
Config File: Yes
Scope: Global
Dynamic: No
Variable Type: Numeric
Range: 0-100
Default Value: 5
This variable controls the percentage of the file system that must be available for inserts to be allowed. By default, this is set to 5. We recommend that this reserve be at least half the size of your physical memory. See Full Disks for more information.

看到默认设置是5,也就是说磁盘剩余可用空间低于5%的时候,拒绝写入,直到释放出更多的空间。

此时slave节点数据盘剩余3%,应为问题原因。

3.处理方法

  • 如评估具备重启条件,可更改tokudb_fs_reserve_percent后重启(本环境考虑实例数据量较大、安全等因素,未采用此方案)。
  • 清除过期的binlog和relaylog,purge binary logs & relay_log_purge。
  • 由于该机器上部署多个slave节点,且每个slave积压大量的relay log(12TB),因此确认masterbinlog信息后使用reset slave暂时清理中继日志,重新获取。
  • 清理相关日志、无用的安装包等。
  • 联系业务清理无用的数据表,master节点先truncate,slave节点执行set sql_log_bin=0;truncate table;set sql_log_bin=1。
  • 随时监测磁盘剩余空间,保障主从正常回放。

4. 总结

tokudb为了保障数据库服务正常,每5秒检测一次磁盘剩余空间,默认剩余5%的时候阻塞写入,直到释放更多的空间再恢复正常。

该限制由只读的静态参数 tokudb_fs_reserve_percent 控制剩余百分比。在INNODB、MYISAM等引擎上没有这个参数可配置,因此磁盘能够写到100%。

在使用tokudb时,应提前考虑好该参数设置,当监测到磁盘使用95%以前就要准备扩容。当然,5%只是默认的percona推荐值,实际使用中应根据数据盘大小进行调整。

参考文档

Enjoy GreatSQL :)

文章推荐:

GreatSQL MGR FAQ https://mp.weixin.qq.com/s/J6wkUpGXw3YkyEUJXiZ9xA

万答#12,MGR整个集群挂掉后,如何才能自动选主,不用手动干预 https://mp.weixin.qq.com/s/07o1poO44zwQIvaJNKEoPA

『2021数据技术嘉年华·ON LINE』:《MySQL高可用架构演进及实践》 https://mp.weixin.qq.com/s/u7k99y6i7riq7ScYs7ySnA

一条sql语句慢在哪之抓包分析 https://mp.weixin.qq.com/s/AYibbzl860D90rOeyjB6IQ

万答#15,都有哪些情况可能导致MGR服务无法启动 https://mp.weixin.qq.com/s/inSGpd0Q_XIl2Mb-VsvNsA

技术分享 | 为什么MGR一致性模式不推荐AFTER https://mp.weixin.qq.com/s/rNeq479RNsklY1BlfKOsYg

关于 GreatSQL

GreatSQL是由万里数据库维护的MySQL分支,专注于提升MGR可靠性及性能,支持InnoDB并行查询特性,是适用于金融级应用的MySQL分支版本。

Gitee: https://gitee.com/GreatSQL/GreatSQL

GitHub: https://github.com/GreatSQL/GreatSQL

Bilibili: https://space.bilibili.com/1363850082/video

微信&QQ群: 可搜索添加GreatSQL社区助手微信好友,发送验证信息“加群”加入GreatSQL/MGR交流微信群

QQ群:533341697 微信小助手:wanlidbc

本文由博客一文多发平台 OpenWrite 发布!

STM32 RC522串口驱动程序 (简单直接) rc522作为使用非常多的读写卡芯片,使用SPI芯片读写应用已经非常广了。但有些时候我们只有串口可以使用,或者我们觉得串口使用更加方便,那么就必须要编写串口的驱动程序。不过很难找到可以直接使用的串口程序。所以在此将我这边写好的串口驱动写好如下: 直接上代码 下面是RC522.C的驱动文件。支持读写卡号8位数据。rc522用的是stm32 的串口3,调试显示是串口1; #include "rc522.h" #include "delay.h" ///////////////////////////////// 阅读详情

相关推荐

从DBC到ARXML:详解DaVinci Configurator中通信栈的自动化配置逻辑

本文深入解析了Vector公司DaVinci Configurator工具如何将DBC文件自动转换为符合AUTOSAR标准的ARXML配置,详细介绍了从DBC到ARXML的映射逻辑、自动化配置的边界与陷阱,以及工程实践中的优化策略。帮助工程师高效配置汽车电子系统中的通信协议,提升项目开发效率。

weixin_30279671的博客 717

2021-09-08Cloudera Manager集群报警,堆转储目录/tmp 或日志目录/var/log 可用空间小于 5.0 吉字节

解决办法: 1、先找到报错的主机 输入查看磁盘存储的命令 df -h 如图:可以看出centos-root 已使用63%,/dev/sdb 20G未使用 可使用 du -h -d1 去制定目录查看文件夹大小,删除无用数据释放空间 解决CDH空间不足办法: 将hive、spark、yarn等服务下搜索、var、tmp、 在前面添加/home/ckt/work_1,将其产生的数据存放到空闲的盘下 详细请参考:https://blog.csdn.net/xueyao0201/article/details/795

DaDaeleven的博客 611

Mongodb操作与Java(四)MongoTemplate的使用

MongoTemplate的使用

A乐神的博客 3437

percona mysql5.7.14安装tokudb引擎

[root@python data3306]# mysql -u root -p Enter password:  Welcome to the MySQL monitor.  Commands end with ; or \g. Your MySQL connection id is 7 Server version: 5.7.14-7-log Percona Server (GPL),

北风之神 2222

手把手教你解决CentOS sshd启动报错:从权限问题到目录缺失的全套解决方案

本文提供了一套完整的CentOS SSH服务启动故障排查与修复方案。针对sshd启动报错,从systemd日志分析、sshd -t配置测试入手,详细解决了私钥文件权限过宽(如0644错误)和权限分离目录缺失等典型问题,并附带了扩展排查清单,帮助运维人员系统性地定位和解决连接故障。

weixin_29248611的博客 152

SQLite学习——Dapper初识

dapper下载:https://www.nuget.org/packages/Dapper/1.40.0

jiDxiaohuo的博客 1297

tokudb 安装mysql_tokuDB 安装与备份小记

线上的数据增长越来越快,数据量的增长也愈来愈大,尤其是日志类数据,这对于数据迁移、数据备份恢复而言,都是一个非常大的挑战。于是想到了 13 年开源 tokuDB 存储引擎,来解决我们迫在眉睫的容量问题。TokuDB 是一个高性能、支持事务处理的 MySQL 和 MariaDB 的存储引擎。TokuDB 的主要特点是高压缩比,高 INSERT 性能,支持大多数在线修改索引、添加字段,特别适合像 Za...

weixin_39702483的博客 383

FineReport SQL查询分页

打开模板>模板web属性>分页预览设置,选择为该模板单独设置,将默认的工具栏按钮全部清除掉,然后依次添加两个自定义按钮,一个邮件按钮,两个自定义按钮,一个Word格式,一个PDF按钮。如下所示:注:使用具体格式按钮,如邮件、Word格式、PDF按钮是为了JS直接使用控件名称获取空间方便修改其内容;

lep的博客 2428

mysql 复制 错误,FAQ系列 | 从MySQL 5.6到5.7复制错误解决

*************************** 1. row ***************************Slave_IO_State: Waiting for master to send event…Last_Errno: 1756Last_Error: … The slave coordinator and worker threads are stopped, possi...

weixin_33891841的博客 456

knowhere | 第一课:项目导论与环境搭建

摘要 本课程是Knowhere项目的第一课,重点介绍项目整体架构和开发环境搭建。Knowhere定位为AI Agent的文档记忆基础设施,通过解析多格式文档并保留结构化信息(如章节层级、表格语义等),为Agent提供可导航的文档知识。项目采用Python monorepo结构,核心包括: apps/api:FastAPI服务,处理HTTP请求和流程调用 apps/worker:Celery服务,执行文档解析等耗时任务 packages/shared-python:共享基础设施层 课程明确了各层职责边界,并推

weixin_43674738的博客 152

YOLOv8改进 | 注意力机制 | 添加DAttention (DAT)注意力机制实现极限涨点

本文给大家带来的是YOLOv8改进DAT的教程,其发布于2022年CVPR2022上同时被评选为Best Paper,由此可以证明其是一种十分有效的改进机制,其主要的核心思想是:引入可变形注意力机制和动态采样点(听着是不是和可变形动态卷积DCN挺相似)。同时在网络结构中引入一个DAT计算量由8.9GFLOPs涨到了9.4GFLOPs。本文的讲解主要包含三方面:DAT的网络结构思想、DAttention的代码复现,如何添加DAttention到你的结构中实现涨点,下面先来分享我测试的对比图。

Snu77的博客 1万+

MySQL体系架构完全解析:从SQL执行链路到InnoDB存储引擎

数据库性能优化的起点,往往在于理解一条SQL从客户端到存储引擎的完整旅程。MySQL作为最流行的开源关系型数据库,其分层架构(Server层与存储引擎层解耦)是理解其高可用、高性能的基石。从连接管理、解析器、优化器到执行器,每一环节都影响着查询效率;而InnoDB存储引擎通过缓冲池、redo log、undo log、MVCC及B+树索引等机制,保障了事务安全与并发能力。本文从基础概念切入,深入剖析SQL执行链路和InnoDB核心组件,并结合慢查询、死锁、连接爆满等常见问题,给出架构层面的调优与排查思路。无

weixin_34405557的博客 468

Android AICore的核心组件工作原理解析

AICore通过LoRA实现个性化适配Gemini Nano提供多模态智能Safety Features保障可信运行,构建了端侧AI的完整生态。这种设计不仅让手机等移动设备能处理复杂AI任务(如实时多模态交互),还通过隐私保护机制打破了传统云端AI的数据依赖,为未来“设备即AI基础设施”的愿景奠定了基础。输入触发:用户输入“刚提交了代码,等审核”→ 进入TEE加密处理。Gemini Nano基础生成:通过原始权重W_q生成初始回复候选。LoRA个性化微调:通过A'和B'计算ΔW,更新W_q。

1553

MySQL选型实战指南:云RDS、PolarDB与自建场景决策矩阵

MySQL作为最主流的关系型数据库,其部署形态已从单一自建演进为云托管(如RDS)、云原生(如PolarDB)与深度定制并存的多元格局。理解不同形态背后的技术原理——如RDS的虚拟机托管架构、PolarDB的计算存储分离、自建MySQL对内核与IO栈的完全掌控——是规避性能瓶颈与运维风险的前提。这种差异直接决定技术价值:RDS降低人效成本与启动门槛,PolarDB提升扩容确定性与高可用水位,自建则在极致延迟、合规审计或深度定制场景提供不可替代的自由度。典型应用场景包括电商核心交易库(需RPO=0)、IoT日

weixin_34043301的博客 503

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

阿里云MySQL选型指南:RDS与自建的实战决策逻辑

数据库选型本质是技术能力、运维成本与业务稳定性的综合权衡。MySQL作为最主流的关系型数据库,在云环境下面临自建与托管(如阿里云RDS)两条路径:自建提供完全控制权,但需承担部署、高可用、备份、安全合规等全栈责任;RDS则通过AliSQL内核优化、智能SQL诊断、秒级故障切换等能力,将不确定性运维转化为SLA可承诺的服务。尤其对中小团队而言,‘能否睡个安稳觉’比‘参数是否最优’更具现实意义。本文聚焦阿里云场景,结合MySQL特性与RDS托管实践,拆解性能、成本、安全、扩展性等维度的真实约束,助力开发者在业务

weixin_34417200的博客 348

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

从库mysqldump会导致复制中断

作者:张政俊就职于中欧基金,知数堂粉丝,数据库爱好者,熟悉RDBMS、nosql、new sql等各类数据库。背景环境数据库版本:5.6.24-log主从架构:一主两从搭配mha操作...

老叶茶馆 602

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

[ERROR] Slave SQL for channel ‘‘: Could not execute Write_rows event on table xxx.xxx; Duplicate ent

环境:centos7 , MySQL5.7一主一从 背景:从上用xtrabackup物理恢复后,感觉gtid相差不大,直接change master to master_host........ 问题:从上数据恢复一段时间后,gtid增加到某个值时,从库报错,从上错误日志显示:[ERROR] Slave SQL for channel '': Could not execute Write_rows event on table xxx.xxx; Duplicate entry 'xxxxxx' for

m0_37713013的博客 9172

故障案例----tokudb启动失败

现象 tokudb显示正常关闭 2016-10-18 14:22:19 144471 [Note] /opt/udb/program/mysql/percona-5.6.21/bin/mysqld: Normal shutdown ..... ..... 2016-10-18 14:22:23 144471 [Note] Shutting down plugin 'mysql_old

cug_jiang126com的专栏 2504

Slave SQL for channel ‘‘: Slave failed to initialize relay log info structure from the repository,

mysql57 集群配置报错 Slave SQL for channel '': Slave failed to initialize relay log info structure from the repository, Error_code: 1872

qq_47800859的博客 786

MySQL主从复制异常.md

一、MySQL 5.6 >> MySQL 5.7错误信息: Last_Error: ... The slave coordinator and worker threads are stopped, possibly leaving data in inconsistent state. A restart should restore consistency automatical...

weixin_33998125的博客 535

mysql 复制 错误提示_FAQ系列 | 从MySQL 5.6到5.7复制错误解决

*************************** 1. row ***************************Slave_IO_State: Waiting for master to send event...Last_Errno: 1756Last_Error: ... The slave coordinator and worker threads are stopped, p...

weixin_35824356的博客 574

Slave SQL for channel '': Error 'Plugin 'auth_socket' is not loaded' on query.

配置文件添加 plugin-load-add=auth_socket.so

微微一笑 566

[ERROR] Slave SQL for channel ‘‘: Error executing row event: ‘Unknown storage engine ‘FEDERATED‘‘

生产mysql从主从失败查看日志报错FEDERATED引擎错误, 1.登录mysql查看引擎状态: mysql> show ENGINES; +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ | Engine | Support | Comment

一点浩然气 836

MySQL 复制相关问题处理

部分参数设置 my.cnf server-id = 1 log_bin = mysql-bin binlog_format = row expire_logs_days = 7 sync_binlog = 1 sync_relay_log = 10000 sync_relay_log_info = 10000 relay_log_purge = 1 relay_log_recovery = 1...

1722
上一篇: MySQL为什么“错误“选择代价更大的索引
下一篇: 万答17,AWS RDS怎么搭建本地同步库
GreatSQL社区
博客等级 码龄5年 1210粉丝 390原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值