MYSQL8.0数据库备份——完整备份,增量备份,差异备份

本文详细介绍了备份的原因和目标,物理备份与逻辑备份的区别,以及percona-xtrabackup在完全备份、增量备份和差异备份方面的使用方法。重点讲解了如何在percona-xtrabackup环境中进行备份和恢复操作。
摘要由CSDN通过智能技术生成

目录

一、关于备份

1、备份原因和目标

2、备份技术

3、备份方式:完全备份、增量备份、差异备份

二、percona-xtrabackup

1、简介

2、获得软件包

3、安装

4、完全备份

5、增量备份

6、差异备份


一、关于备份

1、备份原因和目标

备份原因:丢、删

备份目标:数据的一致性、服务的可用性

2、备份技术

物理备份/冷备份:直接复制数据库文件,适用于大型数据库环境,不受存储引擎的限制,但不能恢复到不同的MySQL。tar,cp,scp

逻辑备份/热备份:备份是建表、建库、插入等操作所执行的SQL语句(DDL DML DCL),适用于中小型数据库。mysqldump,mydumper

3、备份方式:完全备份、增量备份、差异备份

  • 完全备份:

       每次对数据进行完整的备份,即对整个数据库的备份、数据库结构和文件结构的备份,保存的是备份完成时刻的数据库,是差异备份与增量备份的基础。

  • 增量备份

        只有那些在上次完全备份或者增量备份后被修改的文件才会被备份。以上次完整备份或上次的增量备份的时间为时间点,仅备份这之间的数据变化,因而备份的数据量小,占用空间小,备份速度快。但恢复时,需要从上一次的完整备份起到最后一次增量备份依次恢复,如中间某次的备份数据损坏,将导致数据的丢失。(一个数据100G,第一次备份100G,第二次数据是110G,第二次备份只需备份10G)

  • 差异备份

        备份那些自从上次完全备份之后被修改过的所有文件,备份的时间起点是从上次完整备份起,备份数据量越来越大。恢复数据时,只需恢复上次的完全备份与最近的一次差异备份。

二、percona-xtrabackup

1、简介

       它是开源免费的支持 MySQL 数据库热备份的软件,它能对InnoDB 和 XtraDB 存储引擎的数据库非阻塞地备份。它不暂停服务创建 Innodb 热备份;为 mysql 做增量备;在 mysql 服务器之间做在线表迁移;使创建 replication 更加容易;备份 mysql 而不增加服务器的负载。
        percona 是一家老牌的 mysql 技术咨询公司。它不仅提供 mysql 的技术支持、培训、咨询,还发布了 mysq 的分支版本﹣ percona Server 。并围绕percona Server 还发布了一系列的 mysql 工具。

2、获得软件包

官方站点:https:www.percona.com

选择版本

3、安装

安装yum仓库

yum install -y https://repo.percona.com/yum/percona-release-latest.noarch.rpm

YUM安装percona-xtrabackup

//这里查看yum仓库发现新增最后两个repo
[root@harbor ~]# ls /etc/yum.repos.d/ -l
总用量 72
-rw-r--r--. 1 root root 1664 11月 23 2020 CentOS-Base.repo
-rw-r--r--. 1 root root 1309 11月 23 2020 CentOS-CR.repo
-rw-r--r--. 1 root root 2099 6月  20 2023 docker-ce.repo
-rw-r--r--. 1 root root  951 10月  3 2017 epel.repo
-rw-r--r--. 1 root root 1050 10月  3 2017 epel-testing.repo
-rw-r--r--. 1 root root  780 3月  22 12:49 percona-original-release.repo
-rw-r--r--. 1 root root  301 3月  22 12:49 percona-prel-release.repo


//这里看一下percona-xtrabackup的安装包有什么版本
[root@harbor ~]# yum list | grep percona-xtrabackup
percona-xtrabackup.x86_64                2.3.10-1.el7                  percona-release-x86_64
percona-xtrabackup-22.x86_64             2.2.13-1.el7                  percona-release-x86_64
percona-xtrabackup-22-debuginfo.x86_64   2.2.13-1.el7                  percona-release-x86_64
percona-xtrabackup-24.x86_64             2.4.29-1.el7                  percona-release-x86_64
percona-xtrabackup-24-debuginfo.x86_64   2.4.29-1.el7                  percona-release-x86_64
percona-xtrabackup-80.x86_64             8.0.35-30.1.el7               percona-release-x86_64
percona-xtrabackup-80-debuginfo.x86_64   8.0.35-30.1.el7               percona-release-x86_64
percona-xtrabackup-81.x86_64             8.1.0-1.1.el7                 percona-release-x86_64
percona-xtrabackup-81-debuginfo.x86_64   8.1.0-1.1.el7                 percona-release-x86_64
percona-xtrabackup-82.x86_64             8.2.0-1.1.el7                 percona-release-x86_64
percona-xtrabackup-82-debuginfo.x86_64   8.2.0-1.1.el7                 percona-release-x86_64
percona-xtrabackup-debuginfo.x86_64      2.3.10-1.el7                  percona-release-x86_64
percona-xtrabackup-test.x86_64           2.3.10-1.el7                  percona-release-x86_64
percona-xtrabackup-test-22.x86_64        2.2.13-1.el7                  percona-release-x86_64
percona-xtrabackup-test-24.x86_64        2.4.29-1.el7                  percona-release-x86_64
percona-xtrabackup-test-80.x86_64        8.0.35-30.1.el7               percona-release-x86_64
percona-xtrabackup-test-81.x86_64        8.1.0-1.1.el7                 percona-release-x86_64
percona-xtrabackup-test-82.x86_64        8.2.0-1.1.el7                 percona-release-x86_64

