当前位置: 首页 > news >正文

物理备份xtrabackup

物理备份: 直接复制数据库文件,适用于大型数据库环境,不受存储引擎的限制,但不能恢复到不同的MySQL版本。

1.完全备份-----完整备份:

每次都将所有数据(不管自第一次备份以来有没有修改过),进行一次完整的复制,备份后会清除文件的存档属性,方便日后增量备份或者差异备份进行版本比较。

特点:占用空间大,备份速度慢,但恢复时一次恢复到位,恢复速度快。

2.增量备份: 每次备份上一次备份到现在产生的新数据

在第一次完整备份之后,第二次开始每次都将添加了存档属性的文件进行备份,并且在备份之后再把这些存档属性清除。为什么要清除存档属性呢?这就是为了下一次备份的时候判断是否有文件变化,因为用户在每次备份以后修改这些被清除存档属性的文件,存档属性就会自动加上,相当于用户告诉系统,这些文件有变化,你下一次就备份这些文件,其他没有存档属性的就不需要备份,这就是增量备份的工作机制。

特点:因每次仅备份自上一次备份(注意是上一次,不是第一次)以来有变化的文件,所 以备份体积小,备份速度快,但是恢复的时候,需要按备份时间顺序,逐个备份版本进行恢 复,恢复时间长。

3.差异备份:只备份跟完整备份不一样的

在第一次完整备份之后,第二次开始每次都将所有文件与第一次完整备份的文件做比较,把自第一次完整备份以来所有修改过的文件进行备份,且以后每次备份都是和第一次完整备份进行比较(注意是第一次,不是上一次),备份自第一次完整备份以来所有的修改过的文件。因此,差异备份在备份完毕之后不需要清除文件的存档属性,因为这些文件和下一次备份没有什么关系,它仅仅和第一次完整备份的数据进行比较(第一次完整备份之后是清除存档属性的)。

 (相当于第一次机器人把地板打扫干净了,你踩过,就会有脚印,机器人就把脚印记录下   来,但不打扫,下次你又有踩脏的,机器人就把你这几次所有踩脏的地方都记录下来,始终   不打扫,每次都这样。机器人每次记录的内容就相当于差异备份的内容)  

特点:占用空间比增量备份大,比完整备份小,恢复时仅需要恢复第一个完整版本和最后一次的差异版本,恢复速度介于完整备份和增量备份之间。

简单的讲,完整备份就是不管三七二十一,每次都把指定的备份目录完整的复制一遍,不管目录下的文件有没有变化;增量备份就是每次将之前(第一次、第二次、直到前一次)做过备份之后有变化的文件进行备份;差异备份就是每次都将第一次完整备份以来有变化的文件进行备份。

热备份:

数据库启动同时给客户端提供服务的情况下 

冷备份:

数据库要关掉或者不能给客户端提供服务

1.安装xtrabackup  

官网:  www.percona.com

安装xtrabackup
# wget http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm
# rpm -ivh percona-release-0.1-4.noarch.rpm
[root@mysql-server yum.repos.d]# vim percona-release.repo

修改如下内容:将原来的1改为0

[root@mysql-server yum.repos.d]# yum -y install percona-xtrabackup-24.x86_64

我做实验时 使用的是提前下载好的包

将下载到本地的包 导到服务器上
#  rz
解压
#tar xzf xtrabackup.tar.gz  -C /opt#cd  /opt 
# cd xtrabackup/
安装所有rpm包
yum localinstall *下载好以后 如果能在命令行 输入innob直接tab出来 innobackupex 则说明下载安装成功

完全备份流程

1.1首先创建一个备份目录

[root@localhost ~]#   mkdir /root/xtrabackup/full  -p

1.2备份数据

[root@localhost ~]# innobackupex  --user=root --password='Qianfeng@123' /root/xtrabackup/full/user是登录MySQL的系统用户
password是登录MySQL的系统用户密码

语法:innobackupex  --user=root   --password='密码'    /存放备份的路径

1.3查看备份数据是否成功

[root@localhost ~]# cd xtrabackup/full/
[root@localhost full]# ls
2023-10-07_18-47-56

完全备份恢复流程

1.4停止数据库

# systemctl stop mysqld 提前将防火墙与selinux关闭

1.5清理环境

# rm -rf /var/lib/mysql/*

1.6重演回滚

# innobackupex  --apply-log --redo-only /root/xtrabackup/full/2023-10-07_18-47-56/

语法: innobackupex   --apply-log  --redo-only  /存放完全备份数据的目录

