MySQL 小技巧:利用 xtrabackup 完全备份,增量备份及还原

news2024/11/16 13:58:23

案例:利用 xtrabackup 8.0 完全备份,增量备份及还原 MySQL8.0

在面对海量数据时,我们无法做到每天全量备份,因此 只能每周做一次全量备份。

而每天的话则进行增量备份,确保数据安全。

注意点:MySQL 8.0.26 版本对应需要安装 8.0.26 版本的 xtrabackup 软件包

Index of /pub/percona/percona/yum/release/8/RPMS/x86_64/

0) 前置条件 ( 源主机与目标主机都安装好 MySQL 服务 )
[root@centos8 ~] yum install mysql-server -y
[root@centos8 ~] systemctl enable --now mysqld

----
1) 备份过程
1.1) 先做"完全备份"
[root@centos8 ~] yum install percona-xtrabackup-80-8.0.26-18.1.el8.x86_64.rpm -y
[root@centos8 ~] mkdir /backup/
[root@centos8 ~] xtrabackup -uroot -pP@ssw0rd123456 --backup --target-dir=/backup/base --no-server-version-check # 完全备份

# 验证备份目录
[root@centos8 ~] ll /backup

1.2) 第一天: 修改数据
insert teachers values(20,'wang',18,'M');
insert teachers values(21,'mage',18,'M');

1.3) 第一次"增量备份"
# 基于 完全备份 做增量备份
# 基于 /backup/base 做增量备份, 备份在 /backup/inc1 目录
[root@centos8 ~] xtrabackup -uroot -pP@ssw0rd123456 --backup --target-dir=/backup/inc1 --incremental-basedir=/backup/base --no-server-version-check    # 增量备份

# 验证备份目录
[root@centos8 ~] ll /backup

1.4) 第二天: 修改数据
insert teachers values(25,'wangj',18,'M');
insert teachers values(26,'wangjun',18,'M');

1.5) 第二次"增量备份"
# 基于 第一次增量备份 继续做增量备份
# 基于 /backup/inc1 做增量备份, 备份在 /backup/inc2 目录
[root@centos8 ~] xtrabackup -uroot -pP@ssw0rd123456 --backup --target-dir=/backup/inc2 --incremental-basedir=/backup/inc1 --no-server-version-check # 增量备份

# 验证备份目录
[root@centos8 ~]# ll /backup
total 12
drwxr-x---. 6 root root 4096 Feb  4 10:48 base        # 全量备份数据库
drwxr-x---. 6 root root 4096 Feb  4 10:50 inc1        # 第一次增量备份
drwxr-x---. 6 root root 4096 Feb  4 10:50 inc2        # 第二次增量备份

