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

MySQL8的增量备份

  • 一、安装备份工具
  • 二、备份数据
  • 三、准备恢复所需的备份数据
  • 四、 恢复备份文件

点击跳转全量(完全)备份
点击跳转差异备份
点击跳转压缩备份

一、安装备份工具

官网
下载地址
备份所用工具为percona-xtrabackup
如果下方安装工具的教程失效,请点击上方下载地址转到官方文档查看

  1. 下载该工具的yum仓库
yum install -y https://repo.percona.com/yum/percona-release-latest.noarch.rpm
  1. 启用该仓库
percona-release enable-only tools release
  1. 下载mysql的对应版本工具(本文章编写时为83版本,最新版请查看官方文档)
    如果安装失败,看一下yum源是否是官方的,如果是请更换yum源(一定要有epel,否则可能依旧失败),官方Centos9一下的yum源已停止维护,可能会缺失依赖

    MySQL8.3以上

    yum install -y percona-xtrabackup-83
    

    MySQL8.0至8.3

    yum install -y percona-xtrabackup-80
    

    MySQL( 5.1、5.5、5.6 、5.7 )

    yum install -y percona-xtrabackup-24
    

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

yum install -y lz4 zstd

二、备份数据

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

  1. 创建备份文件夹,存放备份文件
mkdir -p /date/backup
  1. 开始备份,增量备份前需要完成一次全量备份
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. 第一次增量备份开始,第一次增量备份要参考全量备份
xtrabackup --backup \
--target-dir=/data/backup/`date +%F_%T`.inc \
--incremental-basedir=/data/backup/自定义全量备份文件夹名\
-p'密码' \
--no-server-version-check

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

  1. 添加数据后开始第二次增量备份,第二次增量备份是参考上一次的增量备份(本文只生成两次增量本分,再往后每次的增量备份都参考上一次的备份)
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. 准备全量备份文件
xtrabackup --prepare \
--apply-log-only \
--target-dir=/data/backup/自定义全量备份文件夹名 \
--no-server-version-check

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

  1. 准备第一次增量备份文件
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,表示准备已完成,下一步就可以进行恢复了
xtrabackup --prepare \
--target-dir=/data/backup/自定义全量备份文件夹名 \
--incremental-dir=/data/backup/自定义增量备份文件夹名 /
--no-server-version-check

四、 恢复备份文件

  1. 恢复前先确保/var/lib/mysql/文件夹下是空的,否则无法恢复
