Percona Server 8.0残留TokuDB临时表致迁移失败的解决咨询
解决隐藏TokuDB临时表迁移报错的方案
方案1:在源实例彻底清理残留TokuDB元数据
- 临时重新启用TokuDB插件(源实例可操作前提下):
若源实例已卸载插件文件,需从同版本Percona Server安装包中提取INSTALL PLUGIN tokudb SONAME 'ha_tokudb.so';ha_tokudb.so放到插件目录,再执行安装。 - 排查关联TokuDB的残留对象,包括临时表元数据:
SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE ENGINE = 'TokuDB'; SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES WHERE NAME LIKE '%#sql%'; - 手动清理目标临时表的元数据记录:
操作前务必备份DELETE FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES WHERE NAME = 'plp/#sql-e70b_1135191d';INFORMATION_SCHEMA相关表,避免误删。 - 再次禁用TokuDB插件:
UNINSTALL PLUGIN tokudb; - 用Percona XtraBackup重新备份源库,再恢复到新实例。
方案2:在新实例跳过TokuDB引擎检查启动
- 修改新实例的
my.cnf配置:
注:default-storage-engine=InnoDB disabled_storage_engines="TokuDB" loose-tokudb=OFF innodb_force_recovery=1innodb_force_recovery=1为只读修复模式,恢复后需移除该参数。 - 启动实例后删除残留临时表元数据:
DELETE FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES WHERE NAME LIKE '%#sql%' AND NAME LIKE '%tokudb%'; - 关闭实例,移除
innodb_force_recovery参数,重启后验证服务状态。
方案3:用Percona XtraBackup过滤备份
- 备份源库时排除TokuDB相关对象及目标临时表:
xtrabackup --backup --target-dir=/backup --exclude-table=plp.#sql-e70b_1135191d --exclude-engine=tokudb - 准备备份:
xtrabackup --prepare --target-dir=/backup - 将备份恢复到新实例,启动服务验证。
内容的提问来源于stack exchange,提问作者Maxim Demkin
相关产品推荐
相关产品推荐

