首页 > 解决方案 > xtrabackup 恢复单个数据库?

问题描述

Percona XtraBackup 得到了很多赞誉,据我所见,但我发现它非常令人沮丧。我正在使用:

root@GR-00258:~# xtrabackup --version
xtrabackup version 2.4.9 based on MySQL server 5.7.13 Linux (x86_64) (revision id: a467167cdd4)

我可以毫无问题地创建一个或多个单一数据库的备份,但似乎没有任何方法可以恢复它们。我发现的唯一方法是将它们作为完整备份恢复为空/var/lib/mysql,这意味着mysql当然不会启动。它似乎是一个非常糟糕的恢复工具——如果无法恢复单个数据库,那么备份它们的目的是什么?

足够的咆哮 - 有没有办法让它工作,或者我只是在浪费我的时间?我知道,我可以将mysqldump其用于 csv 文件,但当数据库约为 500GB - 1TB 时,这不是一个有吸引力的选择。

标签: mysqlpercona

解决方案


Percona XtraBackup 允许您在不阻止客户端访问的情况下对 MySQL 数据目录进行物理备份。它比mysqldump进行备份要快得多。

恢复也非常快。您所要做的就是将备份文件复制到新的数据目录(在执行准备步骤之后,您可以在创建备份时执行此操作)。

在恢复完整备份时,当目标 MySQL 服务器正在运行时,您不能这样做。您必须关闭mysqld然后将文件复制到位,确保文件具有正确的所有权和权限,然后启动mysqld.

在不覆盖的情况下导入选定的表或模式并不容易。但可能:

--export准备备份时必须使用该选项。然后,您可以将单个表空间导入现有的 MySQL 数据目录。但不幸的是,您必须一次执行一个表空间。对于模式中的所有表,没有办法一步完成。您应该能够编写一个脚本来做到这一点。

在此处查看从备份中导入表空间的完整示例:https ://www.percona.com/doc/percona-xtrabackup/8.0/xtrabackup_bin/restoring_individual_tables.html


推荐阅读