You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用mariabackup将MariaDB 10.3备份恢复至10.6遇错,求指导

解决方案:跨版本恢复MariaDB备份(10.3→10.6)

报错原因

你的推测方向正确,但并非要求版本完全一致——mariabackup作为物理备份工具,对跨大版本的直接恢复支持有限。10.3到10.6跨越了多个大版本,InnoDB的redo日志格式、数据页结构存在变更,高版本mariabackup无法直接处理低版本备份的redo日志,必须先在中间版本(10.4或更早)完成数据格式的升级适配。


方案一:版本逐步升级(保留物理备份效率)

如果数据库体积较大,想保留物理备份的速度优势,可按以下步骤逐步升级版本:

  • 第一步:在临时环境(或PC B上临时切换版本)安装MariaDB 10.4和对应版本的mariabackup
    1. 用10.4版本的mariabackup执行准备命令:
      mariabackup --prepare --target-dir=/my_nfs_share/
      
    2. 将准备好的备份目录作为10.4版本MariaDB的数据目录,启动服务,待完全启动后干净关闭(执行systemctl stop mariadb,确保无异常)
    3. 用10.4版本的mariabackup重新备份已升级到10.4的数据目录:
      mariabackup --backup --target-dir=/my_nfs_share/10.4_backup/ --datadir=/var/lib/mysql/
      
  • 第二步:重复上述流程,用MariaDB 10.5处理10.4的备份,完成升级后再次备份
  • 第三步:用MariaDB 10.6的mariabackup处理10.5的备份,即可正常恢复到10.6环境

方案二:改用逻辑备份(mariadb-dump,更省心)

如果数据库体积较小,优先选择逻辑备份,跨版本兼容性更好,无需折腾版本切换:

  1. 在PC A(MariaDB 10.3)上导出全量数据:
    mariadb-dump -u root -p --all-databases --single-transaction --routines --triggers > full_db_backup.sql
    
    • --single-transaction:保证备份时InnoDB表不锁表
    • --routines/--triggers:导出存储过程、触发器等附属对象
  2. 将full_db_backup.sql传输到PC B(Ubuntu 22.04 + MariaDB 10.6)
  3. 在PC B上导入备份:
    mysql -u root -p < full_db_backup.sql
    
  4. 导入完成后,执行mysql_upgrade -u root -p确保系统表适配10.6版本

选择建议

  • 数据量GB级及以上:优先方案一,物理备份恢复速度更快
  • 数据量较小:选方案二,操作简单,无需复杂的版本切换

内容的提问来源于stack exchange,提问作者Tanc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 00:55:03