MySQL8.0 使用Xtrabackup对数据库进行部分备份恢复

部分备份定义

Xtrabackup也可以实现部分备份,即只备份某个或某些指定的数据库或某数据库中的某个或某些表。但要使⽤此功能,必须启⽤innodb_file_per_table选项,即每张表保存为⼀个独⽴的⽂件。同时,其也不⽀持–stream选项,即不⽀持将数据通过管道传输给其它程序进⾏处理。

此外,还原部分备份跟还原全部数据的备份也有所不同,即你不能通过简单地将 prepared 的部分备份使⽤–copy-back 选项直接复制回数据⽬录,⽽是要通过导⼊表的⽅向来实现还原。当然有些情况下,部分备份也可以直接通过 --copy-back 进⾏还原,但这种⽅式还原⽽来的数据多数会产⽣数据不⼀致的问题,因此,⽆论如何不推荐使⽤这种⽅式。

指定选项

指定部分表的选项

  • –tables=name:用正则表达式的方式指定包括的表
  • –tables-file=name:将要包括的表名放在指定的文件中
  • –tables-exclude=name:用正则表达式的方式指定排除的表,该选项比 --tables 的优先级高

指定部分数据库的选项

  • –databases=name:用正则表达式的方式指定包括的库
  • –databases-file=name:将要包括的库名放在指定的文件中
  • –databases-exclude=name:用正则表达式的方式指定排除的库,该选项比 --databases 的优先级高

备份恢复示例

  • 数据备份
    • 准备阶段完成的工作和全量备份类似,但多产生了一个 /data/backups/sbtest/sbtest2.cfg 文件,该文件保存着表的元数据。
# 以下命令只备份指定单表
xtrabackukup --backup --datadir=/disk1/data --target-dir=/data/backups --tables="^sbtest[.]sbtest2"

# 如下命令进行prepare部分备份,要使⽤--export选项进⾏
xtrabackup --prepare --export --target-dir=/data/backups
  • 数据恢复
    • 要回复的数据库中如果没有sbtest.sbtest2表,要先创建该表,然后使用如下命令抛弃表空间
    alter table sbtest.sbtest2 discard tablespace;
    
    • 再把 sbtest2.cfg 和 sbtest2.ibd 文件复制到对应的目录下,然后使用如下命令导入表空间。
    alter table sbtest.sbtest2 import tablespace;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值