MySQL学习笔记24

MySQL的物理备份:

xtrabackup备份介绍:

xtrabackup优缺点:

优点:

1、备份过程快速、可靠(因为是物理备份);直接拷贝物理文件。

2、支持增量备份,更为灵活;

3、备份过程不会打断正在执行的事务

4、能够支持压缩功能节约磁盘空间和流量;

5、自动实现备份检验

6、还原速度快;

缺点:

1、只能对innodb表增量备份,myisam表增量备份时是全备;

2、innobackupex备份MyISAM表之前要对全库进行READ LOCK,阻塞操作,若备份是在从库上进行的话会影响主从同步,造成延迟。对innodb表备份不会阻塞读写。

xtrabackup备份原理

  1. innobackupex首先会==启动==一个==xtrabackup_log后台检测的进程,实时检测mysql的==redo log==的变化,一旦发现redo有新的日志写入,立刻将日志写入到日志文件==xtrabackup_log==中。

  2. ==物理==拷贝==innodb的数据文件和系统表空间文件idbdata1==到对应的以默认时间戳为备份目录的地方

  3. 复制结束后,执行==flush table with read lock==操作进行全库锁表准备备份非InnoDB文件

  4. 物理复制.frm .myd .myi等非InnoDB引擎文件到备份目录

  5. 查看二进制日志的位置

  6. 解锁表unlock tables

  7. ==停止==xtrabackup_log进程

innodb引擎,如果对数据进行了增删修操作,那么这个日志发生了变化。就把获取的内容写到xtrabackup log中。

innodb的数据文件就是.frm和idb两个数据文件。系统表空间文件就是ibdata1文件。

innodb的数据备份好了之后,那还有一些MyISAM引擎的文件也需要进行处理。那这个时候就要进行flush table with read lock操作。

然后开始复制.frm .myd .myi这些MyISAM文件。

然后还要查看二进制文件的位置。--master-data。备份二进制文件。

然后要解锁unlock tables。

最后再把xtrabackup log进程停止掉。

 

redo log日志:

 

 

事务日志或称redo日志。在mysql中默认以ib_logfile0, ib_logfile1的名称存在。

 

xtrabackup备份恢复原理: 

说明:就是开始备份,将之前的数据进行备份。那么备份期间这段时间产生的新数据也进行下备份,这样才是一个完整的备份。这是这个软件高级的地方。

具体文字描述如下(了解):

  • 在InnoDB内部会维护一个redo日志文件,我们也可以叫做事务日志文件。事务日志会存储每一个InnoDB表数据的记录修改。当InnoDB启动时,InnoDB会检查数据文件和事务日志,并执行两个步骤:它应用(前滚)已经提交的事务日志到数据文件,并将修改过但没有提交的数据进行回滚操作。

  • xtrabackup在启动时会记住log sequence number(LSN),并且复制所有的数据文件。复制过程需要一些时间,所以这期间如果数据文件有改动,那么将会使数据库处于一个不同的时间点。这时,xtrabackup会运行一个后台进程,用于监视事务日志,并从事务日志复制最新的修改。xtrabackup必须持续的做这个操作,是因为事务日志是会轮转重复的写入,并且事务日志可以被重用。所以xtrabackup自启动开始,就不停的将事务日志中每个数据文件的修改都记录下来。

  • 上面就是xtrabackup的备份过程。接下来是准备(prepare)过程。在这个过程中,xtrabackup使用之前复制的事务日志,对各个数据文件执行灾难恢复(就像MySQL刚启动时要做的一样)。当这个过程结束后,数据库就可以做恢复还原了。

  • 以上的过程在xtrabackup的编译二进制程序中实现。程序innobackupex可以允许我们备份MyISAM表和frm文件从而增加了便捷和功能。Innobackupex会启动xtrabackup,直到xtrabackup复制数据文件后,然后执行FLUSH TABLES WITH READ LOCK来阻止新的写入进来并把MyISAM表数据刷到硬盘上,之后复制MyISAM数据文件,最后释放锁。

  • 备份MyISAM和InnoDB表最终会处于一致,在准备(prepare)过程结束后,InnoDB表数据已经前滚到整个备份结束的点,而不是回滚到xtrabackup刚开始时的点。这个时间点与执行FLUSH TABLES WITH READ LOCK的时间点相同,所以MyISAM表数据与InnoDB表数据是同步的。类似Oracle的recover和restore,InnoDB的prepare过程可以称为recover(恢复),MyISAM的数据复制过程可以称为restore(还原)。

  • ==Mysql5.7.3以后开启二进制日志需要加上server-id选项,不然报错==

