ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2021-04-01 13:04:13  阅读:199  来源: 互联网

标签:实例 -- 备份 20210401 XtraBackup xtrabackup MySQL 日志 数据库


问题描述

本文将介绍如何使用 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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有