rm -rf /var/lib/mysql/*
  1. 恢复
xtrabackup --copy-back --target-dir=/date/backup/自定义全量备份文件夹名
  1. 添加权限
chown mysql.mysql -R /var/lib/mysql/*
  1. 重启MySQL服务
systemctl restart mysqld
  1. 登录测试()
mysql -uroot -p'原密码'

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/873968.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PACS-医学影像信息管理系统,全影像科室PACS源码,内置包括MPR、CMPR、VR等三维处理功能

PACS系统可以覆盖医院现有放射、CT、MR、核医学、超声、内镜、病理、心电等绝大部分DICOM和非DICOM检查设备,支持从科室级、全院机、集团医院级乃至到区域PACS的平滑扩展,能够与医院HIS、集成平台的有效集成和融合,帮助医院实现了全院医学影像…

Qt Style Sheets-使用样式表自定义 Qt 部件

使用样式表自定义 Qt 部件 在使用样式表时,每个小部件都被视为具有四个同心矩形的框:边距矩形、边框矩形、填充矩形和内容矩形。框模型对此进行了更详细的描述。 盒模型 以下是四个同心矩形在概念上的呈现方式: 边距超出边框。边框绘制在边…

【深入C++】二叉搜索树

文章目录 什么是二叉搜索树二叉搜索树的接口1.查找操作2.插入操作3.中序遍历4.删除操作 所有代码总结 什么是二叉搜索树 二叉搜索树(Binary Search Tree, BST)是一种特殊的二叉树,其每个节点最多有两个子节点,分别称为左子节点和…

C++实现数组中是否存在递增三元组的巧妙方法【奇思妙想】

C实现数组中是否存在递增三元组的巧妙方法 在解决数组问题时,尤其是涉及到子序列的查找,我们需要考虑时间复杂度和空间复杂度,以确保算法的效率。我们将介绍一种高效的解决方案,详细讲解其思路和实现。 问题描述 给你一个整数数…

Linux环境下dockes使用MongoDB,上传zip文件如何解压并备份恢复到MongoDB数据库中

1、准备 Docker 和 MongoDB 容器 建议主机端口改一下 docker run --name mongodb -d -p 27018:27017 mongo 2. 创建一个工作目录并将 zip 文件上传到dockers容器中 docker cp data.zip mongodb:/data.zip 3. 在 MongoDB 容器中解压 zip 文件(也可以解压完再复制…

C++仿函数

在C中,我们经常需要对类中的元素进行比较,例如在排序、查找等操作中。为了使类更加灵活,我们可以通过自定义比较函数来实现不同的比较方式。在本文中,我们将探讨如何在类中使用仿函数和 Lambda 表达式来定义自定义比较函数。 1. …

《C++并发编程实战》笔记(三)

三、线程间共享数据的保护 多个线程同时访问修改共享的数据时,如果不加以控制,可能会造成未知的错误,为了解决这个问题,需要采取特殊的手段保证数据在各个线程间可以被正常使用。 这里介绍使用互斥量保护数据的方法。 3.1 使用互…

基础vrrp(虚拟路由冗余协议)

一、VRRP 虚拟路由冗余协议 比如交换机上联两个路由器,由两个路由虚拟出一台设备设置终端设备的网关地址,两台物理路由的关系是主从关系,可以设置自动抢占。终端设备的网关是虚拟设备的ip地址,这样,如果有一台路由设备…

pytorch学习(十一)checkpoint

当训练一个大模型数据的时候,中途断电就可以造成已经训练几天或者几个小时的工作白做了,再此训练的时候需要从epoch0开始训练,因此中间要不断保存(epoch,net,optimizer,scheduler)等…

深入探索:Stable Diffusion 与传统方法对比:优劣分析

深入探索:Stable Diffusion 与传统方法对比:优劣分析 一、引言 随着人工智能和深度学习的发展,优化算法在神经网络训练中的重要性日益凸显。传统的优化方法,如随机梯度下降(SGD)、动量法和Adam等&#xf…

动手学深度学习——5.卷积神经网络

1.卷积神经网络特征 现在,我们将上述想法总结一下,从而帮助我们设计适合于计算机视觉的神经网络架构。 平移不变性(translation invariance):不管检测对象出现在图像中的哪个位置,神经网络的前面几层应该对…

《昇思 25 天学习打卡营第 15 天 | 基于MindNLP+MusicGen生成自己的个性化音乐 》

《昇思 25 天学习打卡营第 15 天 | 基于MindNLPMusicGen生成自己的个性化音乐 》 活动地址:https://xihe.mindspore.cn/events/mindspore-training-camp 签名:Sam9029 MusicGen概述 MusicGen是由Meta AI的Jade Copet等人提出的一种基于单个语言模型&…

密码学原理精解【8】

文章目录 概率分布哈夫曼编码实现julia官方文档建议的变量命名规范:julia源码 熵一、信息熵的定义二、信息量的概念三、信息熵的计算步骤四、信息熵的性质五、应用举例 哈夫曼编码(Huffman Coding)基本原理编码过程特点应用具体过程1. 排序概…

Bubbliiiing 的 Retinaface rknn python推理分析

Bubbliiiing 的 Retinaface rknn python推理分析 项目说明 使用的是Bubbliiiing的深度学习教程-Pytorch 搭建自己的Retinaface人脸检测平台的模型,下面是项目的Bubbliiiing视频讲解地址以及源码地址和博客地址; 作者的项目讲解视频:https:…

FFmpeg音视频流媒体的顶级项目

搞音视频、流媒体的圈子,没法躲开ffmpeg这个神级项目。 FFmpeg 是一个功能强大且广泛使用的多媒体处理工具。FFmpeg 具备众多出色的特性。它支持多种音频和视频格式的转换,能轻松将一种格式的文件转换为另一种,满足不同设备和应用的需求。不仅如此,它还可以进行视频的裁剪、…

php编译安装

一、基础环境准备 # php使用www用户 useradd -s /sbin/nologin -M www二、下载php包 # 下载地址 https://www.php.net/downloads wget https://www.php.net/distributions/php-8.3.9.tar.gz三、配置编译安装 编译安装之前需要处理必要的依赖,在编译配置安装&…

使用多进程和多线程实现服务器并发【C语言实现】

在TCP通信过程中,服务器端启动之后可以同时和多个客户端建立连接,并进行网络通信,但是在一个单进程的服务器的时候,提供的服务器代码却不能完成这样的需求,先简单的看一下之前的服务器代码的处理思路,再来分…

Python中自定义上下文管理器的创建与应用

Python中自定义上下文管理器的创建与应用 在Python编程中,上下文管理器是一个非常重要的概念。它们允许我们更好地管理资源,如文件句柄、网络连接或数据库连接等,确保这些资源在使用后能够被正确关闭或释放,从而避免资源泄露。Python标准库中的contextlib模块提供了强大的…

代码随想录学习 day54 图论 Bellman_ford 算法精讲

Bellman_ford 算法精讲 卡码网:94. 城市间货物运输 I 题目描述 某国为促进城市间经济交流,决定对货物运输提供补贴。共有 n 个编号为 1 到 n 的城市,通过道路网络连接,网络中的道路仅允许从某个城市单向通行到另一个城市&#xf…

【HarmonyOS】网络连接 - Http 请求数据

在日常开发应用当中,应用内部有很多数据并不是保存在应用内部,而是在服务端。所以就需要向服务端发起请求,由服务端返回数据。这种请求方式就是 Http 请求。 一、申请网络权限 在 module.json5 文件中,添加网络权限: …