从 SSH 恢复 Innobackupex

Innobackupex restore from SSH

我使用 Percona 的 xtrabackup 定期 MySQL 备份,使用的是我在网上找到的命令(我对数据库及其工具并不深入):

innobackupex --user=XXXX --password=XXXX --stream=tar ./ | sshpass -p XXXX ssh root@192.168.XX.XX "cat - > /var/lib/mysql_backups/name.tar"

现在,备份文件为85GB,并且每天都做为FULL备份。 我需要在崩溃后恢复数据库,但它不起作用。

我查看了 tar 文件(带有 tar -tif name.tar)并且我阅读了所有文件名列表。

1) 从本地 TAR 恢复数据库的正常方法是如何使用 --move-back 解压缩所有内容而不是在磁盘上使用额外的 space?

2) 或者是否有可能(如果选项 1 不可用)从远程 TAR 恢复备份,反转 中描述的过程?我尝试了很多次,但找不到正确的选项。

我在 2012 年的 post 中找到了一个选项 --remote-host,但在我的 1.5.1 版本中缺少此选项...

3) 正在流式传输=tar,如何在恢复前准备(如有必要)tar?

提前致谢。

关于您的问题:

1) how is the normal way to restore the DB from local TAR using --move-back to decompress everything in place and not use extra space on the disk?

您可以使用以下命令行提取文件并将输出通过管道传输到目标服务器:

# Execute the command where the backup is located ssh <user>@<mysql_server> "cd <datadir> && tar -xvv" < backup.tar

使用此方法,您将避免解压缩和复制所需的额外 space。接下来,你需要准备备份,也就是你的第3题:

3) being streamed=tar, how do I prepare (if necessary) the tar before restore?

$ xtrabackup --prepare --target-dir=./<datadir>

innobackupex:

$ innobackupex --apply-log ./<datadir>

请注意,最后,如果操作成功完成,您将看到消息:

InnoDB: Shutdown completed; log sequence number 9059880 180618 11:05:22 completed OK!

然后MySQL就可以开始了。

可以在这些链接上找到更多信息:

Preparing the backup with xtrabackup

Streaming and compressing backups

Preparing the backup with innobackupex