工具分享-从ibd文件中恢复数据的神器ibd2sql

MySQL面试宝典:从索引原理到高可用架构的深度解析 数据库索引是提升查询性能的核心技术,其底层通常采用B+Tree数据结构,通过有序的叶子节点和矮胖的树形结构,实现高效的范围查询和减少磁盘IO。理解索引原理是进行SQL优化的基础,能够帮助开发者避免索引失效、利用覆盖索引,从而显著提升系统吞吐量。在事务处理方面,MySQL通过MVCC(多版本并发控制)和锁机制保障了ACID特性,其中可重复读隔离级别结合间隙锁有效解决了幻读问题。这些机制共同支撑了高并发场景下的数据一致性,例如在电商、社交等互联网应用中确保订单、点赞等业务的正确性。本文聚焦MySQL索引、事务隔 阅读详情

工具分享-从ibd文件中恢复数据的神器ibd2sql

1. ibd2sql 的使用场景

在单节点单表表空间损坏的情况下,一般我们想到的方法是从最近的备份中恢复表数据并从Binlog中合并数据。

假如备份和Binlog缺失,那就只能从ibd文件中紧急恢复数据,可以使用 ibd2sql 这个工具去恢复数据。

2. ibd2sql 简介

ibd2sql is tool of transform mysql ibd file to sql(data).

ibd2sql是一个使用纯python3编写的离线解析 MySQL InnoDB 存储引擎的ibd文件的工具。无第三方依赖包,使用GPL-3.0 license。

3. 实测

3.1 环境信息

操作系统:ky10.x86_64

数据库版本:GreatSQL-8.0.32-27

3.2数据库安装并初始化数据

GreatSQL安装参考:二进制包安装 | GreatSQL用户手册

--创建测试库
CREATE database test;
--创建测试表
CREATE TABLE `test`.`workflow_state` (
  `id` int NOT NULL AUTO_INCREMENT,
  `creator` varchar(64) DEFAULT NULL,
  `create_at` datetime(6) NOT NULL,
  `update_at` datetime(6) NOT NULL,
  `updated_by` varchar(64) DEFAULT NULL,
  `end_at` datetime(6) DEFAULT NULL,
  `is_deleted` tinyint(1) NOT NULL,
  `name` varchar(64) NOT NULL,
  `desc` varchar(64) DEFAULT NULL,
  `type` varchar(32) NOT NULL,
  `processors_type` varchar(32) NOT NULL,
  `processors` varchar(255) DEFAULT NULL,
  `distribute_type` varchar(32) NOT NULL,
  `notify_rule` varchar(32) NOT NULL,
  `notify_freq` int NOT NULL,
  `fields` longtext,
  `extras` varchar(1000) DEFAULT NULL,
  `is_draft` tinyint(1) NOT NULL,
  `is_builtin` tinyint(1) NOT NULL,
  `workflow_id` int NOT NULL,
  `is_terminable` tinyint(1) NOT NULL,
  `followers` varchar(255) DEFAULT NULL,
  `followers_type` varchar(32) NOT NULL,
  `api_instance_id` int DEFAULT NULL,
  `assignors` longtext DEFAULT (_utf8mb3''),
  PRIMARY KEY (`id`),
  KEY `workflow_state_workflow_id_ef53cea4_fk_workflow_workflow_id` (`workflow_id`),
  KEY `workflow_state_is_deleted_37d5c517` (`is_deleted`)
) ENGINE=InnoDB;
--插入初始化数据
INSERT INTO `test`.`workflow_state` VALUES (1, 'admin', '2025-4-28 10:0:0.0', '2025-4-28 10:0:0.0', NULL, NULL, 0, '审批节点1', '基础审批流程', 'approval', 'user', 'user123', 'round_robin', 'immediate', 1, '{"field1": "value1"}', '{"priority": "high"}', 0, 1, 1, 1, 'user456,user789', 'specific', 1001, '["assignor1"]');
INSERT INTO `test`.`workflow_state` VALUES (10, 'system', '2025-4-28 10:45:0.0', '2025-4-28 10:45:0.0', NULL, NULL, 0, '子流程', '调用子工作流', 'subflow', 'system', NULL, 'direct', 'immediate', 1, '{"subflow_id": 100}', '{"parameters": "{}"}', 0, 1, 10, 1, NULL, 'none', 1006, '[]');

