当前位置:   article > 正文

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

mysql8.0备份数据库操作

目录

一、关于备份

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

  1. //这里查看yum仓库发现新增最后两个repo
  2. [root@harbor ~]# ls /etc/yum.repos.d/ -l
  3. 总用量 72
  4. -rw-r--r--. 1 root root 1664 1123 2020 CentOS-Base.repo
  5. -rw-r--r--. 1 root root 1309 1123 2020 CentOS-CR.repo
  6. -rw-r--r--. 1 root root 2099 620 2023 docker-ce.repo
  7. -rw-r--r--. 1 root root 951 103 2017 epel.repo
  8. -rw-r--r--. 1 root root 1050 103 2017 epel-testing.repo
  9. -rw-r--r--. 1 root root 780 322 12:49 percona-original-release.repo
  10. -rw-r--r--. 1 root root 301 322 12:49 percona-prel-release.repo
  11. //这里看一下percona-xtrabackup的安装包有什么版本
  12. [root@harbor ~]# yum list | grep percona-xtrabackup
  13. percona-xtrabackup.x86_64 2.3.10-1.el7 percona-release-x86_64
  14. percona-xtrabackup-22.x86_64 2.2.13-1.el7 percona-release-x86_64
  15. percona-xtrabackup-22-debuginfo.x86_64 2.2.13-1.el7 percona-release-x86_64
  16. percona-xtrabackup-24.x86_64 2.4.29-1.el7 percona-release-x86_64
  17. percona-xtrabackup-24-debuginfo.x86_64 2.4.29-1.el7 percona-release-x86_64
  18. percona-xtrabackup-80.x86_64 8.0.35-30.1.el7 percona-release-x86_64
  19. percona-xtrabackup-80-debuginfo.x86_64 8.0.35-30.1.el7 percona-release-x86_64
  20. percona-xtrabackup-81.x86_64 8.1.0-1.1.el7 percona-release-x86_64
  21. percona-xtrabackup-81-debuginfo.x86_64 8.1.0-1.1.el7 percona-release-x86_64
  22. percona-xtrabackup-82.x86_64 8.2.0-1.1.el7 percona-release-x86_64
  23. percona-xtrabackup-82-debuginfo.x86_64 8.2.0-1.1.el7 percona-release-x86_64
  24. percona-xtrabackup-debuginfo.x86_64 2.3.10-1.el7 percona-release-x86_64
  25. percona-xtrabackup-test.x86_64 2.3.10-1.el7 percona-release-x86_64
  26. percona-xtrabackup-test-22.x86_64 2.2.13-1.el7 percona-release-x86_64
  27. percona-xtrabackup-test-24.x86_64 2.4.29-1.el7 percona-release-x86_64
  28. percona-xtrabackup-test-80.x86_64 8.0.35-30.1.el7 percona-release-x86_64
  29. percona-xtrabackup-test-81.x86_64 8.1.0-1.1.el7 percona-release-x86_64
  30. percona-xtrabackup-test-82.x86_64 8.2.0-1.1.el7 percona-release-x86_64
  31. //这里我数据库的版本是8.0的,所以也要安装8.0版本。如果数据库是5.7版本应该要安装2.4版本的
  32. [root@harbor ~]# yum install -y percona-xtrabackup-80.x86_64
  33. //看一下安装是否成功,有@就是已经安装了
  34. [root@harbor ~]# yum list | grep percona-xtrabackup
  35. percona-xtrabackup-80.x86_64 8.0.35-30.1.el7 @percona-release-x86_64

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

4、完全备份

完全备份流程

  1. //备份前期准备工作:要开启MySQL的二进制日志,这里MySQL是8.0,所以默认是开启状态
  2. //把备份数据放在/xtrabackup/full目录下,提前把目录创建好再执行完整备份。执行命令结束后最后一行显示completed OK!则备份成功
  3. xtrabackup --backup --target-dir=/xtrabackup/full -uroot -p'Xielei@123'
  4. //查询备份结果
  5. ls /xtrabackup/full/
  6. //可以查看二进制日志文件的位置
  7. [root@harbor ~]# cat /xtrabackup/full/xtrabackup_binlog_info
  8. binlog.000032 157

