湖南省新邵县建设局网站/网络广告策划案
MySQL的物理备份:
xtrabackup备份介绍:
xtrabackup优缺点:
优点:
1、备份过程快速、可靠(因为是物理备份);直接拷贝物理文件。
2、支持增量备份,更为灵活;
3、备份过程不会打断正在执行的事务;
4、能够支持压缩功能节约磁盘空间和流量;
5、自动实现备份检验;
6、还原速度快;
缺点:
1、只能对innodb表增量备份,myisam表增量备份时是全备;
2、innobackupex备份MyISAM表之前要对全库进行READ LOCK,阻塞操作,若备份是在从库上进行的话会影响主从同步,造成延迟。对innodb表备份不会阻塞读写。
xtrabackup备份原理
-
innobackupex首先会==启动==一个==xtrabackup_log后台检测的进程,实时检测mysql的==redo log==的变化,一旦发现redo有新的日志写入,立刻将日志写入到日志文件==xtrabackup_log==中。
-
==物理==拷贝==innodb的数据文件和系统表空间文件idbdata1==到对应的以默认时间戳为备份目录的地方
-
复制结束后,执行==flush table with read lock==操作进行全库锁表准备备份非InnoDB文件
-
物理复制.frm .myd .myi等非InnoDB引擎文件到备份目录
-
查看二进制日志的位置
-
解锁表unlock tables
-
==停止==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 应用这个日志。整合日志,把这些日志整合到刚才的备份的数据文件夹中。
第五步:模拟数据库故障:
删除数据目录中的所有文件。
[root@mysql-server ~]# rm -rf /mysql_3306/data/*
[root@mysql-server ~]# pkill mysqld[root@mysql-server ~]# service mysql_3306 start
Starting MySQL.Logging to '/mysql_3306/data/mysql.err'.
.. ERROR! The server quit without updating PID file (/mysql_3306/data/mysql-server.lnmp.com.pid).
这个故障模拟的比较狠的,然后测试数据库启动,无法进行启动。
第六步:快速地恢复数据库中的数据。
如果没有--default-file=/mysql_3306/my.cnf这个配置选项,innnobackupex就无法找到mysql中的数据目录。需要把my.cnf配置文件传递给innobackupex,让其自动识别到文件中的数据目录。
在执行这个命令之前,还需要将/mysql_3306/data目录进行清空。程序会检查这个文件。
然后,我们看到这个data目录中数据库文件和redo日志文件都已经恢复。
我们发现这些文件的权限都还不对。
需要更改权限。
第七步:恢复数据时记得更改/mysql_3306/data目录下的文件拥有者以及所属组权限。如果不更改权限,mysql无法启动。
[root@mysql-server ~]# chown -R mysql:mysql /mysql_3306/data[root@mysql-server ~]# ll /mysql_3306/data
total 122920
drwxr-x--- 2 mysql mysql 90 Sep 30 09:03 db_itheima
-rw-r----- 1 mysql mysql 850 Sep 30 09:03 ib_buffer_pool
-rw-r----- 1 mysql mysql 12582912 Sep 30 09:03 ibdata1
-rw-r----- 1 mysql mysql 50331648 Sep 30 09:03 ib_logfile0
-rw-r----- 1 mysql mysql 50331648 Sep 30 09:03 ib_logfile1
-rw-r----- 1 mysql mysql 12582912 Sep 30 09:03 ibtmp1
drwxr-x--- 2 mysql mysql 4096 Sep 30 09:03 mysql
drwxr-x--- 2 mysql mysql 8192 Sep 30 09:03 performance_schema
drwxr-x--- 2 mysql mysql 8192 Sep 30 09:03 sys
-rw-r----- 1 mysql mysql 19 Sep 30 09:03 xtrabackup_binlog_pos_innodb
-rw-r----- 1 mysql mysql 471 Sep 30 09:03 xtrabackup_info
第八步:启动mysql,测试其是否正常。
[root@mysql-server ~]# service mysql_3306 start
Starting MySQL.Logging to '/mysql_3306/data/mysql.err'.
. SUCCESS!mysql> select * from t1;
+------+--------+
| id | name |
+------+--------+
| 1 | 吕布 |
+------+--------+
1 row in set (0.00 sec)mysql> select * from t2;
+------+--------+
| id | name |
+------+--------+
| 1 | 貂蝉 |
+------+--------+
1 row in set (0.00 sec)
相关文章:

MySQL学习笔记24
MySQL的物理备份: xtrabackup备份介绍: xtrabackup优缺点: 优点: 1、备份过程快速、可靠(因为是物理备份);直接拷贝物理文件。 2、支持增量备份,更为灵活; 3、备份…...

objective-c 基础学习
目录 第一节:OC 介绍 第二节:Fundation 框架 第三节:NSLog 相对于print 的增强 第四节:NSString 第五节:oc新增数据类型 第六节: 类和对象 类的方法的声明与实现 第七节:类…...

