xtrabackup 恢复单个数据库?

xtrabackup restore a single database?

据我所知,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 时,这不是一个有吸引力的选择。

Percona XtraBackup 允许您在不阻止客户端访问的情况下对 MySQL 数据目录进行物理备份。备份速度明显快于 mysqldump

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

恢复完整备份时,如果目标 MySQL 服务器为 运行,则无法执行此操作。您必须关闭 mysqld 然后将文件复制到位,确保文件具有正确的所有权和权限,然后启动 mysqld.

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

准备备份时必须使用 --export 选项。然后您可以将单个表空间导入现有的 MySQL 数据目录。但不幸的是,你必须一次只做一个表空间。无法一步完成一个架构中的所有表。您应该能够编写脚本来执行此操作。

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