完全恢复流程

  1. //停止数据库
  2. systemctl stop mysqld
  3. //模拟一下数据库损坏
  4. rm -rf /var/lib/mysql/*
  5. rm -rf /var/log/mysqld.log
  6. //还原时先一致性检查(也叫准备完整备份)
  7. xtrabackup --prepare --target-dir=/xtrabackup/full
  8. // 再进行恢复备份
  9. xtrabackup --copy-back --target-dir=/xtrabackup/full
  10. //还原好的文件要给mysql用户再授权
  11. chown -R mysql.mysql /var/lib/mysql
  12. //最后正常启动mysqld,完成还原操作
  13. systemctl start mysqld

5、增量备份

增量备份流程     

  1. //要进行增量备份,通常从完全备份开始
  2. xtrabackup --backup --target-dir=/xtrabackup/full -uroot -p'Xielei@123'
  3. //基于完全备份生成第一次增量备份。
  4. xtrabackup -uroot -p'Xielei@123' --backup --target-dir=/xtrabackup/inc1 --incremental-basedir=/xtrabackup/full 
  5. //基于第一次增量备份生成第二次增量备份(后续的增量备份以此类推。)
  6. xtrabackup -uroot -p'Xielei@123' --backup --target-dir=/xtrabackup/inc2 --incremental-basedir=/xtrabackup/inc1

增量恢复流程

  1. //先停止数据库
  2. systemctl stop mysqld  
  3. //再进行一致性检查(先回滚全量包,再回滚第一次增量包,再回滚第二次增量包,这时增量数据都到了全量包中)[每次增量包都要回滚!]
  4. xtrabackup --prepare --apply-log-only --target-dir=/xtrabackup/full
  5. xtrabackup --prepare --apply-log-only --target-dir=/xtrabackup/full --incremental-dir=/xtrabackup/inc1
  6. xtrabackup --prepare --apply-log-only --target-dir=/xtrabackup/full --incremental-dir=/xtrabackup/inc2
  7. //回滚完成后,进行恢复
  8. xtrabackup --copy-back --target-dir=/xtrabackup/full
  9. //最后还原的文件要给mysql用户再授权
  10. chown -R mysql.mysql /var/lib/mysql
  11. //最后正常启动mysqld,完成还原操作。
  12. systemctl start mysqld

6、差异备份

差异备份流程
 

  1. //要进行增量备份,通常从完全备份开始
  2. xtrabackup --backup --target-dir=/xtrabackup/full -uroot -p'Xielei@123'
  3. //基于完全备份生成第一次增量备份,与完全备份的差异就是差异备份
  4. xtrabackup -uroot -p'Xielei@123' --backup --target-dir=/xtrabackup/inc1 --incremental-basedir=/xtrabackup/full
  5. //仍是基于完全备份生成第二次增量备份,与完全备份的差异就是差异备份。(后续的差异备份仍是基于完全备份进行,以此类推。)
  6. xtrabackup -uroot -p'Xielei@123' --backup --target-dir=/xtrabackup/inc2 --incremental-basedir=/xtrabackup/full

差异恢复流程

  1. //如上所示,进行了两次差异备份,那么回滚不用像增量备份一样,每个增量包都需要回滚,只需回滚完全备份包和最后一次差异备份包即可。
  2. xtrabackup --prepare --apply-log-only --target-dir=/xtrabackup/full
  3. xtrabackup --prepare --apply-log-only --target-dir=/xtrabackup/full --incremental-dir=/xtrabackup/inc2
  4. //回滚完成后,进行恢复
  5. xtrabackup --copy-back --target-dir=/xtrabackup/full
  6. //最后还原的文件要给mysql用户再授权
  7. chown -R mysql.mysql /var/lib/mysql
  8. //最后正常启动mysqld,完成还原操作。
  9. systemctl start mysqld
声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号