【精彩回顾】 用sCrypt在Bitcoin上构建智能合约
2023年3月24日,sCrypt在英国Exeter大学举办了关于智能合约的大学讲学。sCrypt首席执行官刘晓晖做了题为“用sCrypt在Bitcoin上构建智能合约”的演讲,并与到场的老师、学生进行了深入交流、互动。这次课程着重讲解了 BSV 智能合约的基础概念,以…...

Kotlin 使用泛型
在 Kotlin 中,我们可以使用泛型(Generics)来编写具有通用性的代码,以增强代码的可重用性和类型安全性。通过使用泛型,我们可以在不指定具体类型的情况下编写适用于多种类型的函数和类。 以下是 Kotlin 中使用泛型的几…...

深度学习 二:COVID 19 Cases Prediction (Regression)
Deep Learning 1. 回归算法思路2. 代码2.1 基础操作2.2 定义相关函数2.3.1 定义图像绘制函数2.3.2 数据集加载及预处理2.3.3 构造数据加载器2.3.4 构建前馈神经网络(Feedforward Neural Network)模型2.3.5 神经网络的训练过程2.3.6 模型评估2.3.7 模型测…...

UG\NX二次开发 信息窗口的4种输出方式 NXOpen::ListingWindow::DeviceType
文章作者:里海 来源网站:《里海NX二次开发3000例专栏》 简介 UG\NX二次开发 信息窗口的4种输出方式 NXOpen::ListingWindow::DeviceType 信息窗口的输出类型 enum NXOpen::ListingWindow::DeviceType 枚举值描述 DeviceTypeWindow0输出将写入“信息”窗口DeviceTypeFile1输出…...

mavn打包时如何把外部依赖加进去?
一、添加依赖: <dependency><groupId>com.dm</groupId><artifactId>DmJdbcDriver</artifactId><version>18</version><scope>system</scope><systemPath>${project.basedir}/lib/DmJdbcDriver18.jar</systemP…...

爬虫代理请求转换selenium添加带有账密的socks5代理
爬虫代理请求转换selenium添加带有账密的socks5代理。 一、安装三方库 二、使用方法 1、在cmd命令行输入: 2、给selenium添加代理 最近因为工作需要,需要selenium添加带有账密的socks5代理,贴出一个可用的方法。 把带有账密的socks5代理&am…...

Redis 如何实现数据不丢失的?
Redis 实现数据不丢失的关键在于使用了多种持久化机制,以确保数据在内存和磁盘之间的持久性。以下是 Redis 实现数据不丢失的主要方法: 快照(Snapshot)持久化: Redis 使用快照持久化来定期将内存中的数据写入磁盘。快照是一个数据库状态的副本,包含了所有键和与其相关联的…...

[高等数学]同济版高等数学【第七版】上下册教材+习题全解PDF
laiyuan 「高等数学 第7版 同济大学」 https://www.aliyundrive.com/s/5fpFJb3asYk 提取码: 61ao 通过百度网盘分享的文件:同济版高数教材及… 链接:https://pan.baidu.com/s/1gyy-GMGjwguAjYijrpC8RA?pwdyhnr 提取码:yhnr 高等数学相关: The Ca…...

【面试题精讲】Java超过long类型的数据如何表示
有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top 首发博客地址[1] 面试题手册[2] 系列文章地址[3] 在 Java 中,如果需要表示超过 long 类型范围的数据,可以使用 BigInteger 类…...

Shapiro-Wilk正态性检验(Shapiro和Wilk于1965年提出)
Shapiro-Wilk正态性检验是一种用于确定数据集是否服从正态分布的统计方法。它基于Shapiro和Wilk于1965年提出的检验统计量。以下是其基本原理和用途: 基本原理: 零假设(Null Hypothesis):Shapiro-Wilk检验的零假设是数…...

debian设置允许ssh连接
解决新debian系统安装后不能通过ssh连接的问题。 默认情况下,Debian系统不开启SSH远程登录,需要手动安装SSH软件包并设置开机启动。 > 设置允许root登录传送门:debian设置允许root登录 首先检查/etc/ssh/sshd_config文件是否存在。 注意…...

【C语言经典100例题-66】(用指针解决)输入3个数a,b,c,按大小顺序输出。
代码: #include<stdio.h> #define _CRT_SECURE_NO_WARNINGS 1//VS编译器使用scanf函数时会报错,所以添加宏定义 swap(p1, p2) int* p1, * p2; {int p;p *p1;*p1 *p2;*p2 p; } int main() {int n1, n2, n3;int* pointer1, * pointer2, * point…...

【STM32 CubeMX】移植u8g2(一次成功)
文章目录 前言一、下载u8g2源文件二、复制和更改文件2.1 复制文件2.2 修改文件u8g2_d_setup文件u8g2_d_memory 三、编写oled.c和oled.h文件3.1 CubeMX配置I2C3.2 编写文件oled.holed.c 四、测试代码main函数测试代码 总结 前言 在本文中,我们将介绍如何在STM32上成…...

