Implement recovery based on PITR using dump file and binlog

模拟生产场景中需要基于某个事务点的恢复,使用存量备份与存量binlog

生成测试数据

(root@localhost) [(none)]> create database NanJing;
Query OK, 1 row affected (0.01 sec)
(root@localhost) [test]> use NanJing;
Database changed
(root@localhost) [NanJing]> create table xianlin (id int);
Query OK, 0 rows affected (0.04 sec)
创建procedure生产测试数据
(root@localhost) [NanJing]> DELIMITER $$
(root@localhost) [NanJing]> CREATE PROCEDURE InsertSampleData()-> BEGIN->     DECLARE i INT DEFAULT 1;->->     WHILE i <= 1000 DO->         INSERT INTO xianlin (id) VALUES (i);->         SET i = i + 1;->     END WHILE;-> END$$
Query OK, 0 rows affected (0.01 sec)
(root@localhost) [NanJing]> DELIMITER ;
(root@localhost) [NanJing]> CALL InsertSampleData();
Query OK, 1 row affected (2.12 sec)
(root@localhost) [NanJing]> select count(1) from xianlin;
+----------+
| count(1) |
+----------+
|     1000 |
+----------+
1 row in set (0.01 sec)步骤说明:
1.mysqldump备份集可以恢复至1000数据
2.利用binlog恢复剩余1000条数据
binlog起终点:master-data=2  ->  寻找drop之前的标号

模拟0级备份

[root@node01 ~]# mysqldump -uroot -p -S /tmp/mysql.sock -A --master-data=2 --single-transaction --max-allowed-packet=128M -R -E --triggers --set-gtid-purged=auto >/data/dumpAll_`date +%F`.sql
WARNING: --master-data is deprecated and will be removed in a future version. Use --source-data instead.
Enter password:

模拟备份之后的数据变化

(root@localhost) [NanJing]> DROP PROCEDURE InsertSampleData;
Query OK, 0 rows affected (0.00 sec)
(root@localhost) [NanJing]> DELIMITER $$
(root@localhost) [NanJing]> CREATE PROCEDURE InsertSampleData()-> BEGIN->     DECLARE i INT DEFAULT 1001;->->     WHILE i <= 2000 DO->         INSERT INTO xianlin (id) VALUES (i);->         SET i = i + 1;->     END WHILE;-> END$$
Query OK, 0 rows affected (0.00 sec)
(root@localhost) [NanJing]> DELIMITER ;
(root@localhost) [NanJing]> CALL InsertSampleData();
Query OK, 1 row affected (2.10 sec)
(root@localhost) [NanJing]> select count(1) from xianlin;
+----------+
| count(1) |
+----------+
|     2000 |
+----------+
1 row in set (0.01 sec)

模拟数据丢失

(root@localhost) [mysql]> drop database NanJing;
Query OK, 1 row affected (0.01 sec)

查看重要事务节点与binlog信息

由于我们的备份是设置记录有GTID信息与MASTER,所以可以通过dump备份来查看这两个关键信息
SET @@GLOBAL.GTID_PURGED=/*!80000 '+'*/ '4dee4290-485c-11ef-8500-000c2946a607:1-1005'; (info:备份存在1-1005事务号事务内容)
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000014', MASTER_LOG_POS=285564; (info:备份存在POSTION号285564之前内容)查看binlog内容信息,获取tail GTID
[root@node01 data]# cd 3306/log/
[root@node01 log]# ll
-rw-r-----. 1 mysql mysql      180 Jul 30 21:44 mysql-bin.000013
-rw-r-----. 1 mysql mysql   570354 Jul 31 22:03 mysql-bin.000014
-rw-r-----. 1 mysql mysql      448 Jul 31 18:29 mysql-bin.index
-rw-r--r--. 1 mysql mysql   528035 Jul 31 21:56 mysql-err.log
-rw-r-----. 1 mysql mysql  3820064 Jul 31 22:00 slow.log
(root@localhost) [(none)]> show binlog events in 'mysql-bin.000014';
| mysql-bin.000014 | 570164 | Gtid  | 51 | 570241 | SET @@SESSION.GTID_NEXT= '4dee4290-485c-11ef-8500-000c2946a607:2008'  --drop事务号为2008
| mysql-bin.000014 | 570241 | Query | 51 | 570354 | drop database NanJing /* xid=11339 */   

根据GTID导出binlog

利用mysqlbinlog工具截取上次全量备份之后的binlog
1006 - 2007
[root@node01 log]# mysqlbinlog --skip-gtids --include-gtids='4dee4290-485c-11ef-8500-000c2946a607:1006-2007' mysql-bin.000014 >/data/bin.sql
[root@node01 log]# ll /data/bin.sql
-rw-r--r--. 1 root root 751934 Jul 31 22:58 /data/bin.sql