获取xtrabackup备份工具:

我这边还是使用老师提供的版本:

依赖库和软件包。

xtrabackup软件的安装:

第一步:上传软件包和依赖库:

第二步:安装软件包:

[root@mysql-server ~]# rpm -ivh libev-4.15-3.el7.x86_64.rpm
warning: libev-4.15-3.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 352c64e5: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...1:libev-4.15-3.el7                 ################################# [100%]
[root@mysql-server ~]# rpm -ivh percona-xtrabackup-24-2.4.7-2.el7.x86_64.rpm
warning: percona-xtrabackup-24-2.4.7-2.el7.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID cd2efd2a: NOKEY
error: Failed dependencies:perl(DBD::mysql) is needed by percona-xtrabackup-24-2.4.7-2.el7.x86_64perl(Digest::MD5) is needed by percona-xtrabackup-24-2.4.7-2.el7.x86_64

 出现这个问题。

那么,我们可以直接使用yum来进行安装,解决依赖的问题。

[root@mysql-server ~]# rpm -ql percona-xtrabackup-24
/usr/bin/innobackupex
/usr/bin/xbcloud
/usr/bin/xbcloud_osenv
/usr/bin/xbcrypt
/usr/bin/xbstream
/usr/bin/xtrabackup
/usr/share/doc/percona-xtrabackup-24-2.4.7
/usr/share/doc/percona-xtrabackup-24-2.4.7/COPYING
/usr/share/man/man1/innobackupex.1.gz
/usr/share/man/man1/xbcrypt.1.gz
/usr/share/man/man1/xbstream.1.gz
/usr/share/man/man1/xtrabackup.1.gz

 innobackupex和xtrabackup是两个核心的工具。

xtrabackup全库备份与恢复:

备份核心思路:

1)使用innobackupex对数据库中的所有库进行全量备份(物理文件拷贝),备份完成之后,其不能立即进行数据恢复。(数据不完整,还缺少12:00~12:30这个过程中的数据。)

2)预备阶段,备份过程中产生的xtrabackup log应用到全量备份集。整合到全量备份集中。