恢复之前需要确认配置文件内有数据库目录指定,不然xtrabackup不知道恢复到哪里
 

# cat /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql

1.7数据恢复

# innobackupex  --copy-back /存放完全备份的地址

语法: innobackupex  --copy-back   /存放完全备份地址

1.8更改权限

数据恢复以后会在/var/lib/mysql 下生成新的文件 这些文件在运行启动MySQL服务时 会用到,因此这些文件的属组以及属主都得是MySQL

# chown -R mysql.mysql *

1.9启动服务

# systemctl start mysqld

增量备份流程

实验代替语言

2.1首先一个数据库里面有 表数据

mysql> select * from student;
+------+------+------+
| id   | name | time |
+------+------+------+
|    1 | aaa  | 1    |
+------+------+------+
1 row in set (0.00 sec)

2.2完全备份它

首先创建存放完全备份目录
# mkdir /root/xtrabackup/full/ -p
存放增量备份的目录
# mkdir /root/xtrabackup/zlbf/ -p
完全备份
# innobackupex  --user=root  --password='Qianfeng@123' /root/xtrabackup/full/

2.3到数据库插入新的数据

mysql> use school;mysql> insert into student values(2,'bbb',2);

2.4备份新的数据

# innobackupex --user=root --password='Qianfeng@123' --incremental /root/xtrabackup/zlbf/  --incremental-basedir /root/xtrabackup/full/2023-10-07_19-23-32/

2.5停止服务,清理环境

# systemctl stop mysqld
# rm -rf /var/lib/mysql/*

2.6回滚

首先回滚最先开始备份的完全备份好的数据
# innobackupex  --apply-log --redo-only /root/xtrabackup/full/2023-10-07_19-23-32/接着回滚增量备份的数据,而增量数据实在完全备份以后新增的数据,因此
# innobackupex  --apply-log --redo-only /root/xtrabackup/full/2023-10-07_19-23-32/  --incremental-dir /root/xtrabackup/zlbf/2023-10-07_19-31-01/

回滚非完全备份的数据 语法:  innobackupex  --apply-log --redo-only /完全备份的数据路径

--incremental-dir    /这次要回滚的备份数据

也就是前面是 回滚完全备份的数据  将后面追加的备份数据加到完全备份数据里

2.7恢复

由于前面回滚的时候将全部的备份数据都回滚到完全备份那里,因此恢复的时候只需要恢复完全备份的数据即可
# innobackupex  --copy-back /root/xtrabackup/full/2023-10-07_19-23-32/ 

2.8设置权限

# chown -R mysql.mysql /var/lib/mysql/*

2.9启动服务即可

# systemctl start mysqld

差量备份

以周一周二 周三为例

3.1先完全备份周一,增量备份周二

准备数据库
mysql> select * from student;
+------+------+------+
| id   | name | time |
+------+------+------+
|    1 | aaa  | 1    |
+------+------+------+
1 row in set (0.00 sec)完全备份周一
# innobackupex --user=root --password='Qianfeng@123' /root/xtrabackup/full/插入数据周二
mysql> select * from student;
+------+------+------+
| id   | name | time |
+------+------+------+
|    1 | aaa  | 1    |
|    2 | bbb  | 2    |
+------+------+------+增量备份周二
# innobackupex  --user=root --password='Qianfeng@123' --incremental /root/xtrabackup/zlbf/ --incremental-basedir /root/xtrabackup/full/2023-10-07_20-09-51/

3.2添加数据周三,然后差异备份

ysql> select * from student;
+------+------+------+
| id   | name | time |
+------+------+------+
|    1 | aaa  | 1    |
|    2 | bbb  | 2    |
|    3 | bbb  | 3    |
+------+------+------+
3 rows in set (0.01 sec)差异备份,差异备份是基于上一次完全备份之后的  因此
# innobackupex  --user=root --password='Qianfeng@123' --incremental /root/xtrabackup/xybf/ --incremental-basedir /root/xtrabackup/full/2023-10-07_20-09-51/删除数据库school
mysql> drop database school;
Query OK, 1 row affected (0.01 sec)mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

3.3停止服务,清理环境

# systemctl stop mysqld
# cd /var/lib/mysql
# rm -rf *

3.4回滚

回滚周一
# innobackupex --apply-log --redo-onpy /root/xtrabackup/full/2023-10-07_20-09-51/回滚周三,将其回滚到周一中,因为周三是差异备份,他是基于上一次完全备份以后的,因此周三 含有周二 周三的内容
# innobackupex --apply-log --redo-onpy /root/xtrabackup/full/2023-10-07_20-09-51/  --incremental-dir /root/xtrabackup/xybf/2023-10-07_20-21-20/

