-
5. 使用XtraBackup备份MySQL 8.0 Part 5 对全备份进行恢复
tutorial5
-
-
Attachments
-
Changes
-
View Source
-
View
## 实验环境
前面我们介绍了Xtrabackup 2.4版本的介绍,这个专题说8.0版本
大体上差不多,不过8.0版本移除了innobackupex命令且只能备份8.0版本的MySQL
关于xtrabackup的介绍,原理及权限等内容这个专题就不介绍了,详情请看如下链接
[XtraBackup工具详解](http://www.zhaibibei.cn/mysql/xtrabackup/)
此次实验的环境如下
- MySQL 8.0.19
- Redhat 7.4
- 操作系统账号:mysql
- 数据库备份账号:backup
## 1. prepare阶段
上节我们介绍了如何使用xtrabackup对数据库进行全备
结束后我们得到了一个非一致性的备份文件,即需要对未提交的事务进行回滚以及对提交的事务进行前滚
这个过程在xtrabackup中叫做准备阶段(prepare stage)
这个阶段完成后该备份文件就可被使用
你可以在任何机器上prepare
## 2. prepare 备份
使用--apply-log进行恢复动作,相当于Oracle的recover动作
后面接全备的目录
如果内存有空闲,可使用--use-memory加快速度
xtrabackup使用“embedded InnoDB”来进行实例恢复
```
xtrabackup --prepare --use-memory=1G --target-dir=/data/mysql/backup/
```
结束后会出现如下提示
```
Shutdown completed; log sequence number 21071372
200401 15:59:13 completed OK!
```
这时数据文件处于一致状态,可供数据库使用
[image:909 size:orig]
## 3. copy 数据文件
这个阶段我们使用--copy-back将prepare过的数据文件拷贝至需要还原的服务器的datadir目录
我们需要注意如下几点
- xtrabackup 读取my.cnf文件获取数据文件(datadir)位置
- datadir目录必须为空
- 命令允许用户必须对datadir目录有读写权限
- 使用datadir目录的数据库实例必须关闭
```
xtrabackup --copy-back --target-dir=/data/mysql/backup/
```
如何磁盘空间不大,我们可以使用--move-back参数在拷贝完成后删除备份文件
同样结束后会显示completed OK字样
最后datadir的文件如下图
## 4. 启动数据库
首先我们需要注意下文件的权限,如果不是使用mysql账号执行的备份和恢复,首先要更改权限
```
$ chown -R mysql:mysql /var/lib/mysql
```
最后我们启动数据库即可
```
systemctl start mysqld
```
到这里我们完成使用xtrabackup进行完全备份和还原
## 4. 参考资料
本专题所有内容翻译子Percona XtraBackup的官方文档
可通过如下链接下载
[http://www.zhaibibei.cn/mysql/xtrabackup/tutorial1/](http://www.zhaibibei.cn/mysql/xtrabackup/tutorial1/)
[上一章](http://www.zhaibibei.cn/mysql/xtrabackup8/tutorial4/)
[下一章](http://www.zhaibibei.cn/mysql/xtrabackup8/tutorial6/)