华为云智能化组装式交付方案 ——金融级PaaS业务洞察及Web3实践的卓越贡献
伴随信息技术与金融业务加速的融合,企业应用服务平台(PaaS)已从幕后走向台前,成为推动行业数字化转型的关键力量。此背景下,华为云PaaS智能化组装式交付方案闪耀全场,在近日结束的华为全联接大会 2023上倍受…...

Halcon Image相关算子(二)
(1) dyn_threshold(OrigImage, ThresholdImage : RegionDynThresh : Offset, LightDark : ) 功能:从输入图像中选择像素满足阈值条件的那些区域。 图形输入参数:OrigImage:原始图像; 图形输入参数:ThresholdImage&a…...

Rust 多线程编程
一个进程一定有一个主线程,主线程之外创建出来的线程称为子线程 多线程编程,其实就是在主线程之外创建子线程,让子线程和主线程并发运行,完成各自的任务。 Rust语言支持多线程编程。 Rust语言标准库中的 std::thread 模块用于多线…...

JavaScript高阶班之ES6 → ES11(八)
JavaScript高阶班之ES6 → ES11 1、ES6新特性1.1、let 关键字1.2、const关键字1.3、变量的解构赋值1.3.1、数组的解构赋值1.3.2、对象的解构赋值 1.4、模板字符串1.5、简化对象写法1.6、箭头函数1.7、函数参数默认值1.8、rest参数1.9、spread扩展运算符1.9.1、数组合并1.9.2、数…...

网页中嵌套网页制作方法
<!DOCTYPE html> <html> <head> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <meta charset"UTF-8"> <title>网页搜索</title> <style> body { ba…...

系统集成项目管理总结(笔记)
系统集成项目管理总结 基础知识 第一章 信息化知识 第二章 信息系统服务管理 第三章 系统集成专业技术 第四章 项目管理一般知识 第五章 立项管理 第六章 整体管理 第七章 范围管理 第八章 进度管理 第九章 成本管理 第十章 质量管理 第十一章 人力资源管理 第十二…...

如何给Nginx配置访问IP白名单
一、Nginx配置访问IP白名单 有时部署的应用需要只允许某些特定的IP能够访问,其他IP不允许访问,这时,就要设置访问白名单; 设置访问白名单有多种方式: 1.通过网络防火墙配置,例如阿里云/华为云管理平台 2.…...

【VIM】VIM配合使用的工具
6-1 课程总结-vim虐我千百遍,我待 vim 如初恋_哔哩哔哩_bilibili...

git你学“废”了吗?——git本地仓库的创建
git你学“废”了吗?——git本地仓库的创建😎 前言🙌初识gitgit 本地仓库的创建1、基于centos7环境下 git的下载2、设置自己的用户名和邮箱 查看.git中的结构区分清楚版本库和工作区 查看git中的相关内容查看仓库的状态 总结撒花💞…...

AWS Lambda Golang HelloWorld 快速入门
操作步骤 以下测试基于 WSL2 Ubuntu 22.04 环境 # 下载最新 golang wget https://golang.google.cn/dl/go1.21.1.linux-amd64.tar.gz# 解压 tar -C ~/.local/ -xzf go1.21.1.linux-amd64.tar.gz# 配置环境变量 PATH echo export PATH$PATH:~/.local/go/bin >> ~/.bashrc …...

【C++】单例模式
文章目录 一. 介绍二. 饿汉模式三. 懒汉模式四. 饿汉模式和懒汉模式对比 一. 介绍 单例模式是属于设计模式的一种,那什么是设计模式呢? 设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总…...

【kubernetes】使用luakube访问kubernetes api
文章目录 1 kubernetes client2 luakube初体验3 luakube代码分析4 luakube包的调用5 lua相关5.1 self5.2 metatable5.2.1 使用metatable对table新增操作符5.2.2 使用metatable对table新增方法5.2.3 再探luakube 6 参考文档 1 kubernetes client 客户端列出了各种语言对应的访问…...

【算法分析与设计】贪心算法(下)
目录 一、单源最短路径1.1 算法基本思想1.2 算法设计思想1.3 算法的正确性和计算复杂性1.4 归纳证明思路1.5 归纳步骤证明 二、最小生成树2.1 最小生成树性质2.1.1 生成树的性质2.1.2 生成树性质的应用 2.2 Prim算法2.2.1 正确性证明2.2.2 归纳基础2.2.3 归纳步骤2.3 Kruskal算…...

Arm Cache学习资料大汇总
关键词:cache学习、mmu学习、cache资料、mmu资料、arm资料、armv8资料、armv9资料、 trustzone视频、tee视频、ATF视频、secureboot视频、安全启动视频、selinux视频,cache视频、mmu视频,armv8视频、armv9视频、FF-A视频、密码学视频、RME/CC…...

Docker 学习总结(79)—— Dockerfile 编写技巧总结
目标 更快的构建速度 更小的 Docker 镜像大小 更少的 Docker 镜像层 充分利用镜像缓存 增加 Dockerfile 可读性 让 Docker 容器使用起来更简单 总结 编写 .dockerignore 文件 容器只运行单个应用 将多个 RUN 指令合并为一个 基础镜像的标签不要用 latest 每个 RUN 指令后删除多…...