XtraBackup还原实战:MySQL .xb备份文件完整恢复指南

备份文件拿到手不等于数据已经安全,真正验证备份是否可靠,还是要看能不能成功还原。之前接手一台MySQL 8.0实例的迁移,对方只给了两个文件:一个全量备份.xb,一个增量备份.xb,当时手边没有现成环境,我硬是靠着Percona XtraBackup一步步把数据还原了出来,中间还处理了版本兼容、磁盘空间、配置不一致这些坑。这篇就把整个还原流程和排错经验完整写出来,给正在被.xb文件折磨的人做个参考。

1. 先搞清楚.xb文件到底是个什么东西

1.1 备份格式的来龙去脉

.xb后缀不是数据库原生格式,它来自Percona XtraBackup这个物理备份工具。这个工具在做备份时直接拷贝InnoDB数据文件、redo log、undo log和系统表空间,拷完再通过xbstream把文件打包成一个数据流,输出时为了节省存储空间,通常还会配合qpress做压缩,于是就有了. .xb 结尾的备份文件。

简单理解:.xb文件不是一个普通的SQL文件,也不是单个数据文件,而是一个封装了多个物理文件的归档包。这和mysqldump导出的.sql文件本质不同,还原方式自然也不一样。mysqldump是逻辑备份,把数据转成SQL语句,还原时执行一遍INSERT就行;而 .xb文件是物理备份,里面是数据文件在某一时间点的原始二进制状态,必须借助XtraBackup工具集来解包、恢复一致性、再拷贝回数据目录。

从使用场景看,.xb文件主要出现在这几类需求里:数据库整体迁移、主从复制重建、机房容灾恢复、大表数据量下的快速全量备份。数据量大到一定程度,mysqldump的导出速度慢、还原也慢,物理备份的优势就体现出来了——它拷贝的是文件块本身,还原子库时整体拷回去即可,不需要一条条执行SQL。

1.2 为什么不能直接cp或source还原

新手最容易犯的错误,是把.xb文件当成普通压缩包,解压后直接cp到数据目录,或者试图用mysql < backup.sql来导入。这两种做法都不可能成功,原因有两层。

第一层,.xb文件是xbstream容器,普通tar或者unzip根本解不开。就算强行解开了,你会发现里面是ibdata1、undo_001、mysql目录这类文件,它们本质是备份时间点的物理文件快照。第二层更重要:这些物理文件在备份过程中并不是"一致状态",各个数据文件拷贝的时间点有先有后,redo log里还记录了备份开始之后未合并的事务。直接拿这些文件启动MySQL,InnoDB会认为数据文件损坏或不可用,实例根本无法起来。

这就是为什么必须有prepare这一步。prepare阶段会读取事务日志,把已提交事务合并到数据文件,回滚未提交事务,最终把数据文件推进到一个全局一致的时间点。不做prepare,等于把半成品放上了货架,早晚出事。

1.3 还原思路的整体框架

整条还原链路可以概括为四个核心环节:

  • xbstream解包,把备份归档还原成一个个独立的物理文件
  • 如有压缩,先用qpress或内置decompress解压
  • prepare(前滚+回滚),让数据文件达到一致性状态
  • copy-back或move-back,把文件放回MySQL的数据目录并启动

这四个环节每一步都有对应工具和参数,下面会逐个拆开讲。

2. 还原之前的准备工作,这些都是血的教训

2.1 工具版本必须对齐数据库版本

还原.xb文件的第一步其实是安装正确的XtraBackup版本,这一步错,后面全错。

XtraBackup的版本和MySQL版本有严格对应关系:MySQL 5.7系列对应XtraBackup 2.4版本,MySQL 8.0系列对应XtraBackup 8.0版本。如果你拿8.0版本的xtrabackup去prepare一个5.7的备份,或者反过来,大概率会直接报错,报错信息通常是This version of Percona XtraBackup is not compatible with the target MySQL version之类的提示。

