赞
踩
目录
备份原因:丢、删
备份目标:数据的一致性、服务的可用性
物理备份/冷备份:直接复制数据库文件,适用于大型数据库环境,不受存储引擎的限制,但不能恢复到不同的MySQL。tar,cp,scp
逻辑备份/热备份:备份是建表、建库、插入等操作所执行的SQL语句(DDL DML DCL),适用于中小型数据库。mysqldump,mydumper
- 完全备份:
每次对数据进行完整的备份,即对整个数据库的备份、数据库结构和文件结构的备份,保存的是备份完成时刻的数据库,是差异备份与增量备份的基础。
- 增量备份
只有那些在上次完全备份或者增量备份后被修改的文件才会被备份。以上次完整备份或上次的增量备份的时间为时间点,仅备份这之间的数据变化,因而备份的数据量小,占用空间小,备份速度快。但恢复时,需要从上一次的完整备份起到最后一次增量备份依次恢复,如中间某次的备份数据损坏,将导致数据的丢失。(一个数据100G,第一次备份100G,第二次数据是110G,第二次备份只需备份10G)
- 差异备份
备份那些自从上次完全备份之后被修改过的所有文件,备份的时间起点是从上次完整备份起,备份数据量越来越大。恢复数据时,只需恢复上次的完全备份与最近的一次差异备份。
它是开源免费的支持 MySQL 数据库热备份的软件,它能对InnoDB 和 XtraDB 存储引擎的数据库非阻塞地备份。它不暂停服务创建 Innodb 热备份;为 mysql 做增量备;在 mysql 服务器之间做在线表迁移;使创建 replication 更加容易;备份 mysql 而不增加服务器的负载。
percona 是一家老牌的 mysql 技术咨询公司。它不仅提供 mysql 的技术支持、培训、咨询,还发布了 mysq 的分支版本﹣ percona Server 。并围绕percona Server 还发布了一系列的 mysql 工具。
官方站点:https:www.percona.com
选择版本
①
②
③
安装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_64percona-xtrbackup安装成功之后就是备份啦
完全备份流程
//备份前期准备工作:要开启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
增量备份流程
//要进行增量备份,通常从完全备份开始 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
差异备份流程
//要进行增量备份,通常从完全备份开始 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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。