3)模拟故障(删除数据) rm -rf data/*

4)动员运维工程师进行全库恢复。

5)再测试验证。

第一步:准备数据:

mysql> create database db_itheima default charset=utf8;
Query OK, 1 row affected (0.00 sec)mysql>
mysql> use db_itheima;
Database changed
mysql>
mysql> create table t1(-> id int,-> name varchar(10)-> )engine=myisam;
Query OK, 0 rows affected (0.00 sec)mysql> insert into t1 values(1, '吕布');
Query OK, 1 row affected (0.00 sec)mysql>
mysql> create table t2(-> id int,-> name varchar(10)-> )engine=innodb;
Query OK, 0 rows affected (0.02 sec)mysql>
mysql> insert into t2 values(1, '貂蝉');
Query OK, 1 row affected (0.00 sec)

第二步:专门准备一个数据库备份账号,开通相应权限。

创建备份用户admin,并授予相应权限
mysql> grant reload,process,lock tables,replication client on *.* to 'admin'@'localhost' identified by '123';
mysql> flush privileges;说明:
在数据库中需要以下权限:
RELOAD和LOCK TABLES权限:为了执行FLUSH TABLES WITH READ LOCK
REPLICATION CLIENT权限:为了获取binary log位置
PROCESS权限:显示有关在服务器中执行的线程的信息(即有关会话执行的语句的信息),允许使用SHOW ENGINE
mysql> grant reload,lock tables,process,replication client on *.* to 'admin'@'localhost' identified by '123';
Query OK, 0 rows affected, 1 warning (0.00 sec)mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

第三步:使用innobackupex工具进行全库备份。

把数据导出备份到/full_xtrabackup目录。

遇到这个错误,不能连接到/var/lib/mysql/mysql.sock。

目前,我们的mysql.sock是在/tmp/mysql.sock这个地方。我们有两种方法来解决:

1)软链接;

2)-S /tmp/mysql.sock。

第四步:预备阶段,把备份这段时间内产生的日志整合到全量备份中。

[root@mysql-server ~]# cd /full_xtrabackup/
[root@mysql-server full_xtrabackup]# ll
total 0
drwxr-x--- 2 root root   6 Sep 29 18:50 2023-09-29_18-50-24
drwxr-x--- 6 root root 241 Sep 29 18:52 2023-09-29_18-52-20
[root@mysql-server full_xtrabackup]#
[root@mysql-server full_xtrabackup]# innobackupex --user=admin --password=123 --apply-log /full_xtrabackup/2023-09-29_18-52-20

--apply-log  应用这个日志。

第五步:模拟数据故障:

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

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

相关文章

第十四届蓝桥杯大赛软件赛决赛 C/C++ 大学 B 组 试题 C: 班级活动

[蓝桥杯 2023 国 B] 班级活动 【问题描述】 小明的老师准备组织一次班级活动。班上一共有 n n n 名( n n n 为偶数)同学,老师想把所有的同学进行分组,每两名同学一组。为了公平,老师给每名同学随机分配了一个 n n …

Eclipse环境基于HDFS的API进行开发

文章目录 IOUtils方式读取文件1.文件准备2.下载安装Eclipse3.打开eclipse,新建java项目,添加关于hadoop的一些包4.包内新建类进行开发5.利用打包的方式生成java jar包6.验证代码正确性 其它问题:Exception in thread “main“ java.lang.Unsu…

【前端】ECMAScript6从入门到进阶

【前端】ECMAScript6从入门到进阶 1.ES6简介及环境搭建 1.1.ECMAScript 6简介 (1)ECMAScript 6是什么 ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在2015年6月正式发布了。它的目标&#xff…

基于微信小程序的刷题考试系统设计与实现(适用于各类考试类、答题类程序)

文章目录 前言系统主要功能:具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计…

【IDEA】使用idea调试时查看对象集合的值

1、在实体类上添加toString方法 2、在要查看集合的地方右键View as→toString 3、View Text复制对象集合的值 4、复制map集合的值同理

[杂谈]-ESP32中的无线通信协议

ESP32中的无线通信协议 文章目录 ESP32中的无线通信协议1、ESP32 无线通信协议简介2、Bluetooth Low Energy (BLE)3、**Bluetooth Classic**4、**ESP-NOW**5、Wi-Fi(客户端-服务器通信协议)6、MQTT7、**LoRa**8、**GSM/GPRS/LTE**9、总结 ESP32是一个基于…

如何使用ArcGIS Pro直接获取道路中心线

以前使用ArcGIS获取道路中心线,需要先将面要素转换为栅格再获取中心线,现在我们可以通过ArcGIS Pro直接获取道路中心线,这里为大家介绍一下获取方法,希望能对你有所帮助。 新建地理数据库 在存储数据的文件夹上点击右键&#xff…

专栏更新情况:华为流程、产品经理、战略管理、IPD

目录 前言 01 华为流程体系入门课 CSDN学院 02 产品经理进阶课 CSDN学院 03 BLM 战略方法论进阶课 04 IPD 进阶 100 例专栏 作者简介 前言 已上线四大课程专栏更新情况: 01 华为流程体系入门课(视频图文); 02 硬件产品经…

Linux文件查找,别名,用户组综合练习

1.文件查看: 查看/etc/passwd文件的第5行 [rootserver ~]# head -5 /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologi…

使用YOLOv5的backbone网络识别图像天气 - P9

目录 环境步骤环境设置包引用声明一个全局的设备 数据准备收集数据集信息构建数据集在数据集中读取分类名称划分训练、测试数据集数据集划分批次 模型设计编写维持卷积前后图像大小不变的padding计算函数编写YOLOv5中使用的卷积模块编写YOLOv5中使用的Bottleneck模块编写YOLOv5…

信息安全:网络物理隔离技术原理与应用.

信息安全:网络物理隔离技术原理与应用. 随着网络攻击技术不断增强,恶意入侵内部网络的风险性也相应急剧提高。满足内外网信息及数据交换需求,又能防止网络安全事件出现的安全技术就应运而生了,这种技术称为“物理隔离技术” 基本原…

企业工程项目管理系统源码(三控:进度组织、质量安全、预算资金成本、二平台:招采、设计管理)

工程项目管理软件(工程项目管理系统)对建设工程项目管理组织建设、项目策划决策、规划设计、施工建设到竣工交付、总结评估、运维运营,全过程、全方位的对项目进行综合管理 工程项目各模块及其功能点清单 一、系统管理 1、数据字典&am…

照片后期处理软件DxO FilmPack 6 mac中文说明

DxO FilmPack 6 for Mac是一款照片后期处理软件。它可以模拟超过60种著名胶片品牌和类型的色彩和颗粒感,使照片具有复古、艺术和时尚风格。 ​DxO FilmPack 6 mac支持RAW和JPG格式的照片,并提供丰富的调整选项,如亮度、对比度、曝光、阴影和高…

web:[极客大挑战 2019]Upload

题目 页面显示为一个上传&#xff0c;猜测上传一句话木马文件 先查看源代码看一下有没有有用的信息&#xff0c;说明要先上传图片&#xff0c;先尝试上传含有一句话木马的图片 构造payload <?php eval($_POST[123]);?> 上传后页面显示为&#xff0c;不能包含<&…

MySQL 索引介绍和最佳实践

目录 一、前言二、索引类型1.1 主键索引&#xff08;PRIMARY KEY&#xff09;1.2 唯一索引&#xff08;UNIQUE&#xff09;1.3 普通索引&#xff08;NORMAL&#xff09;1.3.1 单列普通索引1.3.2 单列前缀普通索引1.3.3 多列普通索引1.3.4 多列前缀普通索引 1.4 空间索引&#x…

微信小程序开发基础(一)认识小程序

微信小程序&#xff0c;小程序的一种&#xff0c;英文名Wechat Mini Program&#xff0c;是一种不需要下载安装即可使用的应用&#xff0c;它实现了应用“触手可及”的梦想&#xff0c;用户扫一扫或搜一下即可打开应用。微信小程序是一种不用下载就能使用的应用&#xff0c;也是…

React(react18)中组件通信06——redux-toolkit + react-redux

React&#xff08;react18&#xff09;中组件通信06——redux-toolkit react-redux 1 前言1.1 redux 和 react-redux1.2 关于redux-toolkit1.2.1 官网1.2.2 为什么要用Redux Toolkit&#xff1f; 1.3 安装 Redux Toolkit1.4 Redux Toolkit相关API 2. 开始例子——官网例子2.1 …

更直观地学习 Git 命令

theme: condensed-night-purple 前言 本文参考于 Learn Git Branching 这个有趣的 Git 学习网站。 在该网站&#xff0c;可以使用 show command 命令展示所有可用命令。 你也可以直接访问网站的sandbox&#xff0c;自由发挥。 本地篇 基础篇 git commit git commit将暂…

文件I/O与标准I/O

如果不知道inode&#xff0c;请看这篇文章inode 我们知道当打开一个文件时&#xff0c;OS会先使用inode编号在磁盘文件系统里面去寻找这个文件&#xff0c;找到以后根据文件的属性为其创建一个内核层面的结构体来描述这个文件&#xff0c;该结构体里面含有文件的属性信息&#…

蓝桥杯 题库 简单 每日十题 day11

01 质数 质数 题目描述 给定一个正整数N&#xff0c;请你输出N以内&#xff08;不包含N&#xff09;的质数以及质数的个数。 输入描述 输入一行&#xff0c;包含一个正整数N。1≤N≤10^3 输出描述 共两行。 第1行包含若干个素数&#xff0c;每两个素数之间用一个空格隔开&…