版本上还有一个细节:小版本也尽量接近。比如MySQL 8.0.32的实例,用XtraBackup 8.0.33基本没问题,但如果数据库是8.0.20,备份又是旧版本工具生成的,prepare时可能遇到redo日志解析异常。我实测下来,最稳妥的办法是:查看备份目录里的xtrabackup_info文件,里面记录了备份工具版本,尽量用相同大版本的工具去还原。

安装方式以Percona官方仓库为准,用系统包管理器安装最省事。装完之后确认一下命令存在且版本正确:

xtrabackup --version

输出结果应该类似这样:

xtrabackup version 8.0.33-28 on Linux (x86_64)

2.2 目标实例的初始化策略

还原前需要决定目标实例的状态。如果是从零开始还原,数据目录应该是一个干净的目录,最好连初始化都不要做。有些人习惯先执行mysqld --initialize再拷贝备份数据,这其实是给自己添麻烦——初始化生成的数据文件和备份里的文件会冲突,导致copy-back失败或者启动异常。

正确做法是确认datadir为空,不需要初始化,直接把备份文件prepare好之后拷贝进去。如果目录里已经残留旧数据,先备份移走。

如果目标是替换已有实例的数据,那么要先停止MySQL服务,清空或移走数据目录内的所有文件,再执行copy-back。这里强烈建议不要直接在原有目录上覆盖copy,因为原目录里可能有MySQL进程持有的隐藏文件,混在一起后很难判断归属,启动时报错的排查成本非常高。

在开始整个还原流程前,先把磁盘空间预估好。.xb文件本身是压缩过的,解压后的大小通常会膨胀到原来的2到3倍。prepare阶段InnoDB还需要临时空间来重放redo日志,所以整个还原过程所需空间大约为解压后数据文件大小的1.5倍。有一次我在一台只剩余40G的机器上还原一个解压后约35G的备份,结果prepare过程中途就报磁盘写满错误,白白等了一个多小时。

2.3 文件权限与用户归属

还有一件事特别容易被忽略:数据文件被还原后,属主必须改成运行MySQL的用户,通常是mysql用户。XtraBackup如果以root身份执行copy-back,拷贝过去的文件属主就是root,MySQL启动时没有权限读取,会直接报Permission denied。

建议在copy-back完成后,主动执行一次chown,不要依赖工具自动处理:

chown -R mysql:mysql /var/lib/mysql

3. 完整还原实操流程,一步步照着做就行

3.1 用xbstream把归档解开

开工第一步,把.xb归档解包成源数据文件。这里用的工具是xbstream,它是XtraBackup自带的数据流解包工具,可以把归档里的每个文件按原有目录结构提取出来。

假设备份文件叫full_backup.xb,先建一个还原工作目录,然后执行:

mkdir -p /restore/full cd /restore/full xbstream -x < /backup/full_backup.xb

解包完成后,目录里会看到ibdata1、ib_logfile0、undo_001、mysql目录、xtrabackup_checkpoints、xtrabackup_info、xtrabackup_binlog_info等文件和目录。这几个xtrabackup_*文件就是元数据文件,后面会用到。

需要注意解包时工作目录所在分区的剩余空间。xbstream解出来的事数据的原始文件大小,还没算上后面prepare需要的额外空间。解包完成后立刻用du -sh看一眼实际占用量,做到心里有数。

如果备份时用了压缩参数,比如--compress --compress-threads=4,解包后看到的文件后缀是.qp,这时候需要先解压才能进行prepare。解压也有现成命令:

xtrabackup --decompress --target-dir=/restore/full

这里加--remove-original可以解锁后自动删除.qp原文件,否则你还要手动清理一次,白白占双倍空间。解压过程比较吃CPU,建议在文件管理器上加上--parallel=4这类参数加速,但要注意I/O压力,机器配置一般就老实单线程跑。

3.2 prepare阶段:数据从离散到一致

prepare阶段是整个还原过程的核心,也是概念上最容易绕晕的部分。一句话解释:把备份时各个文件不在同一时间点的脏状态,通过重放redo日志变成一致可用的状态。

执行命令:

xtrabackup --prepare --target-dir=/restore/full

