「XtraBackup」- 备份实例及实例恢复

更新日期:2020年03月13日 @FINISHED

内容简介

本文将介绍如何使用 XtraBackup 工具进行 MySQL 数据库实例备份,以及如何使用该备份数据进行恢复。

注意事项 1)、这里“备份实例”指备份整个数据库实例,并非“单个数据库的全量备份”; 2)、在备份中将包含 mysql、sys、perfomance_schema 数据库以及由用户创建的数据库;

如何创建备份?

第一步、执行备份命令

#!/bin/sh

xtrabackup --backup --user=root --password --target-dir=/data/backups/

备份时间取决于数据库大小;并且可以取消,这不会影响数据库。

关于备份命令 命令行使用xtrabackup --backup选项进行备份。 命令行使用xtrabackup --target-dir指定备份目录(不存在,则自动创建)。 如果备份目录已经存在且不为空,它不会覆盖已存在文件,并且会产生错误。 如果InnoDB数据或日志文件在不同目录中,需要在命令行选项指定其所子目录。

注意事项 日志复制线程会检查事务日志,以确定是否存在需要读取的日志记录。但是如果在日志记录被读取之前已经被写入,就会产生错误。

使用备份进行恢复

准备工作(前提条件)

(1)需要将 MySQL 停机; (2)数据库 datadir 目录必须为空;

第一步、进行“预备”操作

什么是“预备”(Prepare)? 在备份完成后,生成的文件不能马上用于恢复。因为备份的数据不是在特定时间点生成的:在备份过程中,数据是在不同时间点复制过来的。所以这些备份不能马上用于恢复,需要先处理。

执行预备命令 执行如下命令来处理备份数据:

#!/bin/sh

xtrabackup --prepare --target-dir=/data/backups/

在 xtrabackup 中,内置修改版 InnoDB 引擎,用于处理备份文件。因此预备动作可以在任何主机中执行。

关于工具版本 在备份数据与预备数据时,建议使用相同版本 xtrabackup 工具。虽然不同版本也是可以的(只要都支持特定数据库版本),为了减少不必要的麻烦,依旧建议使用相同版本进行操作。

附加说明 不建议中断该过程,因为中断会破坏数据完整性。

另外如果该全量备份用于增量备份,需要使用xtrabackup --apply-log-only选项。否则无法用于增量备份,参考「Incremental Backups」部分。

第二步、进行数据恢复

本质上只是数据库文件的复制:

#!/bin/sh

# 下面的三种方法都是可以的
xtrabackup --copy-back --target-dir=/data/backups/

xtrabackup --move-back --target-dir=/data/backups/

rsync -avz /data/backups/ "path/to/datadir" 

第三步、修改文件权限

在恢复数据文件之后,需要修改数据文件权限,否则MySQL可能无法正常启动:

#!/bin/sh

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

参考文献



Backlinks: 00.INDEX

ToC

内容简介

如何创建备份?

第一步、执行备份命令

使用备份进行恢复

准备工作(前提条件)

第一步、进行“预备”操作

第二步、进行数据恢复

第三步、修改文件权限

参考文献