mysql - 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 时,这不是一个有吸引力的选择。
解决方案
Percona XtraBackup 允许您在不阻止客户端访问的情况下对 MySQL 数据目录进行物理备份。它比mysqldump
进行备份要快得多。
恢复也非常快。您所要做的就是将备份文件复制到新的数据目录(在执行准备步骤之后,您可以在创建备份时执行此操作)。
在恢复完整备份时,当目标 MySQL 服务器正在运行时,您不能这样做。您必须关闭mysqld
然后将文件复制到位,确保文件具有正确的所有权和权限,然后启动mysqld
.
在不覆盖的情况下导入选定的表或模式并不容易。但有可能:
--export
准备备份时必须使用该选项。然后,您可以将单个表空间导入现有的 MySQL 数据目录。但不幸的是,您必须一次执行一个表空间。对于模式中的所有表,没有办法一步完成。您应该能够编写一个脚本来做到这一点。
在此处查看从备份中导入表空间的完整示例:https ://www.percona.com/doc/percona-xtrabackup/8.0/xtrabackup_bin/restoring_individual_tables.html
推荐阅读
- wordpress - 如何仅使用 .htaccess 在 1and1 上托管的 WordPress 网站上的所有页面上强制使用 HTTPS
- shiny - 如何根据第一个选择选择数据 - 闪亮的应用程序
- json - 从解析的 JSON 字符串中提取一个特定的行
- docker - 无法在 docker 容器中启动 apache2
- javascript - 使用样式化组件在第一个焦点上设置输入边框样式
- laravel - 在 Laravel 中注册用户为管理员
- amazon-web-services - 从 AWS Glue 作业中的数据源读取标头
- javascript - AngularJS 简单应用程序网页停止渲染代码
- encryption - 骆驼 2.21.0 - pgp 加密不起作用
- angular - 如何删除 HTTP 拦截器中设置的内容类型以在 angular4 中上传文件