3.3ibd2sql下载使用

-- 安装python3
yum -y install python3
-- 下载ibd2sql,没法通过wget下载,可以直接复制网址到浏览器下载
wget https://github.com/ddcw/ibd2sql/archive/refs/heads/main.zip
-- 解压
unzip ibd2sql-main.zip
-- 进入ibd2sql
cd ibd2sql-main
3.3.1尝试对workflow_state表进行表结构恢复
-- 恢复表结构,后面带的 --ddl为生成表结构
$ python3.7 main.py /greatsql/dbdata/data3306/data/test/workflow_state.ibd --sql --ddl
CREATE TABLE IF NOT EXISTS `test`.`workflow_state`(
    `id` int NOT NULL AUTO_INCREMENT,
    `creator` varchar(64) NULL,
    `create_at` datetime(6) NOT NULL,
    `update_at` datetime(6) NOT NULL,
    `updated_by` varchar(64) NULL,
    `end_at` datetime(6) NULL,
    `is_deleted` tinyint(1) NOT NULL,
    `name` varchar(64) NOT NULL,
    `desc` varchar(64) NULL,
    `type` varchar(32) NOT NULL,
    `processors_type` varchar(32) NOT NULL,
    `processors` varchar(255) NULL,
    `distribute_type` varchar(32) NOT NULL,
    `notify_rule` varchar(32) NOT NULL,
    `notify_freq` int NOT NULL,
    `fields` longtext NULL,
    `extras` varchar(1000) NULL,
    `is_draft` tinyint(1) NOT NULL,
    `is_builtin` tinyint(1) NOT NULL,
    `workflow_id` int NOT NULL,
    `is_terminable` tinyint(1) NOT NULL,
    `followers` varchar(255) NULL,
    `followers_type` varchar(32) NOT NULL,
    `api_instance_id` int NULL,
    `assignors` longtext NULL DEFAULT (_utf8mb3''),
    PRIMARY KEY  (`id` ),
    KEY `workflow_state_workflow_id_ef53cea4_fk_workflow_workflow_id` (`workflow_id` ),
    KEY `workflow_state_is_deleted_37d5c517` (`is_deleted` )
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ;
3.3.2尝试对workflow_state表进行表数据恢复
-- 恢复表数据,后面带的 --sql把数据转换为sql,也可以使用--complete-insert合并insert
$ python3.7 main.py /greatsql/dbdata/data3306/data/test/workflow_state.ibd --sql
INSERT INTO `test`.`workflow_state` VALUES (1, 'admin', '2025-4-28 10:0:0.0', '2025-4-28 10:0:0.0', NULL, NULL, 0, '审批节点1', '基础审批流程', 'approval', 'user', 'user123', 'round_robin', 'immediate', 1, '{"field1": "value1"}', '{"priority": "high"}', 0, 1, 1, 1, 'user456,user789', 'specific', 1001, '["assignor1"]');
INSERT INTO `test`.`workflow_state` VALUES (10, 'system', '2025-4-28 10:45:0.0', '2025-4-28 10:45:0.0', NULL, NULL, 0, '子流程', '调用子工作流', 'subflow', 'system', NULL, 'direct', 'immediate', 1, '{"subflow_id": 100}', '{"parameters": "{}"}', 0, 1, 10, 1, NULL, 'none', 1006, '[]');
3.3.3更多使用方法

可以使用--help 查看完整的使用方法,在表空间损坏的情况下可以通过--force, -f 强制调用ibd文件拯救数据

--help详情
$ python3.7 main.py --help
usage: main.py [--help] [--version] [--ddl] [--sql] [--delete]
               [--complete-insert] [--force] [--set] [--multi-value]
               [--replace] [--table TABLE_NAME] [--schema SCHEMA_NAME]
               [--sdi-table SDI_TABLE] [--where-trx WHERE_TRX]
               [--where-rollptr WHERE_ROLLPTR] [--limit LIMIT] [--debug]
               [--debug-file DEBUG_FILE] [--page-min PAGE_MIN]
               [--page-max PAGE_MAX] [--page-start PAGE_START]
               [--page-count PAGE_COUNT] [--page-skip PAGE_SKIP] [--mysql5]
               [--keyring-file KEYRING_FILE]
               [FILENAME]

-- 解析mysql 5.7/8.0的ibd文件 https://github.com/ddcw/ibd2sql

positional arguments:
  FILENAME              ibd filename

optional arguments:
  --help, -h            show help
  --version, -v, -V     show version
  --ddl, -d             print ddl
  --sql                 print data by sql
  --delete              print data only for flag of deleted
  --complete-insert     use complete insert statements for sql
  --force, -f           force pasrser file when Error Page
  --set                 set/enum to fill in actual data instead of strings
  --multi-value         single sql if data belong to one page
  --replace             "REPLACE INTO" replace to "INSERT INTO" (default)
  --table TABLE_NAME    replace table name except ddl
  --schema SCHEMA_NAME  replace table name except ddl
  --sdi-table SDI_TABLE
                        read SDI PAGE from this file(ibd)(partition table)
  --where-trx WHERE_TRX
                        default (0,281474976710656)
  --where-rollptr WHERE_ROLLPTR
                        default (0,72057594037927936)
  --limit LIMIT         limit rows
  --debug, -D           will DEBUG (it's too big)
  --debug-file DEBUG_FILE
                        default sys.stdout if DEBUG
  --page-min PAGE_MIN   if PAGE NO less than it, will break
  --page-max PAGE_MAX   if PAGE NO great than it, will break
  --page-start PAGE_START
                        INDEX PAGE START NO
  --page-count PAGE_COUNT
                        page count NO
  --page-skip PAGE_SKIP
                        skip some pages when start parse index page
  --mysql5              for mysql5.7 flag
  --keyring-file KEYRING_FILE, -k KEYRING_FILE
                        keyring filename
Example:
ibd2sql /data/db1/xxx.ibd --ddl --sql
ibd2sql /data/db1/xxx.ibd --delete --sql
ibd2sql /data/db1/xxx#p#p1.ibd --sdi-table /data/db1/xxx#p#p0.ibd --sql
ibd2sql /mysql57/db1/xxx.ibd --sdi-table /mysql80/db1/xxx.ibd --sql --mysql5
3.3.4修改lower_case_table_names

lower_case_table_names 是 MySQL 设置大小写是否敏感的一个参数。

lower_case_table_names = 0 表名存储为给定的大小和比较是区分大小写的
lower_case_table_names = 1 表名存储在磁盘是小写的,但是比较的时候是不区分大小写
lower_case_table_names = 2 表名存储为给定的大小写但是比较的时候是小写的

通常我们在数据库初始化的时候就已经确定这个参数,想要修改这个参数只能导出重新初始化再导入。

但是ibd2sql号称可以直接修改lower_case_table_names,请各位看官老爷往下看。

lower_case_table_names 由0改成1,对象中已经有大小写混合,可以启动但是原本大小写混合对象读写会有问题

CREATE TABLE IF NOT EXISTS `test`.`TMst`(
    `id` int NOT NULL AUTO_INCREMENT,
    `creator` varchar(64) NULL,
    `updated_by` varchar(64) NULL,
    `end_at` datetime(6) NULL,
    PRIMARY KEY  (`id` )
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ;
INSERT INTO test.TMst (creator) VALUES ('user2');
INSERT INTO test.TMst (creator) VALUES ('user1');
--查看原来的lower_case_table_names为1还是0
$ python3 modify_lower_case_table_names.py /greatsql/dbdata/data3306/data/mysql.ibd 
lower_case_table_names: 0
--停止数据库
$ systemctl stop greatsql
--修改lower_case_table_names为1
$ python3 modify_lower_case_table_names.py /greatsql/dbdata/data3306/data/mysql.ibd ./mysql.ibd 1
set lower_case_table_names=1 into new file(./mysql.ibd) finish.
--对比文件权限属主
$ ls -la ./mysql.ibd 
-rw-r--r-- 1 root root 26214400 Apr 29 10:58 ./mysql.ibd
$ ls -la /greatsql/dbdata/data3306/data/mysql.ibd
-rw-r----- 1 greatsql greatsql 26214400 Apr 29 10:56 /greatsql/dbdata/data3306/data/mysql.ibd
--修改文件属主
$  chmod 640 ./mysql.ibd
$  chown greatsql:greatsql ./mysql.ibd  
-- 覆盖原来的mysql.ibd文件
$ mv ./mysql.ibd /greatsql/dbdata/data3306/data
mv: overwrite '/greatsql/dbdata/data3306/data/mysql.ibd'? y
--修改配置文件 lower_case_table_names=1
$ vi /greatsql/conf/greatsql3306.cnf 
--启动数据库
$ systemctl start greatsql
--查询表,插入数据报错
greatsql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| TMst           |
+----------------+
1 row in set (0.01 sec)

greatsql> SELECT * FROM TMst;
ERROR 1146 (42S02): Table 'test.tmst' doesn't exist

greatsql> INSERT INTO test.TMst (creator) VALUES ('user3');
ERROR 1146 (42S02): Table 'test.tmst' doesn't exist


greatsql> DROP database test;
greatsql> CREATE database test;
ERROR 3678 (HY000): Schema directory './test' already exists. This must be resolved manually (e.g. by moving the schema directory to another location).

lower_case_table_names 由1改成0,对象读写正常

create database test1;
CREATE TABLE IF NOT EXISTS `test1`.`tmst`(
    `id` int NOT NULL AUTO_INCREMENT,
    `creator` varchar(64) NULL,
    `updated_by` varchar(64) NULL,
    `end_at` datetime(6) NULL,
    PRIMARY KEY  (`id` )
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ;
INSERT INTO test1.tmst (creator) VALUES ('user2');
INSERT INTO test1.tmst (creator) VALUES ('user1');
--查看原来的lower_case_table_names为1还是0
$ python3 modify_lower_case_table_names.py /greatsql/dbdata/data3306/data/mysql.ibd 
lower_case_table_names: 1
--停止数据库
$ systemctl stop greatsql
--修改lower_case_table_names为1
$ python3 modify_lower_case_table_names.py /greatsql/dbdata/data3306/data/mysql.ibd ./mysql.ibd 0
set lower_case_table_names=0 into new file(./mysql.ibd) finish.
--对比文件权限属主
$ ls -la ./mysql.ibd 
-rw-r--r-- 1 root root 26214400 Apr 29 10:58 ./mysql.ibd
$ ls -la /greatsql/dbdata/data3306/data/mysql.ibd
-rw-r----- 1 greatsql greatsql 26214400 Apr 29 10:56 /greatsql/dbdata/data3306/data/mysql.ibd
--修改文件属主
$  chmod 640 ./mysql.ibd
$  chown greatsql:greatsql ./mysql.ibd  
-- 覆盖原来的mysql.ibd文件
$ mv ./mysql.ibd /greatsql/dbdata/data3306/data
mv: overwrite '/greatsql/dbdata/data3306/data/mysql.ibd'? y
--修改配置文件 lower_case_table_names=1
$ vi /greatsql/conf/greatsql3306.cnf 
--启动数据库
$ systemctl start greatsql
--查询表,新建带有大写的表均正常
greatsql> CREATE TABLE IF NOT EXISTS `test1`.`TMst`(
    ->     `id` int NOT NULL AUTO_INCREMENT,
    ->     `creator` varchar(64) NULL,
    ->     `updated_by` varchar(64) NULL,
    ->     `end_at` datetime(6) NULL,
    ->     PRIMARY KEY  (`id` )
    -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ;
Query OK, 0 rows affected (0.01 sec)

greatsql> INSERT INTO test1.TMst (creator) VALUES ('user2');
Query OK, 1 row affected (0.02 sec)

greatsql> INSERT INTO test1.TMst (creator) VALUES ('user1');
Query OK, 1 row affected (0.01 sec)

greatsql> SELECT * FROM `test1`.`TMst`;
+----+---------+------------+--------+
| id | creator | updated_by | end_at |
+----+---------+------------+--------+
|  1 | user2   | NULL       | NULL   |
|  2 | user1   | NULL       | NULL   |
+----+---------+------------+--------+
2 rows in set (0.00 sec)

greatsql> SELECT * FROM `test1`.`tmst`;
+----+---------+------------+--------+
| id | creator | updated_by | end_at |
+----+---------+------------+--------+
|  1 | user2   | NULL       | NULL   |
|  2 | user1   | NULL       | NULL   |
+----+---------+------------+--------+
2 rows in set (0.01 sec)

结论

  1. 修改lower_case_table_names

  2. 由0改成1,对象中已经有大小写混合,可以启动但是原本大小写混合对象读写会有问题。

  3. 由1改成0,对象读写正常,操作名字大小混合的对象也正常。

参考文章

  1. GreatSQL 二进制安装:二进制包安装 | GreatSQL用户手册
  2. ibd2sql项目README_zh.md https://github.com/ddcw/ibd2sql/blob/main/README_zh.md
初识Renode 1. 简介 Renode是Antmicro公司发布的一个开发框架,使得开发人员通过模拟物理硬件系统(包括CPU、外围设备、传感器、环境以及节点之间的有线或无线介质),加速物联网和嵌入式系统的开发。它可在PC上通过软件对嵌入式设备进行模拟,可模拟Cortex-M、Cortex-A、RISC-V和其他CPU,并可模拟外设以及各种通信总线和接口。其指令模拟器使用C语言开发,外设模拟器使用C#语言开发,测试及输出层面的内容则用python编写。 Renode官网:Renodehttps://renode.io/ 阅读详情

相关推荐

手把手教你用YOLOv5和OpenCV实现DNF全自动刷图(含自动拾取与Boss战逻辑)

本文详细介绍了如何使用YOLOv5和OpenCV构建DNF全自动刷图系统,包括环境配置、游戏画面采集、目标检测、场景导航及操作控制等核心模块。通过实战案例,帮助开发者掌握游戏自动化技术,实现自动拾取与Boss战逻辑,提升游戏效率。

weixin_42628941的博客 448

MySQL 灾难恢复利器:ibd2sql

目录1. 简介2. 优缺点3. 参数详解4. 环境依赖5. 安装6. 解析ibd文件7. 使用示例8. 总结简介ibd2sql 是一个使用纯 Python 3 编写的工具,用于离线解析 MySQL InnoDB 存储引擎的 IBD 文件,并将其转换为 SQL 语句。该工具无需任何第三方依赖包,使用 GPL-3.0 许可证发布。优点方便: 提取表的 DDL(数据定义语言)。实用: 支持替换库名(--...

qq_34692500的博客 1457

地理空间智能体(GI Agent)

地理空间智能体(Geospatial Intelligence Agent, GI Agent)是AI Agent技术与地理信息系统(GIS)深度融合的产物。其核心是以大型语言模型(LLM)为驱动,通过自然语言理解、任务分解和工具调用能力,实现地理空间任务的自动化执行。​关键特性​自主性​:独立规划任务流程(如空间数据检索、分析、可视化);​交互性​:支持自然语言对话交互,替代传统图形界面操作;​扩展性​:灵活集成第三方工具和API,支持跨平台协作。

百态·数智思维 | 聚焦大数据、量化与未来AI 2032

【MySQL核心】MySQL 数据恢复-ibd2sql

ibd2sql 是一个将 MySQL ibd 文件解析成 SQL 语句的工具,它可以解析出建表语句和 SQL 语句,并且支持 MySQL8.* 和 MySQL5.* 版本。可以解析损坏的 ibd 文件来获取可用的信息,这对于数据表损坏的场景非常友好。接下来一起了解下他的神奇功能。项目地址:https://github.com/ddcw/ibd2sql注意: 执行操作前先请备份数据,注意磁盘空间大小。

hh的博客 1901

从零构建:openEuler WSL下的ARM交叉编译工具链自动化部署方案

本文详细介绍了在openEuler WSL环境下使用Ansible自动化部署ARM交叉编译工具链的方案。通过编写Ansible角色和Playbook,实现从基础环境配置到工具链安装、环境变量设置的一键部署,大幅提升嵌入式开发效率。方案支持多种ARM架构,并扩展了QEMU仿真、VS Code远程开发等实用功能,是嵌入式开发者的高效解决方案。

h3i4j的博客 382

深度学习---双层神经网络中矩阵的运算及其含义记录

深度学习---双层神经网络中矩阵的运算及其含义记录神经网络的正向传播与反向传播正向传播第一层的权重矩阵第一层的输入矩阵Z^1^ = W^1^X^1^ + b^1^A^1^ = σ(Z^1^)第二层的权重矩阵第二层的输入矩阵Z^2^ = W^2^A^1^ + b^2^反向传播dz^2^ = A^2^ - Ydw^2^ = 1/n dz^2^A^1T^db^2^ = 1/n np.sum(dz^2...

qq_43228441的博客 3747

ibd2sql

示例:ibd2sql是基于python3编写的离线解析MYSQL innodb存储引擎的ibd文件的工具,并且可以转换为SQL语句–DDL。

qoldjdh123的博客 536

SAP Fiori 从技术上而言到底包含哪些组件?

SAP Fiori是企业级UX设计的系统化解决方案,基于五大原则构建:角色导向(Role-based)、自适应(Adaptive)、简洁(Simple)、一致(Coherent)和愉悦(Delightful)。其技术实现包含SAPUI5开发框架、Fiori Launchpad统一入口、OData服务网关等核心组件,通过标准化设计模式与开发工具链,显著提升企业应用的用户体验和开发效率。典型案例显示,遵循Fiori原则可缩短30%以上的操作时长,降低50%的培训成本。该体系既保持跨设备一致性,又支持业务场景的深

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 223

分享一个可以恢复数据库数据的开源代码神器

起因是我电脑突然没电自动关机了,但是我电脑上正在运行的项目都还没有关闭,结果打开电脑后重启项目发现数据连接失败,最终尝试各种办法得到的答案是:数据库可能钠颗粒损坏了,于是我将数据库数据目录下的数据备份下来重新初始化了我的数据库,初始化后,我之前的所有数据库和表都没了。不过我将之前数据库的数据备份了一份,因为之前初始化这个数据库需要删掉Data文件夹,可以看到这个文件下有我之前的数据库文件,但是当打开之后,之后后缀为ibd的二进制文件,也没办法转成SQL文件。2、好像目前这个开源只适合mysql8.0。

m0_61133560的博客 679

6、业务影响分析(BIA)的数据收集与关键指标评估

本文全面解析了业务影响分析(BIA)的核心内容,包括数据收集、业务流程分析、信息系统与资产清单、人员与供应商依赖、影响声明、关键指标评估(如MTD、RTO、RPO)、威胁建模与风险分析等。通过详细的介绍和图表展示,帮助组织系统性地制定灾难恢复计划,以应对各种潜在风险,确保关键业务流程在灾难发生后能够快速恢复并持续运营。

moss5的博客 374

《AgentScope-Java 深入浅出教程》第3章 消息系统(Message)

在 AgentScope 中,消息(Msg)是最核心的数据结构。│ 消息的作用 ││ ││ │ 用户输入 │ ────────────┐ ││ ▼ ││ │智能体通信│ ◄────► │ 消息对象 │ ◄────► │ LLM API │ ││ ▲ ││ │ ││ │ 历史存储 │ ────────────┘ ││ │用户输入:封装用户的问题和指令智能体输出:封装智能体的回复和工具调用智能体通信:在多智能体系统中传递信息LLM API 交互:转换为 LLM 可理解的格式历史存储。

步子哥的博客 228

MySQL 8.0 ibd2sdi工具详解:从.ibd文件提取表结构实现数据恢复

在数据库管理与运维中,数据恢复是保障业务连续性的关键技术。其核心原理在于解析数据库文件的元数据信息,从而重建数据结构。MySQL 8.0引入的InnoDB事务性数据字典,将表结构等元数据以序列化字典信息(SDI)的JSON格式直接嵌入表空间文件,这为数据恢复提供了新的技术路径。其技术价值在于,即使脱离数据库服务与.frm文件,也能从.ibd文件中直接提取完整的表定义,极大提升了灾难恢复的成功率与效率。这一特性在误删表、备份文件不完整或磁盘损坏等常见应用场景中尤为重要。本文聚焦的ibd2sdi工具,正是基于此

weixin_30521161的博客 391

EtherCAT从站EEPROM组成信息详解(2):字8-15产品标识区

以实际的从站EEPROM数据为例,参照EtherCAT的SII规范,详细分析了从站EEPROM字8-字15的产品标识区内容组成。

kevin1499的博客 719

Toolset在线工具集:开发者的一站式效率工具箱

Toolset(网址:toolset.natapp1.cc)是一个面向开发者的综合性在线工具平台,集成了网络安全、数据处理、格式转换、文本编辑等20+类实用工具。平台采用简洁的卡片式布局,支持免注册即开即用,平均加载速度小于1秒,适用于紧急场景下的快速操作。- 应急数据恢复:通过IBD2SQL工具,可直接解析MySQL数据文件并生成INSERT语句,避免重装数据库导致的数据丢失。- 快速原型开发:前端工程师可利用Base64编解码工具(日均使用909次),实时转换API返回的二进制数据。

ymqzhy的博客 491

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

MySQL面试通关秘籍:从青铜到王者的10个必杀技(附避坑指南)

这个场景应该加什么索引?事务隔离级别怎么选?”——是不是每次听到这种问题就手心冒汗?别慌!今天咱们不整那些花里胡哨的理论,直接上硬菜!我把自己面试别人和被面试的血泪经验都浓缩在这10个问题上,看完保你面试官直呼内行!(文末有惊喜彩蛋)第一层:会写SQL语句第二层:懂索引和事务原理第三层:理解架构设计与业务场景的平衡记住:MySQL就像你的老朋友——你越懂它,它就越靠谱!最后送大家一句话:纸上得来终觉浅,绝知此事要躬行!(赶紧打开电脑实操吧)彩蛋:面试被问到不会的问题怎么办?

limanovember的博客 839

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

MySQL DDL主键冲突排查:从原理到实战的完整解决方案

在数据库管理中,DDL(数据定义语言)操作用于修改表结构,如添加索引或更改字段类型。其底层原理通常涉及创建临时表并复制数据,这一过程可能暴露隐藏的数据一致性问题。当执行ALTER TABLE等DDL命令时,若遇到“主键冲突”错误,这往往不是简单的操作失败,而是深层数据隐患的显现。从技术价值看,理解DDL引发冲突的机制有助于提升数据库的稳定性和数据质量。常见的应用场景包括在线业务表结构变更、大数据表迁移等。本文聚焦于主键冲突这一典型问题,深入剖析其三大成因:隐式主键转换与截断、并行操作导致的数据快照不一致,以

weixin_30896511的博客 475

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

MySQL实战进阶:从安装配置到性能优化的系统化学习路径

你是不是也遇到过这样的场景:刚接手一个项目,数据库里一堆表,想查个数据却不知道从何下手;或者面试时被问到“MySQL的索引是怎么工作的”,只能含糊其辞地说“B+树”,再追问细节就卡壳了。又或者,照着网上的教程装好了MySQL,但一遇到“ERROR 1045 (28000): Access denied for user”这样的报错,就感觉像面对一堵墙,完全不知道下一步该往哪里走。 这太正常了。MySQL作为世界上最流行的开源关系型数据库,它的“入门”门槛看似很低——下载、安装、敲几个 SELECT 、 IN

weixin_30239339的博客 316

MySQL数据库抢救数据利器ibd2sql详细介绍(附带下载地址)

MySQL数据库抢救数据利器ibd2sql详细介绍(附带下载地址)

chenoracle的博客 2013

MySQL数据恢复工具ibd2sql:离线解析.ibd文件并将其转换为 SQL 语句

ibd2sql 是一个强大的工具,适用于多种 MySQL 数据管理和恢复场景。它的无依赖包、广泛支持的 MySQL 版本和灵活的输出选项使其成为处理 IBD 文件的有力工具。然而,对于大型表和严重损坏的 IBD 文件,使用时需要注意性能和数据完整性问题。总体来说,ibd2sql 是一个值得推荐的工具,特别适合数据恢复、迁移和审计等任务。ibd2sql 是一个使用纯 Python 3 编写的工具,用于离线解析 MySQL InnoDB 存储引擎的 IBD 文件,并将其转换为 SQL 语句。

学亮编程手记 2099

【免费下载】 ibd2sql:将MySQL ibd文件轻松转换为SQL数据

在数据库管理和数据恢复领域,`ibd2sql`是一个极为实用的开源工具。它致力于解决数据库管理员和数据恢复工程师在处理MySQL数据库时遇到的难题。`ibd2sql`能够将MySQL INNODB存储引擎的`ibd`文件转换为标准的SQL数据格式,从而使得数据提取、恢复和迁移变得更加简单和高效。 ## 项目技术分析 `ibd2sql`使用纯`python3`编写,这意味着它无需依赖任何第三方库...

gitblog_00008的博客 1523

MySQL架构

复习笔记安装这里用的docker安装这里不多阐述详细:Docker安装mysql5.7(开启binlog功能、修改字符)_逆方向的钟197的博客-优快云博客_docker mysql 开启binlog目录1.MySQL字符集相关操作2.SQL大小写规范3.SQL_mode合理设置4.MySQL的数据目录5.数据库和文件系统的关系6.数据库在文件系统的表示 7.用户与权限管理7.1用户管理7.2权限管理7.3权限表8.角色管理9.配置文件使用10.逻辑架构11.SQL执行流程12.存储引擎操作 13.存储引

市民景先生 678

MySQL离线ibd数据恢复工具 - ibd2sql

遇到MySQL数据丢失的窘境?想象一下这个场景:MySQL没有备份MySQL是单点部署MySQL突然宕机无法启动面对业务数据恢复的压力,是不是感觉天要塌了?别急着递交辞呈!ibd2sql工具可能是您的救命稻草。这是一款能将离线ibd文件转换为SQL语句的神器,可以帮助恢复宝贵的数据。让我们直接看看如何使用:安装登录后复制 ...

weixin_35492662的博客 468

【Mysql服务无法启动,使用 ibd数据文件恢复数据方法(windows版本)】

mysql无法启动,利用Data文件中ibd文件进行数据快速恢复

qq_43758153的博客 2040

Windows下根据Mysql原始ibd文件还原数据库

mysql根据ibd还原

weixin_42513042的博客 456

MySQL 学习笔记②

本博客内容概述:存储引擎、索引、SQL 优化、视图 / 存储过程 / 触发器、锁、InnoDB 引擎、MySQL 管理。

做笔记,记录学习中遇到的问题。 5757
上一篇: dbops 助力 GreatSQL MGR架构安装部署
下一篇: GreatSQL从库报错13146:字符集不一致问题处理
GreatSQL社区
博客等级 码龄5年 1210粉丝 390原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值