【问题标题】:xtrabackup restore a single database?xtrabackup 恢复单个数据库?
【发布时间】:2019-09-04 15:30:14
【问题描述】:

据我所见,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当然不会启动。它似乎是一个非常糟糕的恢复工具 - 如果无法恢复单个数据库,那么能够对它们进行备份的目的是什么?

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

【问题讨论】:

  • Per the Percona Docs -- 据此,您可能需要进行一些手动目录剥离和权限更改等。但看起来很简单。

标签: mysql percona


【解决方案1】:

Percona XtraBackup 允许您对 MySQL 数据目录进行物理备份,而不会阻止客户端访问。进行备份比mysqldump 快得多。

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

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

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

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

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

【讨论】:

  • 这似乎仅适用于 8.0 版 - 我似乎无法为早期版本找到相同的文档(?)
  • 字面上只是将 URL 中的“/8.0/”替换为另一个版本号。
  • 我承认 XtraBackup 文档组织得很糟糕。
  • 感谢您的帮助 - 我已接受您的回答。我认为如果 xtrabackup 可以简单地恢复单个数据库,那将是一个非常好的主意 - “--databases”选项的存在表明支持此功能。
猜你喜欢
  • 1970-01-01
  • 2014-01-30
  • 2014-01-16
  • 1970-01-01
  • 2013-09-18
  • 2019-03-22
  • 2010-12-04
  • 2010-12-04
  • 2011-06-19
相关资源
最近更新 更多