这一步里工具会做两件事:第一,前滚——把备份期间产生的已提交事务写进数据文件;第二,回滚——把备份结束时还没提交的事务从数据文件里清除。完成后,InnoDB数据文件就是一个可以在某个时间点干净启动的状态。

prepare过程可能会持续一段时间,数据量越大耗时越长,日志里会出现大量InnoDB: Applying log...的提示,这属于正常现象。日志最后几行通常包含completed OK表示成功。

如果只还原全量备份,prepare结束了就可以直接拷贝。但如果是全量+增量备份的组合,情况复杂一些,需要分阶段处理。这里单独说一下增量备份的还原流程,因为实际运维里增量备份太常见了。

首先解包全量备份并做一次备份prepare,但这里要加一个特殊参数:

xtrabackup --prepare --apply-log-only --target-dir=/restore/full

--apply-log-only的含义是只前滚redo日志,不做回滚操作,保留数据文件处于"可以继续应用增量"的状态。等价于我们先把全量备份准备成一个半成品骨架。

然后逐个应用增量备份,顺序必须和备份时的顺序一致。假设增量文件是inc1.xb和inc2.xb:

mkdir -p /restore/inc1 cd /restore/inc1 xbstream -x < /backup/inc1.xb xtrabackup --prepare --apply-log-only --target-dir=/restore/full --incremental-dir=/restore/inc1

这里有个容易踩的坑:最后一次增量应用完成后,不要再用--apply-log-only,而是去掉这个参数再执行一次prepare。因为最后一轮必须执行完整的回滚操作,才能把数据文件变成启动就绪状态。很多在这里翻车的人,就是所有增量都用了--apply-log-only,结果最后的文件依然带着未回滚的数据,启动时直接报错。

为了方便理解,把全量、增量和prepare的关系整理成一张表:

还原场景执行命令要点说明
纯全量备份xtrabackup --prepare --target-dir=...一次性完成前滚和回滚
全量+增量先全量加--apply-log-only,再逐增量加--apply-log-only,最后全量不带该参数首次prepare不执行回滚,末次必须回滚
复制备份集prepare后用--copy-back即可不涉及增量时常规流程

3.3 copy-back:把数据放回它该在的地方

prepare结束后,备份目录里的数据文件就处于可启动状态了。接下来要把它拷贝到MySQL的datadir。两种方式:--copy-back会保留备份目录里的文件副本不删除,--move-back则会把文件移动到目标目录并且释放备份目录空间。推荐第一次恢复时用copy-back,确认一切正常后再考虑move-back。

执行前先确认MySQL的datadir路径,一般可以在my.cnf的[mysqld]下找datadir配置,默认是/var/lib/mysql。确保目录存在且为空,然后执行:

xtrabackup --copy-back --target-dir=/restore/full --datadir=/var/lib/mysql

拷贝过程根据数据量大小可能持续数分钟到数十分钟,日志里同样会有每个文件的拷贝进度。结束后检查一遍:

ls -la /var/lib/mysql

重点看ibdata1、ib_logfile*这些文件是否存在且大小正常,别出现只拷贝了一半的情况。

再执行一次权限修正:

chown -R mysql:mysql /var/lib/mysql

3.4 启动实例并验证数据

权限修正后就可以启动MySQL测试了。使用systemd的直接:

systemctl start mysqld

如果启动失败,先看错误日志。MySQL的错误日志通常位于/var/log/mysql/error.log,也可以直接用journalctl -u mysqld -n 50查看最近的输出。

启动成功之后不要急着完事大吉,先做几个基本验证:

mysql -uroot -p

进去以后检查关键表数量、行数、最新时间点,找一个备份前已知在的表和记录做抽样比对。如果用户的备份里有Binlog位置记录,可以这样确认位置信息:

cat /restore/full/xtrabackup_binlog_info

这个文件里记录了备份点对应的binlog文件名和位置,对后面搭建主从复制或者其他实例的增量同步至关重要,别忘了读取保存。

另外一个验证方法是用CHECK TABLE对关键表做快速一致性检查:

CHECK TABLE your_table_name;