1.6) 复制所有备份数据到目标主机 ( 目标主机需要存在 /backup 目录 )
[root@centos8 ~] scp -r /backup/* 目标主机:/backup/
[root@centos8 ~] scp -r /backup/* 192.168.80.150:/backup/
# 备份过程会生成三个备份目录
 /backup/{base,inc1,inc2}

----
2) 还原过程
2.1) "预准备"完全备份 ( 此选项 --apply-log-only 阻止回滚未完成的事务 )
[root@centos8 ~] yum install percona-xtrabackup-80-8.0.26-18.1.el8.x86_64.rpm -y

# 预处理完全备份数据
[root@centos8 ~] xtrabackup --prepare --apply-log-only --target-dir=/backup/base

2.2) 合并第 1 次增量备份到完全备份
[root@centos8 ~] xtrabackup --prepare --apply-log-only --target-dir=/backup/base --incremental-dir=/backup/inc1


2.3) 合并第 2 次增量备份到完全备份
// 最后一次还原不需要加选项 --apply-log-only
[root@centos8 ~] xtrabackup --prepare --target-dir=/backup/base --incremental-dir=/backup/inc2

2.4) 复制备份数据到数据库目录
# 注意: 数据库目录必须为空, MySQL 服务不能启动
[root@centos8 ~] systemctl stop mysqld      # MySQL 服务不能启动
[root@centos8 ~] rm -rf /var/lib/mysql/*    # 数据库目录必须为空
[root@centos8 ~] xtrabackup --copy-back --target-dir=/backup/base    # 复制备份数据到数据库目录

2.5) 还原属性
[root@centos8 ~] chown -R mysql:mysql /var/lib/mysql

2.6) 启动服务
[root@centos8 ~] systemctl enable --now mysqld

2.7) 验证数据
[root@centos8 ~] mysql
mysql> select * from teachers;
+-----+---------------+-----+--------+
| TID | Name          | Age | Gender |
+-----+---------------+-----+--------+
|   1 | Song Jiang    |  45 | M      |
|   2 | Zhang Sanfeng |  94 | M      |
|   3 | Miejue Shitai |  77 | F      |
|   4 | Lin Chaoying  |  93 | F      |
|  20 | wang          |  18 | M      |
|  21 | mage          |  18 | M      |
|  25 | wangj         |  18 | M      |
|  26 | wangjun       |  18 | M      |
+-----+---------------+-----+--------+
8 rows in set (0.00 sec)

 

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

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

相关文章

ESLint prettier 配置代码风格

环境同步: 1、ESlint,开启保存自动修复 配置文件 .eslintrc.cjs prettier 风格配置 https://prettier.io 使用单引号 不使用分号 每行宽度至多80字符 不加对象|数组最后逗号 换行符号不限制(win mac 不一致) vue组件名称…

用sdkman在linux上管理多个java版本

概述: SDKMAN 是一个用于管理软件开发工具的工具,允许您轻松地安装、升级和切换不同版本的 JDK、Maven、Gradle 等工具。以下是在 Linux 上安装 SDKMAN! 的基本步骤: 安装SdkMan 使用 curl 安装 SDKMAN!: 打开终端,并运行以下命…

Flink-CDC实时读Postgresql数据

前言 CDC,Change Data Capture,变更数据获取的简称,使用CDC我们可以从数据库中获取已提交的更改并将这些更改发送到下游,供下游使用。这些变更可以包括INSERT,DELETE,UPDATE等。 用户可以在如下的场景使用cdc: 实时数据同步:比如将Postgresql库中的数据同步到我们的数仓中…

C++进阶(十一)C++11

📘北尘_:个人主页 🌎个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上,不忘来时的初心 文章目录 一、C11简介二、统一的列表初始化1、{}初始化2、std::initializer_lis…

【python】绘制春节烟花

一、Pygame库春节烟花示例 下面是一个使用Pygame实现的简单春节烟花效果的示例代码。请注意,运行下面的代码之前,请确保计算机上已经安装了Pygame库。 import pygame import random import math from pygame.locals import *# 初始化pygame pygame.ini…

Python数据可视化库之ggplot使用详解

概要 数据可视化是数据分析和数据沟通的关键部分。Python 作为一门强大的数据科学和数据分析工具,提供了多种数据可视化库,其中之一就是 ggplot。ggplot 是一个基于 ggplot2 的 Python 数据可视化库,它可以创建精美且高度可定制的图表,以更好地理解和传达数据。本文将深入…

5-2、S曲线计算【51单片机+L298N步进电机系列教程】

↑↑↑点击上方【目录】,查看本系列全部文章 摘要:本节介绍S曲线的基本变换,将基本形式的S曲线变换成为任意过两点的S曲线,为后续步进电机S曲线运动提供理论支撑 一.计算目标 ①计算经过任意不同两点的S曲线方程 ②可调节曲线平…

github和gitee

github GitHub是一个面向开源及私有软件项目的托管平台,因为只支持Git作为唯一的版本库格式进行托管,故名GitHub。 github可以给提交的代码打上标签,方便版本的迭代和回退,也是一个存储代码的仓库 github工作区 gitee是gitHub的…

【C语言】C的整理记录

前言 该笔记是建立在已经系统学习过C语言的基础上,笔者对C语言的知识和注意事项进行整理记录,便于后期查阅,反复琢磨。C语言是一种面向过程的编程语言。 原想在此阐述一下C语言的作用,然而发觉这些是编程语言所共通的作用&#…

Cayman Chemical--TR-FRET 分析试剂盒

Cayman TR-FRET分析试剂盒专为使用均相TR-FRET技术高通量定量测量细胞培养上清中待测物浓度或高通量筛选设计,为客户提供了一种强大且易于使用的检测方案。 TR-FRET分析法结合了荧光共振能量转移与时间分辨荧光两种技术,以带有铕(Eu3&#xf…

【Nicn的刷题日常】之两个整数二进制位不同个数

目录 1.题目描述 描述 输入描述: 输出描述: 示例1 2.解题思路 3.解题代码 4.思路二 1.题目描述 描述 输入两个整数,求两个整数二进制格式有多少个位不同 输入描述: 两个整数 输出描述: 二进制不同位的个数…

Java老兵 转C语言,需要学习的点(最易懂的解释)

一、static 1.1 修饰函数内的局部变量: void sayHi(void) { static int index 5;index; }多次调用sayHi函数,index 5 只有在第一次调用的时候初始化一次,后面的多次调用,此句话就不执行了。 1.2 修饰全局变量或…

2024年第一篇博客

这是2024年的第一篇博客,2023年笔者经历了一连串的生活、工作、学习上的转折和调整,跌跌撞撞时光飞逝,转眼间就踏着元旦的钟声步入了2024年,前思后想、辗转反侧、犹豫再三不知道从哪里开始博客新的篇章,这个问题坦诚说…

解决Python xlwings报错AttributeError ‘NoneType‘ object has no attribute apps

一、问题背景 今天,遇到了一个问题:以前调试好的python使用xlwings操作wps表格的脚本突然不能运行了,遇到了很多莫名问题,下面记录分享下: 开始报错如下: D:\PycharmProjects\tiku\venv\Scripts\python.e…

C语言之字符逆序(牛客网)

个人主页(找往期文章包括但不限于本期文章中不懂的知识点):我要学编程(ಥ_ಥ)-CSDN博客 字符逆序__牛客网 题目: 思路:既然有空格就不能用scanf函数来接收字符了。因为scanf函数遇到空格会停止读取。我们可以用get…

QtAV学习:(一)Windows下编译QtAV

QtAV 主页: QtAV by wang-bin 作者的编译构建说明文档: Build QtAV wang-bin/QtAV Wiki GitHub 我的编译环境: 编译环境:win10/msvc2015/Qt5.6.3 第一步:GitHub拉取代码,执行子模块初始化 地址: …

风控安全产品系统设计

风控业务架构 我把风控业务架构的分层分为6层,分别是组件层、业务层、决策层、能力层、计算层、可视层。 以下基建为基础安全产品的简称。 组件层 组件层的职责是:数据收集与行为反制。 从接口、设备、行为三个维度进行数据收集,接收决策层的指令进行行为反制。为了保证…

2.6c语言 判断素数

试除法(2--a-1) 判断一个数是否是素数,素数是只能被1或者他本身整除的数(1不是素数),可以通过循环遍历从2--a-1所有数,看有没有数能够被他整除,从而去判断他是不是素数. 代码部分 #include<stdio.h> int main() {int arr[10]{2,3,4,5,66,77,567,2553,3456,4436};int f…

Vue安装与配置

写入借鉴网址&#xff1a;好细的Vue安装与配置_vue配置-CSDN博客 下载Vue安装地址&#xff1a; Node.js — Download 查看是否安装成功&#xff1a; node -v npm -v 配置全局模式及缓存 结果通过&#xff1a; C:\Windows\system32>npm install vue -g added 20 packages …

ElasticSearch查询语句用法

查询用法包括&#xff1a;match、match_phrase、multi_match、query_string、term 1.match 1.1 不同字段权重 如果需要为不同字段设置不同权重&#xff0c;可以考虑使用bool查询的should子句来组合多个match查询&#xff0c;并为每个match查询设置不同的权重 {"query&…