3.5恢复

由于数据都回滚到周一的完全备份当中,因此只需要恢复周一内容即可

# innobackupex --copy-back  root/xtrabackup/full/2023-10-07_20-09-51/

3.6设置权限

# chown -R mysql.mysql /var/lib/mysql/*

3.7启动服务:

# systemctl start mysqld

相关文章:

物理备份xtrabackup

物理备份: 直接复制数据库文件,适用于大型数据库环境,不受存储引擎的限制,但不能恢复到不同的MySQL版本。 1.完全备份-----完整备份: 每次都将所有数据(不管自第一次备份以来有没有修改过)&am…...

1.springcloudalibaba nacos2.2.3部署

前言 nacos是springcloudalibaba体系的注册中心,演示如何搭建最新稳定版本的linux搭建。 前置条件,安装好jdk1.8 一、二进制压缩包下载 1.1 下载压缩包 nacos下载 点击下载下载后得到二进制包如下 nacos-2.2.3.tar.gz二、安装步骤 2.1.解压二进制…...

Linux 查看是否安装memcached

telnet 127.0.0.1 11211这样的命令连接上memcache,然后直接输入stats就可以得到memcache服务器的版本 安装memcached : sudo apt-get install memcached...

设计模式14、命令模式 Command

解释说明:命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传递给调用对象。调用对象寻找可以处理该命令的合适对象,并把该命令传给相应的对象&…...

【Go】excelize库实现excel导入导出封装(一),自定义导出样式、隔行背景色、自适应行高、动态导出指定列、动态更改表头

前言 最近在学go操作excel,毕竟在web开发里,操作excel是非常非常常见的。这里我选择用 excelize 库来实现操作excel。 为了方便和通用,我们需要把导入导出进行封装,这样以后就可以很方便的拿来用,或者进行扩展。 我参…...

【开发篇】二十、SpringBoot整合RocketMQ