正常会返回OK状态。到这一步,还原链路可以算是走通了。

4. 常见问题与排查心得

4.1 工具版本不匹配导致prepare失败

这是我见过最常见问题。表现为执行prepare时,工具直接退出并提示类似MySQL server version mismatch或者干脆在解析redo log时崩溃。

排查方法:打开备份目录下的xtrabackup_info文件,看里面的server_version和tool_version字段。比如server_version是8.0.28,tool_version是8.0.13,那么赶紧装8.0系列的xtrabackup,不要用2.4版本硬顶。

如果是旧备份,工具版本过旧导致无法解析新格式,建议在干净环境里用percona-release仓库直接安装对应版本,不要自己编译,编译引入的依赖问题会越来越多。

4.2 prepare空间不足

prepare阶段需要额外的临时空间来放置恢复生成的临时文件,这部分空间直接决定成败。表现是日志里出现No space left on device,检查磁盘后发现剩余空间为零。

估算方式我上面提过,准备1.5倍以上解压后大小的空间。如果实在空间不足,有一个折中方案:把备份目录和数据目录分开放到不同分区。prepare时临时文件写在备份目录所在分区,copy-back时数据文件写到数据目录分区,两个分区空间单独统计,比挤在同一块盘上充裕得多。

另外,解压后的.qp文件不要留着,直接用--remove-original参数清理,能省出可观空间。

4.3 copy-back后MySQL无法启动,日志提示innodb参数冲突

这种情况常见于源库和目标库配置不一致。特别是innodb_log_file_size、innodb_data_file_path这类参数。备份文件里的redo log大小如果和my.cnf里配置不一致,启动时InnoDB可能直接拒绝加载日志文件。

处理办法有两个方向:要么把my.cnf里InnoDB相关参数改成源库的配置(参考备份目录里的xtrabackup_info或原库的配置文件快照),要么在必然情况下删掉redo log文件让InnoDB重建——但这么做有个副作用,可能丢失操作系统的页缓存一致性状态,非紧急情况不建议。优先对齐配置,这是最稳的。

对齐配置后重新启动,如果还是起不来,再查error log里有没有其他提示,比如权限问题、目录缺失、socket路径不对等。

4.4 备份文件完整性问题

有时候拿到手的.xb就是一个损坏或不完整的文件。使用xbstream解包时中断,或者拷贝过程中出现问题,会导致恢复出的文件残缺,prepare时自然报错。

遇到这种情况先用下面的方式做一次快速完整性检查:

xbstream -x < backup.xb 2>&1 | tail -20

观察解包过程是否出现corrupt、truncated之类的关键词。如果没有明显报错,再用xtrabackup --prepare跑一遍,若报错指向某个特定的表空间文件,可以考虑从最近的一个全量备份重新走完整流程。

备份文件本身是受损的,那这不属于操作问题而是备份源头问题,需要回到备份端解决:重备份或者从更早版本恢复。

4.5 常见问题速查表

把上面这些场景整理成一张表,方便直接排查:

现象可能原因处理措施
prepare报版本不兼容xtrabackup与MySQL版本不匹配核对xtrabackup_info,安装对应大版本
磁盘写满导致中断空间预估不足,.qp文件未清理清理.qp,增加临时目录,分区分摊
copy-back后Permission denied文件属主不是mysql用户执行chown -R mysql:mysql
启动报InnoDB日志大小错误my.cnf参数与备份不一致对齐innodb_log_file_size等参数
解包时提示文件损坏备份文件不完整或传输出错重新获取备份,核对checksum

5. 增量备份还原与其他细节补充

5.1 增量还原中的两个关键点

增量备份的还原过程中有两个容易忽略的点。

第一个是应用顺序。增量备份必须严格按照时间顺序应用,不能乱序。xbcore在应用增量时,会读取xtrabackup_checkpoints里的to_lsn,每个增量文件的LSN范围都要和上一个衔接上。如果出现LSN断层,prepare会直接报错。

第二是每次应用增量时,--incremental-dir指向的是该次增量备份解包后的目录,不是全量目录,也不是上一次增量的目录。搞混了会导致工具报lsn不匹配或者找不到文件。

