将 InnoDB 恢复到不同的机器

将 InnoDB 恢复到不同的机器

我目前拥有使用 Percona XtraBackup 对所有 mySQL 数据库进行的备份。

我的具体情况是,我想将一个月前的 InnoDB 数据库快照恢复到本地机器进行测试,但我在 Percona 文档中似乎找不到执行此操作的说明。

在 Google 上阅读后,我得出结论,我必须在我的计算机上提取 tar.gz 文件并“重放”事务日志,但日志在远程计算机上。

所以我的问题是需要哪些具体步骤以及将 DB 快照恢复到我的机器时有哪些注意事项。

最后,似乎仅使用 XtraBackup 并不能保证在出现问题时能够恢复数据。例如,如果服务器死机,没有事务日志,我的备份将毫无用处。因此,我的问题的一般表述可能是需要采取哪些步骤来确保我可以在任何我想要的机器上恢复我的数据。

请记住,我的主要专业领域不是服务器管理!

答案1

解压 XtraBackup 存档后,目录内容应如下所示:

[root@twindb-dev 2014-07-15_02-15-02]# ll
total 77872
-rw-r--r-- 1 root root      357 Jul 15 02:15 backup-my.cnf
drwx------ 2 root root     4096 Jul 15 02:15 dictionary
-rw-r----- 1 root root 79691776 Jul 15 02:15 ibdata1
drwx------ 2 root root     4096 Jul 15 02:15 mysql
drwxr-xr-x 2 root root     4096 Jul 15 02:15 performance_schema
drwx------ 2 root root     4096 Jul 15 02:15 sakila
drwx------ 2 root root     4096 Jul 15 02:15 sakila_recovered
drwx------ 2 root root     4096 Jul 15 02:15 test
drwx------ 2 root root     4096 Jul 15 02:15 twindb
-rw-r--r-- 1 root root       13 Jul 15 02:15 xtrabackup_binary
-rw-r----- 1 root root       93 Jul 15 02:15 xtrabackup_checkpoints
-rw-r----- 1 root root     2560 Jul 15 02:15 xtrabackup_logfile
[root@twindb-dev 2014-07-15_02-15-02]#

您所说的事务日志xtrabackup_logfile不在远程机器上,而是包含在 XtraBackup 存档中。

因此,现在您必须应用日志(他们称之为“重播”日志或“准备”备份)

为此,运行带有 --apply-log 选项的 innobackupex

[root@twindb-dev 2014-07-15_02-15-02]# innobackupex --apply-log .

如果看到成功完成:

InnoDB: Shutdown completed; log sequence number 666258394
140715 02:20:30  innobackupex: completed OK!
[root@twindb-dev 2014-07-15_02-15-02]#

那么 2014-07-15_02-15-02 的内容就可以使用了。

将 2014-07-15_02-15-02 的所有文件复制到你的数据目录 (Linux 上默认为 /var/lib/mysql)

[root@twindb-dev 2014-07-15_02-15-02]# cp -R * /var/lib/mysql

修复所有权

# chown -R mysql:mysql  /var/lib/mysql

并启动 MySQL

# /etc/init.d/mysql start

相关内容