恢复

由于恢复也会产生log所以设置sql_log_bin = 0(root@localhost) [(none)]> # set this session generate no log;
(root@localhost) [(none)]> set sql_log_bin = 0;
Query OK, 0 rows affected (0.00 sec)
(root@localhost) [(none)]> source /data/dumpAll_2030-07-31.sql
(root@localhost) [test]> show databases;
+--------------------+
| Database           |
+--------------------+
| Benjamin           |
| NanJing            |
+--------------------+
(root@localhost) [test]> use NanJing
Database changed
(root@localhost) [NanJing]> select count(1) from xianlin;
+----------+
| count(1) |
+----------+
|     1000 |
+----------+
1 row in set (0.01 sec)
(root@localhost) [test]> source /data/bin.sql
(root@localhost) [NanJing]> select count(1) from xianlin;
+----------+
| count(1) |
+----------+
|     2000 |
+----------+
1 row in set (0.01 sec)

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

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

相关文章

HTML-取消div,a等标签点击效果

一、背景当标签被设置onclick事件之后&#xff0c;在有些手机浏览器中&#xff0c;点击这些标签&#xff0c;会有点击变色效果。想要取消点击变色效果。通过为div和标签元素添加-webkit-tap-highlight-color样式属性&#xff0c;可以有效地解决这一问题二、解决方案已a标签示例…

VR 三维重建:开启沉浸式体验新时代

在科技飞速发展的今天&#xff0c;VR&#xff08;虚拟现实&#xff09;技术已经逐渐渗透到我们生活的各个领域&#xff0c;为我们带来了前所未有的沉浸式体验。而 VR 三维重建作为 VR 技术的重要应用之一&#xff0c;更是让人们能够身临其境地感受各种场景&#xff0c;无论是旅…

iTwinjs 几何 - Curve

CurvePrimitive 常用的见下 LineSegment3d直线段两点直线边、杆件、骨架LineString3d折线多点连续直线轮廓线、路径Arc3d圆弧 / 椭圆弧圆心 半径 起止角圆孔、圆角、弧段BezierCurve3d贝塞尔曲线端点 控制点平滑过渡、动画轨迹BSplineCurve3dB 样条 / NURBS控制点 节点矢…

iPhone 恢复出厂设置是否会删除所有内容?

当你的 iPhone 经常崩溃、出现黑屏死机、卡在加载屏幕上等问题时&#xff0c;你可能会考虑进行恢复出厂设置来修复它。或者在其他情况下&#xff0c;如果你要将使用多年的设备交给新主人&#xff0c;出于安全考虑&#xff0c;也需要进行恢复出厂设置。那么&#xff0c;恢复出厂…

机器学习②【字典特征提取、文本特征处理(TF-IDF)、数据标准化与归一化、特征降维】

文章目录先言一、特征工程概述二、特征提取1.字典特征提取&#xff08;特征离散化&#xff09;2.文本特征提取2.1英文文本提取2.2中文文本提取&#xff08;jieba分词器&#xff09;3.TfidfVectorizer TF-IDF文本特征词的重要程度特征提取三、数据归一化与标准化1.MinMaxScaler …

3、CC3200串口DMA

先说下CC3200存在2个16*8的fifos, 分别用于发送和接收 当fifos被disable时&#xff0c;将会作为一个1字节深度的保持寄存器&#xff0c; 所以无论fifos是开是关&#xff0c;发送和接收都绕不开fifos DMA 由于发送和接收都绕不过fifos,所以DMA也绕不开FIFOS. MAP_UARTFIFOLevelS…

从游戏NPC到手术助手:Agent AI重构多模态交互,具身智能打开AGI新大门

注&#xff1a;此文章内容均节选自充电了么创始人&#xff0c;CEO兼CTO陈敬雷老师的新书《GPT多模态大模型与AI Agent智能体》&#xff08;跟我一起学人工智能&#xff09;【陈敬雷编著】【清华大学出版社】 清华《GPT多模态大模型与AI Agent智能体》书籍配套视频课程【陈敬雷…

Lesson 29 Taxi!

Lesson 29 Taxi! taxi n.出租车 同义词:cab n.出租车 相关:taxi meter计价器 taxi stand taxi rank 出租车站 call ataxi 叫车&#xff0c;打车 例句:对不起,请问出租车站在哪里? Excuse me, do you know where the taxi rank is please? land v.着陆&#xff0c;登陆n.陆地…

怎样将allegro的brd文件转化为AD的PCB文件