文章目录 1、整合2、消息的生产3、消费4、发送异步消息5、补充:安装RocketMQ 1、整合 首先导入起步依赖,RocketMQ的starter不是Spring维护的,这一点从starter的命名可以看出来(不是spring-boot-starter-xxx,而是xxx-s…...

OpenCV实现求解单目相机位姿

单目相机通过对极约束来求解相机运动的位姿。参考了ORBSLAM中单目实现的代码&#xff0c;这里用opencv来实现最简单的位姿估计. mLeftImg cv::imread(lImg, cv::IMREAD_GRAYSCALE); mRightImg cv::imread(rImg, cv::IMREAD_GRAYSCALE); cv::Ptr<ORB> OrbLeftExtractor …...

深入解析PostgreSQL:命令和语法详解及使用指南

文章目录 摘要引言基本操作安装与配置连接和退出 数据库操作创建数据库删除数据库切换数据库 表操作创建表删除表插入数据查询数据更新数据删除数据 索引和约束创建索引创建约束 用户管理创建用户授权用户修改用户密码 备份和恢复备份数据库恢复数据库 高级特性结语参考文献 摘…...

Elasticsearch数据搜索原理

Elasticsearch 是一个开源的、基于 Lucene 的分布式搜索和分析引擎&#xff0c;设计用于云计算环境中&#xff0c;能够实现实时的、可扩展的搜索、分析和探索全文和结构化数据。它具有高度的可扩展性&#xff0c;可以在短时间内搜索和分析大量数据。 Elasticsearch 不仅仅是一个…...

vue模版语法-{{}}/v-text/v-html/v-once

一、{{}}双括号&#xff1a;用于文本渲染 1、 {{变量名}}:data中返回对象的变量名 2、{{js表达式}}:可以直接进行js表达式处理 3、注意&#xff1a;双大括号中不要写等式书写 二、v-text 指令&#xff0c;用于文本渲染 1、为了解决双大括号渲染数据出现闪烁问题 三、v-cloak …...

前端埋点上传

没事看看&#xff1a; 从用户行为到数据&#xff1a;数据采集全景解析 | 人人都是产品经理 搭建前端监控&#xff0c;采集用户行为的 N 种姿势-前端监控设备 创业公司做数据分析&#xff08;三&#xff09;用户行为数据采集系统-CSDN博客...

第11章 Redis(一)

11.1 谈谈你对Redis的理解 难度:★★★ 重点:★★ 白话解析 对Redis的理解无非从三个方面去说一说:背景,是什么,特性。 背景:数据直接存磁盘太慢了,虽然MySQL用到了BufferPool等缓存,但是为了保证数据不丢失,MySQL采用的RedoLog依然要直接写磁盘。所以,数据的存储就…...

freertos信号量之二值信号量

freertos信号量之二值信号量 简介例程 简介 FreeRTOS的二值信号量&#xff08;Binary Semaphore&#xff09;是用于实现进程间同步和临界资源保护的重要工具。以下是一些二值信号量的常用函数及其说明&#xff1a; 1&#xff09;xSemaphoreCreateBinary() 创建一个二值信号量…...

notepad++ 如何去除换行

选中下方的“扩展” “查找目标”输入&#xff1a;\r\n&#xff0c;替换为:空白 最后全部替换。...

PPT NO.2 ​插入透明校徽

插入透明校徽&#xff1a; ①先下载一个校徽&#xff1a; ​ ②用矢量网站转换一下&#xff0c;这个免费的&#xff0c;很多其他的要钱钱&#xff1a; 位图转矢量图,JPG转矢量,PNG转矢量,GIF转矢量,BMP转矢量 - 在线工具 - 字客网 (fontke.com) 转换完了如下&#xff1a; 打…...

Linux系统部署PostgreSQL 单机数据库

安装方式 1 安装包方式 &#xff08;Packages and Installers&#xff09; 支持的操作系统包括 liunxMacosWindowsBSDSolaris 2 源码安装 &#xff08;Source code&#xff09; 下载源码包 通过下载地址PostgreSQL: File Browser 可以看到有各个版本的源码目录 选择13.1…...

好用的办公摸鱼神器

http://t.chaojizhu.cn/fawork/Down?uid180819...

手写Java序列化工具

一、思考 假设给一个java bean&#xff0c;让你按照 json 的格式打印出来&#xff0c;你会怎么做&#xff1f; 比如这个java bean 长这样&#xff0c;并且创建了一个叫宝儿姐的朋友 package com.test;public class User {private String name;private Integer age;private Bi…...

mysql面试题26:MySQL中什么是MVCC,它的底层原理是什么

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:什么是MVCC,它的底层原理是什么? MVCC(Multi-Version Concurrency Control)是一种并发控制机制,用于在数据库中实现并发事务的隔离性和一致性…...

SQL进阶 - SQL的编程规范

性能优化是一个很有趣的探索方向&#xff0c;将耗时耗资源的查询优化下来也是一件很有成就感的事情&#xff0c;但既然编程是一种沟通手段&#xff0c;那每一个数据开发者就都有义务保证写出的代码逻辑清晰&#xff0c;具有很好的可读性。 目录 引子 小试牛刀 答案 引言 …...

[NISACTF 2022]babyserialize - 反序列化+waf绕过【*】

[NISACTF 2022]babyserialize 一、解题过程二、思考总结&#xff08;一&#xff09;、关于题目的小细节&#xff08;二&#xff09;、关于弱类型比较技巧 一、解题过程 题目代码&#xff1a; <?php include "waf.php"; class NISA{public $fun"show_me_fl…...

docker部署Vaultwarden密码共享管理系统

Vaultwarden是一个开源的密码管理器&#xff0c;它是Bitwarden密码管理器的自托管版本。它提供了类似于Bitwarden的功能&#xff0c;允许用户安全地存储和管理密码、敏感数据和身份信息。 Vaultwarden的主要特点包括&#xff1a; 1. 安全的数据存储&#xff1a;Vaultwarden使…...

低代码开发技术选型

低代码的技术路径 低代码开发低代码开发优势低代码的技术路径1.表格驱动2.表单驱动3.数据模型4.领域模型 低代码的核心能力企业级低代码开发平台的11项关键能力低代码平台的流程引擎选型低代码平台的流程设计器选型低代码平台的表单设计器选型低代码平台的Vue.js 框架选型 低代…...

在vue2中,v-model和.sync的区别

最近在封装一个弹窗组件时&#xff0c;用了比较复杂的逻辑去做显示和隐藏的逻辑&#xff0c;在查看同事的代码之后&#xff0c;才知道还有更简单的方法&#xff0c;自己已经忘了一些API. popup组件里统一的template&#xff1a; <div v-ifisShowPopup> // 弹窗内容 <…...

nginx 配置

一、nginx安装 下载地址&#xff1a;http://nginx.org/en/download.html&#xff0c;和Keepalived搭配使用&#xff0c;防止nginx挂掉 二、nginx配置 ########### 每个指令必须有分号结束。################# #user administrator administrators; #配置用户或者组&#xf…...

【计算机视觉|人脸建模】学习从图像中回归3D面部形状和表情而无需3D监督

本系列博文为深度学习/计算机视觉论文笔记&#xff0c;转载请注明出处 标题&#xff1a;Learning to Regress 3D Face Shape and Expression from an Image without 3D Supervision 链接&#xff1a;[1905.06817] Learning to Regress 3D Face Shape and Expression from an I…...

Linux系统之部署h5ai目录列表程序

Linux系统之部署h5ai目录列表程序 一、h5ai介绍1.1 h5ai简介1.2 h5ai特点 二、本地环境介绍2.1 本地环境规划2.2 本次实践介绍 三、检查本地环境3.1 检查本地操作系统版本3.2 检查系统内核版本 四、安装httpd软件4.1 检查yum仓库4.2 安装httpd软件4.3 启动httpd服务4.4 查看htt…...

Java-Exception

目录 异常概念ErrorException 体系图常见运行时异常NullPointerExceptionArithmeticExceptionArrayIndexOutOfBoundExceptionClassCastExceptionNumberFormatException 常见的编译异常异常处理机制自定义异常throw和throws对比 异常是Java编程中的常见问题&#xff0c;了解如何…...

C++并发与多线程(2) | 线程运行开始和结束的基本方式

当程序运行起来,生成一个进程,该进程所属的主线程开始自动运行。当主线程从main()函数返回,则整个进程执行完毕。 主线程从main()开始执行,那么我们自己创建的线程,也需要从一个函数开始运行(初始函数),一旦这个函数运行完毕,就代表着我们这个线程运行结束。 整个进…...

vue3前端开发-flex布局篇

文章目录 1.传统布局与flex布局优缺点传统布局flex布局建议 2. flex布局原理2.1 布局原理 3. flex常见属性3.1 父项常见属性3.2 子项常见属性 4.案例实战(携程网首页) 1.传统布局与flex布局优缺点 传统布局 兼容性好布局繁琐局限性&#xff0c;不能再移动端很好的布局 flex布…...

北京市工程建设信息网/厦门seo公司到1火星

/* 二分法求解题意&#xff1a;对给定表达式求解。注意&#xff1a;①精度值的使用。 */ #include <cstdio> #include <cmath> int p,q,r,s,t,u; double f(double x) {return p*exp(-x)q*sin(x)r*cos(x)s*tan(x)t*x*xu; } int main() {//freopen("f://data.in…...

实用网站建设知识点/软文推广300字

1.1. 序列化 org.apache.hadoop.io包 序列化&#xff1a;将一个对象编码为一个字节流 反序列化&#xff1a;相反过程 用途&#xff1a; 1、 作为一种持久化格式&#xff1a;可存储在硬盘上&#xff0c;供以后反序列化使用 2、 作为一种通信数据格式&#xff1a;可在JVM之间&…...

日本做美食视频网站/广告位招商怎么找客户

BabyBluetooth 是一个最简单易用的蓝牙库&#xff0c;基于CoreBluetooth的封装&#xff0c;并兼容ios和mac osx。 特色&#xff1a; 基于原生CoreBluetooth框架封装的轻量级的开源库&#xff0c;可以帮你更简单地使用CoreBluetooth API。CoreBluetooth所有方法都是通过委托完成…...

洛阳市伊滨区建设局网站/球队世界排名榜

令牌桶算法 令牌桶算法(Token Bucket)和 Leaky Bucket 效果一样但方向相反的算法,更加容易理解.随着时间流逝,系统会按恒定1/QPS时间间隔(如果QPS100,则间隔是10ms)往桶里加入Token(想象和漏洞漏水相反,有个水龙头在不断的加水),如果桶已经满了就不再加了.新请求来临时,会各自拿…...

汉川建设局网站/营销顾问公司

先看看网上的方法是怎么样的&#xff1a; implementation (com.android.support:support-fragment:28.0.0){exclude group: "com.android.support",module: versionedparcelable}是我盲区&#xff0c;上述对我无效&#xff0c;没能解决&#xff0c;当场哭了 我们来看…...

绍兴做网站选哪家/建立网站的软件

shell字符串的截取的问题&#xff1a; 一、Linux shell 截取字符变量的前8位&#xff0c;有方法如下&#xff1a; 1.expr substr “$a” 1 8 2.echo $a|awk ‘{print substr(,1,8)}’ 3.echo $a|cut -c1-8 4.expr $a : ‘\(.\\).*’ 5.echo $a|dd bs1 count8 2>/dev/null 二…...