最后一个增量应用完后,再执行一次不带--apply-log-only的prepare,这一步很多人会漏,漏掉之后启动数据库大概率会看到Table doesn't exist或者启动不了。

5.2 Binlog位置的回填

还原完成后如果这个实例要当作新的从库挂到主库后面,binlog位置不能随便写。这时候xtrabackup_binlog_info文件的作用就体现出来了。正常内容是:

mysql-bin.000023 234567890

对应的是备份点的文件名和位移。在主库上执行CHANGE MASTER TO时,这两个值直接填进去即可。如果是GTID模式,则读取xtrabackup_gtid_executed文件里的GTID集合,在主库上做相应的GTID同步设置。

这个步骤虽然短,但放错位置或值写错,主从同步一开始就会报错,而且排查起来要比普通SQL错误隐蔽得多。

5.3 多实例还原的注意事项

一台机器上要还原多个实例,或者同一个备份要还原到不同环境时,记得每个实例要有独立的datadir、独立的端口和独立的socket。两次还原之间,把上一次的数据目录清干净,不要觉得文件覆盖没关系,物理文件在copy-back阶段一旦混入旧文件,启不启动的怪问题能排查一整天。

我自己习惯的做法是:从备份目录prepare好一套文件后,如果需要在多个环境部署,直接把这套prepare后的文件目录打包拷贝,然后分别copy-back,这样每个环境都从同一套标准文件出发,避免每个环境重复prepare引入的不确定性。

6. 实操中的一些个人经验

整个还原流程走到这里,基本能把一个.xb文件变成一台可用数据库。说几个我反复踩过后的体会。

第一,永远在还原前确认目标目录是空的。有些服务器上之前跑过其他版本的MySQL,残留的auto.cnf、ib_buffer_pool等文件非常容易出现干扰,MySQL启动时可能沿用旧机器的server_uuid,导致主从复制时和主库uuid冲突。

第二,prepare完之后的completed OK日志值得截图或者留档。这行日志是还原流程里最明确的成功标志。后面出了任何问题,排查时先确认自己有没有看到过这行日志,能省掉不少盲目排错时间。

第三,恢复后尽早做一次mysqldump逻辑导出或者直接开一个从库做数据比对。物理备份的还原流程虽然成熟,但任何一步出错都可能"成功启动但数据不全",启动成功不意味着数据验证了,抽样核对永远不要省。

最后,还原MySQL的.xb备份,方案本身并不复杂,真正考验人的是版本匹配、空间规划、参数对齐这些细节点。把每一步的命令和日志保存好,出了偏差能快速回溯具体是哪一个环节的问题,就不会在恢复过程中陷入被动。数据无小事,还原演练最好在测试环境里多跑几次,确认全流程顺手了,再拿到生产环境动刀也不迟。

相关新闻

易语言环境搭建避坑指南:正确安装与编译验证

易语言环境搭建避坑指南:正确安装与编译验证

简介&#xff1a;这是一份易语言开发环境的完整封装包&#xff0c;面向需要快速搭建易语言编译运行环境的编程初学者与进阶开发者&#xff0c;省去加密狗限制&#xff0c;可直接用于学习、备课、本地部署及环境迁移。资源共662个文件&#xff0c;压缩包约26.96MB&#xff0c;其…

2026/10/21 7:21:56 阅读更多 →
YOLOv5单目测距实战:从标定到可答辩的全链路方案

YOLOv5单目测距实战:从标定到可答辩的全链路方案

简介&#xff1a;本资源是基于YOLOv5与单目视觉融合的三维距离估计完整实现方案&#xff0c;面向计算机视觉初学者、智能驾驶/机器人方向开发者及高校课程实践者&#xff0c;解决无深度传感器条件下实时目标检测与距离估算的核心问题。压缩包共132个文件&#xff0c;含34个Pyth…

2026/10/21 7:21:56 阅读更多 →
AUV三维路径跟踪:LOS制导与反步控制的Matlab仿真实现全解析