由于工作需要将allegro的PCB转成ad给同事&#xff0c;在使用AD软件导入Allegro的brd格式文件时出现各种的异常报错弹窗问题&#xff0c;现分享两种将Allegro PCB文件导入到AD中的方法。一、第1种方法使用高版本的AD软件&#xff08;AD22&#xff0c;同时操作电脑需安装了Allegr…

[免费]【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts)【论文+源码+SQL脚本】

大家好&#xff0c;我是python222_小锋老师&#xff0c;看到一个不错的【NLP舆情分析】基于python微博舆情分析可视化系统(flaskpandasecharts)&#xff0c;分享下哈。 项目视频演示 【免费】【NLP舆情分析】基于python微博舆情分析可视化系统(flaskpandasecharts爬虫) Pytho…

什么是CI/CD?

CI/CD是持续集成&#xff08;Continuous Integration&#xff09;和持续交付/持续部署&#xff08;Continuous Delivery/Continuous Deployment&#xff09;的缩写&#xff1a;持续集成&#xff08;Continuous Integration, CI&#xff09;&#xff1a;CI是一种开发实践&#x…

【Linux】重生之从零开始学习运维之Mysql

一主一从主12主机准备工作mkdir -p /data/mysql/logbin chown -R mysql:mysql /data/mysql主节点mysql配置vim /etc/my.cnf.d/mysql-server.cnf server-id177 log_bin/data/mysql/logbin/mysql-bin default_authentication_pluginmysql_native_password查看效果systemctl resta…

Trust Management System (TMS)

Trust Management System &#xff08;TMS&#xff09;信托管理系统学习信托管理系统&#xff08;TMS&#xff09;是一种用于高效管理信托业务的综合平台&#xff0c;涵盖客户信息、资产配置、风险监控等功能。通过学习TMS&#xff0c;可以掌握信托产品设计、业务流程优化及合规…

Spring Boot中使用Bouncy Castle实现SM2国密算法(与前端JS加密交互)

Spring Boot中使用Bouncy Castle实现SM2国密算法&#xff08;与前端JS加密交互&#xff09;一、环境准备二、核心实现三、前后端交互流程四、关键问题解决方案五、常见问题排查六、最佳实践建议在现代Web应用中&#xff0c;数据安全传输至关重要。SM2作为我国自主设计的非对称加…

机器学习sklearn:随机森林的决策树

bg&#xff1a;对比决策树来说&#xff0c;搞多几棵树就是随机森林了rlf_1 [] rlf_2 [] for i in range(10):rfc RandomForestClassifier(n_estimators25)rfc_s cross_val_score(rfc, wine.data, wine.target, cv10).mean()rlf_1.append(rfc_s)clf DecisionTreeClassifier…

上海月赛kk

1.十六进制#include<bits/stdc.h> using namespace std;int n;int main(){cin>>n;stack<int>re;if(n<16)cout<<0;while(n){re.push(n%16);n/16;}while(!re.empty()){int xre.top();re.pop();if(x<10)cout<<x;else cout<<char(Ax-10)…

暑期算法训练.12

目录 52. 力扣1 两数之和 52.1 题目解析&#xff1a; 52.2 算法思路&#xff1a; 52.3 代码演示&#xff1a; ​编辑 52.4 总结反思&#xff1a; 53 面试题&#xff1a;判定是否互为字符重排 53.1 题目解析&#xff1a; 53.2 算法思路&#xff1a; 53.3 代码演示&…

MySQL时间处理完全指南:从存储到查询优化

时间是数据库中最活跃的数据维度之一&#xff0c;正确处理时间数据关系到系统稳定性、数据分析准确性和业务逻辑正确性。本文将深入剖析MySQL时间处理的完整知识体系。一、MySQL时间数据类型详解1. 核心时间类型对比类型存储空间范围特性时区影响DATE3字节1000-01-01~9999-12-3…

Text2SQL 智能问答系统开发-预定义模板(二)

背景 在构建一个支持多轮对话的 Text2SQL 系统过程中&#xff0c;我完成了以下关键功能&#xff1a; 已完成 基础 Text2SQL 功能实现 实现用户输入自然语言问题后&#xff0c;系统能够自动生成 SQL 并执行返回结果。用户交互优化 支持用户通过补充信息对查询进行调整&#xff0…

JavaScript 异步编程:Promise 与 async/await 详解

一、Promise 1. 什么是 Promise&#xff1f; Promise 是 JavaScript 中用于处理异步操作的对象&#xff0c;它代表一个异步操作的最终完成&#xff08;或失败&#xff09;及其结果值。 2. Promise 的三种状态 ​​Pending&#xff08;待定&#xff09;​​&#xff1a;初始状态…