//这里我数据库的版本是8.0的,所以也要安装8.0版本。如果数据库是5.7版本应该要安装2.4版本的
[root@harbor ~]# yum install -y percona-xtrabackup-80.x86_64
//看一下安装是否成功,有@就是已经安装了
[root@harbor ~]# yum list | grep percona-xtrabackup
percona-xtrabackup-80.x86_64            8.0.35-30.1.el7                @percona-release-x86_64

percona-xtrbackup安装成功之后就是备份啦

4、完全备份

完全备份流程

//备份前期准备工作:要开启MySQL的二进制日志,这里MySQL是8.0,所以默认是开启状态
//把备份数据放在/xtrabackup/full目录下,提前把目录创建好再执行完整备份。执行命令结束后最后一行显示completed OK!则备份成功
xtrabackup --backup --target-dir=/xtrabackup/full -uroot -p'Xielei@123'  

//查询备份结果
ls /xtrabackup/full/   

//可以查看二进制日志文件的位置
[root@harbor ~]# cat /xtrabackup/full/xtrabackup_binlog_info 
binlog.000032	157

完全恢复流程

//停止数据库
systemctl stop mysqld  

//模拟一下数据库损坏
rm -rf /var/lib/mysql/*   
rm -rf /var/log/mysqld.log 

//还原时先一致性检查(也叫准备完整备份)
xtrabackup --prepare --target-dir=/xtrabackup/full  

// 再进行恢复备份
xtrabackup --copy-back --target-dir=/xtrabackup/full 

//还原好的文件要给mysql用户再授权
chown -R mysql.mysql /var/lib/mysql  

//最后正常启动mysqld,完成还原操作
systemctl start mysqld 

5、增量备份

增量备份流程     

//要进行增量备份,通常从完全备份开始
xtrabackup --backup --target-dir=/xtrabackup/full -uroot -p'Xielei@123'

//基于完全备份生成第一次增量备份。
xtrabackup -uroot -p'Xielei@123' --backup --target-dir=/xtrabackup/inc1 --incremental-basedir=/xtrabackup/full 

//基于第一次增量备份生成第二次增量备份(后续的增量备份以此类推。)
xtrabackup -uroot -p'Xielei@123' --backup --target-dir=/xtrabackup/inc2 --incremental-basedir=/xtrabackup/inc1

增量恢复流程

//先停止数据库
systemctl stop mysqld  

//再进行一致性检查(先回滚全量包,再回滚第一次增量包,再回滚第二次增量包,这时增量数据都到了全量包中)[每次增量包都要回滚!]
xtrabackup --prepare --apply-log-only --target-dir=/xtrabackup/full
xtrabackup --prepare --apply-log-only --target-dir=/xtrabackup/full --incremental-dir=/xtrabackup/inc1
xtrabackup --prepare --apply-log-only --target-dir=/xtrabackup/full --incremental-dir=/xtrabackup/inc2

//回滚完成后,进行恢复
xtrabackup --copy-back --target-dir=/xtrabackup/full

//最后还原的文件要给mysql用户再授权
chown -R mysql.mysql /var/lib/mysql

//最后正常启动mysqld,完成还原操作。
systemctl start mysqld

6、差异备份

差异备份流程
 

//要进行增量备份,通常从完全备份开始
xtrabackup --backup --target-dir=/xtrabackup/full -uroot -p'Xielei@123'

//基于完全备份生成第一次增量备份,与完全备份的差异就是差异备份
xtrabackup -uroot -p'Xielei@123' --backup --target-dir=/xtrabackup/inc1 --incremental-basedir=/xtrabackup/full

//仍是基于完全备份生成第二次增量备份,与完全备份的差异就是差异备份。(后续的差异备份仍是基于完全备份进行,以此类推。)
xtrabackup -uroot -p'Xielei@123' --backup --target-dir=/xtrabackup/inc2 --incremental-basedir=/xtrabackup/full

差异恢复流程

//如上所示,进行了两次差异备份,那么回滚不用像增量备份一样,每个增量包都需要回滚,只需回滚完全备份包和最后一次差异备份包即可。
xtrabackup --prepare --apply-log-only --target-dir=/xtrabackup/full
xtrabackup --prepare --apply-log-only --target-dir=/xtrabackup/full --incremental-dir=/xtrabackup/inc2

//回滚完成后,进行恢复
xtrabackup --copy-back --target-dir=/xtrabackup/full

//最后还原的文件要给mysql用户再授权
chown -R mysql.mysql /var/lib/mysql

//最后正常启动mysqld,完成还原操作。
systemctl start mysqld
  • 24
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值