AUV三维路径跟踪:LOS制导与反步控制的Matlab仿真实现全解析

做水下航行器&#xff08;AUV/UUV&#xff09;控制这块的同行&#xff0c;应该都体会过一种憋屈&#xff1a;模型建了一堆&#xff0c;控制器调了一轮&#xff0c;拿到仿真里一跑&#xff0c;二维路径稳稳当当&#xff0c;一旦塞进三维空间——俯仰、偏航、深度同时上强度&…

2026/10/21 7:21:56 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年&#xff0c;我大部分时间都在跟浏览器标签页打交道&#xff0c;直到第一次把桌面应用跑起来&#xff0c;才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词&#xff0c;最开始是在某段时间频繁出现在同事的讨论里&#xff0c;一个用HTML…

2026/10/21 9:32:40 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介&#xff1a;亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档&#xff0c;主要面向智能锁安装人员、终端用户及售后维护者&#xff0c;帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件&#xff0c;大小4.37MB&#xff0c;内容结构清晰&#xff…

2026/10/21 9:32:40 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统&#xff0c;整车要求空载跑到8m/s&#xff0c;电机转速已经拉到额定点&#xff0c;驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令&#xff0c;转速纹丝不动&#xff0c;三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/21 9:32:40 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年&#xff0c;用它写过嵌入式驱动、做过游戏服务端&#xff0c;也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词&#xff0c;我其实挺感慨的——这门语言的难点从来不是语法多&#xff0c;而是知识点之间的耦合太深…

2026/10/21 9:32:40 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介&#xff1a;亚太天能T109滑盖智能锁产品说明书以PDF格式发布&#xff0c;适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开&#xff0c;先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能&#xff0c;再给出完整安装步骤&…

2026/10/21 9:32:40 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历&#xff1a;翻开源码注释、论文摘要或者一份专业报告&#xff0c;每个字都认识&#xff0c;连在一起却像天书。想找人聊聊&#xff0c;身边要么没人懂&#xff0c;要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型&#xff0c;几秒钟之后&a…

2026/10/21 9:31:32 阅读更多 →

日新闻

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

这段时间硬件圈和AI圈都在传一个事&#xff1a;AMD锐龙AI Max PRO 400系列把最高192GB统一内存搬进了PC形态的产品里&#xff0c;按宣传口径&#xff0c;本地跑320B参数的大家伙不再是纸面概念。我第一反应倒不是“内存真大”&#xff0c;而是这话背后的含金量——它把过去只能…

2026/10/21 0:00:11 阅读更多 →
AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

1. 从“封号重开”这个行为说起&#xff1a;用户到底在追求什么“封号重开”这四个字&#xff0c;放在任何产品语境里都带着一股决绝的味道。一个账号从零开始积累使用记录、调教偏好、沉淀工作流&#xff0c;背后是大量的时间和精力成本。正常情况下&#xff0c;没有人愿意主动…

2026/10/21 0:00:11 阅读更多 →
ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

1. 为什么在ROS里硬刚YOLOv3不是“炫技”&#xff0c;而是工程落地的必经之路我第一次在某高校机器人实验室看到那台搭载Jetson TX2的移动底盘原地打转、反复识别错垃圾桶时&#xff0c;就意识到&#xff1a;单纯跑通darknet_ros demo和真正让YOLOv3在ROS里“干活”&#xff0c…

2026/10/21 0:00:11 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型&#xff08;GMM&#xff09;的语音识别系统&#xff0c;很多人第一反应就是一堆数学公式&#xff0c;觉得门槛很高。但如果你真的在MATLAB里把它落地跑通&#xff0c;会发现核心其实就是三件事&#xff1a;把声音变成特征向量&#xff0c;用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人&#xff0c;但落到具体操作上&#xff0c;无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程&#xff1a;对图像做反白、改调色板、彩色转灰度&#xff0c;最后把像素数据导出成txt文件。单看每一…

2026/10/20 20:43:59 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词&#xff0c;你会发现一个很有意思的现象&#xff1a;每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型&#xff0c;有人指的是运动控制系统&#xff0c;还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/21 4:27:17 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →