使用xtrabackup备份mysql数据库(全备,增量, 差异备份)
1、数据库备份 —xtrabackup
创建的目录
[root@localhost ~]# mkdir -p /xtrabackup/{full,increment,difference}
(1)完全备份
①数据的备份
[root@localhost ~]# cd /xtrabackup/full
##语法:innobackupex --user=数据库用户名(root或授权用户) --password=数据库密码 备份数据要存的目录
[root@localhost full]# innobackupex --user=root --password=Mysql..1113 /xtrabackup/full
[root@localhost full]# ls #备份的数据以时间戳创建备份目录
2019-11-15_21-50-19
#对数据库进行更改,可在进行备份,同上。
②数据的恢复(–redo-only 表示只回滚已提交的事务, 忽略未提交的事务)
步骤(6步):停止数据库 —> 清理环境 —> 重演回滚 —> 恢复数据 —> 修改权限 —> 启动数据库
##语法:innobackupex --apply-log --redo-only /要恢复的版本目录/ #重演回滚
##语法:innobackupex --copy-back --redo-only /要恢复的版本目录/ #恢复数据
[root@localhost full]# systemctl stop mysqld
[root@localhost full]# rm -rf /var/lib/mysql/*
[root@localhost full]# innobackupex --apply-log --redo-only /要恢复的版本目录/
[root@localhost full]# innobackupex --copy-back --redo-only /要恢复的版本目录/
[root@localhost full]# chown mysql.mysql -R /var/mysql/mysql/
[root@localhost full]# systemctl start mysqld
## 进数据库查看即可看到恢复的数据
(2)增量备份(在完全备份的基础上做)
①数据的备份
[root@localhost ~]# cd /xtrabackup/increment
##语法:innobackupex --user=数据库用户名(root或授权用户) --password=数据库密码 --increateal 增量备份数据存放的目录 --incremental-basedir=/基于的完全备份数据目录/
[root@localhost increment]# innobackupex --user=root --password=Mysql..1113 --incremental /xtrabackup/increment --incremental-basedir=/xtrabackup/full/2019-11-15_21-50-19
[root@localhost increment]# ls
2019-11-15_22-03-27
## 在数据库进行修改并进行第二次增量备份(基于上一次增量备份而不是完全备份)
[root@localhost increment]# innobackupex --user=root --password=Mysql..1113 --incremental /xtrabackup/increment --incremental-basedir=/xtrabackup/increment/2019-11-15_22-03-27
[root@localhost increment]# ls
2019-11-15_22-03-27 2019-11-15_22-13-14
## 在数据库进行修改并进行第三次增量备份(基于上一次增量备份而不是完全备份)
[root@localhost increment]# innobackupex --user=root --password=Mysql..1113 --incremental /xtrabackup/increment --incremental-basedir=/xtrabackup/increment/2019-11-15_22-13-14
[root@localhost increment]# ls
2019-11-15_22-03-27 2019-11-15_22-13-14 2019-11-15_22-16-42
②数据的恢复(在此我们操作回滚到第二次增量备份的数据)
步骤(6步):停止数据库 —> 清理环境 —> 重演回滚 —> 恢复数据 —> 修改权限 —> 启动数据库
##语法:innobackupex --apply-log --redo-only /完全备份的目录/ --incremental-dir=/增量的版本依次回滚/ #重演回滚
##语法:innobackupex --copy-back --redo-only /完全备份的目录/ #恢复数据
[root@localhost increment]# systemctl stop mysqld
[root@localhost increment]# rm -rf /var/lib/mysql/*
[root@localhost increment]# innobackupex --apply-log --redo-only /xtrabackup/full/2019-11-15_21-50-19 #先回滚到完全备份
[root@localhost increment]# innobackupex --apply-log --redo-only /xtrabackup/full/2019-11-15_21-50-19 --incremental-dir=/xtrabackup/increment/2019-11-15_22-03-27 #再回滚到第一次的增量备份
[root@localhost increment]# innobackupex --apply-log --redo-only /xtrabackup/full/2019-11-15_21-50-19 --incremental-dir=/xtrabackup/increment/2019-11-15_22-13-14 #再回滚到第二次的增量备份
[root@localhost increment]# innobackupex --copy-back --redo-only /xtrabackup/full/2019-11-15_21-50-19 #恢复数据
[root@localhost increment]# chown mysql.mysql -R /var/mysql/mysql/
[root@localhost increment]# systemctl start mysqld
## 进数据库查看即可看到恢复的数据
(3)差异备份
①数据的备份
[root@localhost ~]# cd /xtrabackup/difference
##语法:innobackupex --user=数据库用户名(root或授权用户) --password=数据库密码 --increateal 差异备份数据存放的目录 --incremental-basedir=/基于的完全备份数据目录/
[root@localhost difference]# innobackupex --user=root --password=Mysql..1113 --incremental /xtrabackup/increment --incremental-basedir=/xtrabackup/full/2019-11-15_21-50-19
[root@localhost difference]# ls
2019-11-15_22-43-21
## 在数据库进行修改并进行第二次差异备份(基于完全备份)
[root@localhost difference]# innobackupex --user=root --password=Mysql..1113 --incremental /xtrabackup/increment --incremental-basedir=/xtrabackup/full/2019-11-15_21-50-19
[root@localhost difference]# ls
2019-11-15_22-43-21 2019-11-15_22-45-14
## 在数据库进行修改并进行第三次增量备份(基于完全备份)
[root@localhost difference]# innobackupex --user=root --password=Mysql..1113 --incremental /xtrabackup/increment --incremental-basedir=/xtrabackup/full/2019-11-15_21-50-19
[root@localhost difference]# ls
2019-11-15_22-43-21 2019-11-15_22-45-14 2019-11-15_22-50-37
②数据的恢复(在此我们操作回滚到第二次差异备份的数据)
步骤(6步):停止数据库 —> 清理环境 —> 重演回滚 —> 恢复数据 —> 修改权限 —> 启动数据库
##语法:innobackupex --apply-log --redo-only /要恢复的版本目录/ --incremental-dir=/要恢复到的差异版本/ #重演回滚
##语法:innobackupex --copy-back --redo-only /完全备份的目录/ #恢复数据
[root@localhost difference]# systemctl stop mysqld
[root@localhost difference]# rm -rf /var/lib/mysql/*
[root@localhost difference]# innobackupex --apply-log --redo-only /xtrabackup/full/2019-11-15_21-50-19 #先回滚到完全备份
[root@localhost difference]# innobackupex --apply-log --redo-only /xtrabackup/full/2019-11-15_21-50-19 --incremental-dir=/xtrabackup/increment/2019-11-15_22-45-14 #再回滚到要恢复的差异备份
[root@localhost difference]# innobackupex --copy-back --redo-only /xtrabackup/full/2019-11-15_21-50-19 #恢复数据
[root@localhost difference]# chown mysql.mysql -R /var/mysql/mysql/
[root@localhost difference]# systemctl start mysqld
## 进数据库查看即可看到恢复的数据
版权声明:本文为SarahYYP原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。