「XtraBackup」- 备份实例及实例恢复 @20210401
作者:互联网
问题描述
本文将介绍如何使用 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 (XtraBackup)」部分。
第二步、进行数据恢复
本质上只是数据库文件的复制:
#!/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
第四步、后续操作
启动数据库服务,检查日志等操作,根据需要进行操作。
相关文章
「MySQL」- 使用 mysqldump 进行数据备份与恢复(迁移)
「XtraBackup」- 备份数据的“预备”(Prepare)操作
「MySQL」- 恢复数据到特定时间点
参考文献
Percona XtraBackup 2.4 Documentation/The Backup Cycle - Full Backups
标签:实例,--,备份,20210401,XtraBackup,xtrabackup,MySQL,日志,数据库 来源: https://www.cnblogs.com/k4nz/p/14605785.html