MySQL8的备份方案——增量备份(CentOS)

MySQL8的增量备份

点击跳转全量(完全)备份

点击跳转差异备份

点击跳转压缩备份

一、安装备份工具

官网
下载地址

备份所用工具为percona-xtrabackup

如果下方安装工具的教程失效,请点击上方下载地址转到官方文档查看

  1. 下载该工具的yum仓库
bash 复制代码
yum install -y https://repo.percona.com/yum/percona-release-latest.noarch.rpm
  1. 启用该仓库
bash 复制代码
percona-release enable-only tools release
  1. 下载mysql的对应版本工具(本文章编写时为83版本,最新版请查看官方文档)

    如果安装失败,看一下yum源是否是官方的,如果是请更换yum源(一定要有epel,否则可能依旧失败),官方Centos9一下的yum源已停止维护,可能会缺失依赖

    MySQL8.3以上

    bash 复制代码
    yum install -y percona-xtrabackup-83

    MySQL8.0至8.3

    bash 复制代码
    yum install -y percona-xtrabackup-80

    MySQL( 5.1、5.5、5.6 、5.7 )

    bash 复制代码
    yum install -y percona-xtrabackup-24

4.安装相关软件包:lz4 zstd

bash 复制代码
yum install -y lz4 zstd

二、备份数据

增量备份依赖于之前的备份。在首次进行增量备份之前,需要有一个全量(完全)备份作为基础。之后的每次增量备份都只会备份自上次备份以来发生变化的数据。

  1. 创建备份文件夹,存放备份文件
bash 复制代码
mkdir -p /date/backup
  1. 开始备份,增量备份前需要完成一次全量备份
bash 复制代码
xtrabackup --defaults-file=/etc/my.cnf \
--backup \
--target-dir=/data/backup/自定义全量备份文件夹名 \
-uroot -p'密码' \
--no-server-version-check

--defaults-file 备份数据库的时候需要参考的默认文件。默认为/etc/my.cnf只要位置不变,可以不写
--backup 备份的意思
--target-dir 备份后的文件放在哪里(最后一个文件夹会自动创建,但前面的文件夹要自己创建)
-u 备份时候使用的数据库身份(可不写,默认用root用户登录)
-p 备份时使用身份的密码(登录MySQL的密码)
-H 要备份哪台机器(可不写,默认为本机)
-P 备份工具所登录备份服务器的端口(可不写,默认为3306)
--no-server-version-check 不对服务版本进行校验(如果看见报错一定要加,报错最后一行的末尾会写这条命令)

每次运行该命令,最后一行代码的最后两个单词为completed OK!就表示备份成功

  1. 第一次增量备份开始,第一次增量备份要参考全量备份
shell 复制代码
xtrabackup --backup \
--target-dir=/data/backup/`date +%F_%T`.inc \
--incremental-basedir=/data/backup/自定义全量备份文件夹名\
-p'密码' \
--no-server-version-check

--target-dir 这后面是增量备份的文件夹路径,不要与全量备份放在一个文件夹下
--incremental-basedir 增量备份参照的文件(参照谁进行增量)

  1. 添加数据后开始第二次增量备份,第二次增量备份是参考上一次的增量备份(本文只生成两次增量本分,再往后每次的增量备份都参考上一次的备份)
bash 复制代码
xtrabackup --backup \
--target-dir=/data/backup/`date +%F_%T`.inc \
--incremental-basedir=/data/backup/上一次的增量备份文件夹名\
-p'密码' \
--no-server-version-check

可以写个脚本,添加定时任务每天备份一次,把date +%F_%T.inc改为date +%F.inc

三、准备恢复所需的备份数据

准备备份文件,因为增量备份每次只备份自上次备份以来的变更内容,所以要恢复到最新,需要把每个备份都准备一下

  1. 准备全量备份文件
bash 复制代码
xtrabackup --prepare \
--apply-log-only \
--target-dir=/data/backup/自定义全量备份文件夹名 \
--no-server-version-check

--prepare 开始准备要恢复的备份文件
--apply-log-only 表示这次的准备是不完整的,后面还要追加

  1. 准备第一次增量备份文件
bash 复制代码
xtrabackup --prepare \
--apply-log-only \
--target-dir=/data/backup/自定义全量备份文件夹名 \
--incremental-dir=/data/backup/自定义增量备份文件夹名 /
--no-server-version-check

--target-dir 这里表示的是准备好的文件存放位置,最终恢复时用的就是这个路径
--incremental-dir 增量备份的文件夹路径(表示本次要准备该文件夹下的内容)

  1. 准备第二次增量备份文件
    最后一个备份文件准备时不要加--apply-log-only,表示准备已完成,下一步就可以进行恢复了
bash 复制代码
xtrabackup --prepare \
--target-dir=/data/backup/自定义全量备份文件夹名 \
--incremental-dir=/data/backup/自定义增量备份文件夹名 /
--no-server-version-check

四、 恢复备份文件

  1. 恢复前先确保/var/lib/mysql/文件夹下是空的,否则无法恢复
bash 复制代码
rm -rf /var/lib/mysql/*
  1. 恢复
bash 复制代码
xtrabackup --copy-back --target-dir=/date/backup/自定义全量备份文件夹名
  1. 添加权限
bash 复制代码
chown mysql.mysql -R /var/lib/mysql/*
  1. 重启MySQL服务
bash 复制代码
systemctl restart mysqld
  1. 登录测试()
bash 复制代码
mysql -uroot -p'原密码'
相关推荐
dessler11 分钟前
Docker-如何启动docker
运维·docker·云原生·容器·eureka
zhy2956311 分钟前
【DOCKER】基于DOCKER的服务之DUFS
运维·docker·容器·dufs
无为之士17 分钟前
Linux自动备份Mysql数据库
linux·数据库·mysql
秋名山小桃子26 分钟前
Kunlun 2280服务器(ARM)Raid卡磁盘盘符漂移问题解决
运维·服务器
与君共勉1213827 分钟前
Nginx 负载均衡的实现
运维·服务器·nginx·负载均衡
岑梓铭33 分钟前
(CentOs系统虚拟机)Standalone模式下安装部署“基于Python编写”的Spark框架
linux·python·spark·centos
努力学习的小廉34 分钟前
深入了解Linux —— make和makefile自动化构建工具
linux·服务器·自动化
MZWeiei37 分钟前
Zookeeper基本命令解析
大数据·linux·运维·服务器·zookeeper
7yewh1 小时前
嵌入式Linux QT+OpenCV基于人脸识别的考勤系统 项目
linux·开发语言·arm开发·驱动开发·qt·opencv·嵌入式linux
Arenaschi1 小时前
在Tomcat中部署应用时,如何通过域名访问而不加端口号
运维·服务器