mysql利用延迟复制恢复误删的表

(1)在主库3306中创建测试数据


(root@localhost) [(none)] create database test;
Query OK, 1 row affected (0.00 sec)
(root@localhost) [(none)] use test ;
Database changed
(root@localhost) [test] create table t1(id int primary key);
Query OK, 0 rows affected (0.02 sec)(root@localhost) [test] insert into t1 values(1),(2),(3);
Query OK, 3 rows affected (0.00 sec)
Records: 3  Duplicates: 0  Warnings: 0(root@localhost) [test] 
(root@localhost) [test] 
(root@localhost) [test] select * from t1;
+----+
| id |
+----+
|  1 |
|  2 |
|  3 |
+----+
3 rows in set (0.00 sec)

(2)在从库3307中查看数据是否同步

(root@localhost) [(none)] use test;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -ADatabase changed
(root@localhost) [test] select * from t1;
+----+
| id |
+----+
|  1 |
|  2 |
|  3 |
+----+
3 rows in set (0.00 sec)

(3)在从库开启延迟复制

(root@localhost) [test] stop slave ;
Query OK, 0 rows affected (0.00 sec)(root@localhost) [test] change master to master_delay=3600;
Query OK, 0 rows affected (0.01 sec)(root@localhost) [test] start slave ;
Query OK, 0 rows affected (0.00 sec)(root@localhost) [test] show slave status\GSlave_IO_Running: YesSlave_SQL_Running: Yes        SQL_Delay: 3600SQL_Remaining_Delay: NULL Executed_Gtid_Set: bb4b388c-e113-11ee-ba3f-fa163e8de5fc:1-3(root@localhost) [test] 

(4)在主库中新增一条记录,并删除t1表

(root@localhost) [test] insert into t1 values(4);
Query OK, 1 row affected (0.01 sec)(root@localhost) [test] drop table t1;
Query OK, 0 rows affected (0.01 sec)(root@localhost) [test] select * from t1;
ERROR 1146 (42S02): Table 'test.t1' doesn't exist

(5)在主库中查看drop操作在binlog的位置

(root@localhost) [test] show master status\G
*************************** 1. row ***************************File: mysql-bin.000001Position: 1183Binlog_Do_DB: Binlog_Ignore_DB: 
Executed_Gtid_Set: bb4b388c-e113-11ee-ba3f-fa163e8de5fc:1-5
1 row in set (0.00 sec)(root@localhost) [test] pager grep -iB 5 drop
PAGER set to 'grep -iB 5 drop'
(root@localhost) [test] show binlog events in 'mysql-bin.000001';
| mysql-bin.000001 |  815 | Query          | 4294967295 |         887 | BEGIN                                                             |
| mysql-bin.000001 |  887 | Table_map      | 4294967295 |         932 | table_id: 163 (test.t1)                                           |
| mysql-bin.000001 |  932 | Write_rows     | 4294967295 |         972 | table_id: 163 flags: STMT_END_F                                   |
| mysql-bin.000001 |  972 | Xid            | 4294967295 |        1003 | COMMIT /* xid=152786 */                                           |
| mysql-bin.000001 | 1003 | Gtid           | 4294967295 |        1068 | SET @@SESSION.GTID_NEXT= 'bb4b388c-e113-11ee-ba3f-fa163e8de5fc:5' |
| mysql-bin.000001 | 1068 | Query          | 4294967295 |        1183 | use `test`; DROP TABLE `t1` /* generated by server */             |
18 rows in set (0.00 sec)

可以看到drop操作前的一个事务的结束位点是1003

(6)将从库恢复到指定的执行位置点

start slave until SQL_BEFORE_GTIDS ='bb4b388c-e113-11ee-ba3f-fa163e8de5fc:5' ;

注:
START SLAVE UNTIL SQL_BEFORE_GTIDS会让从属SQL线程处理所有在gtid_set中首个GTID出现之前发生的事务,而START SLAVE UNTIL SQL_AFTER_GTIDS会让从属线程处理所有事务,包括那些GTID在gtid_set中找到的事务,直到每个线程都遇到一个GTID不属于该集合的事务为止。

同时也可以用

start slave until  MASTER_LOG_FILE = 'mysql-bin.000001 ', MASTER_LOG_POS = 1003 ;

(7)查看从库主从同步信息和t1表


(root@localhost) [test] show slave status\GMaster_Log_File: mysql-bin.000001Read_Master_Log_Pos: 1183Relay_Log_File: hecs-161929-relay-bin.000002Relay_Log_Pos: 667Relay_Master_Log_File: mysql-bin.000001Slave_IO_Running: YesSlave_SQL_Running: NoExec_Master_Log_Pos: 1003Relay_Log_Space: 1060Until_Condition: SQL_BEFORE_GTIDSMaster_Server_Id: 4294967295Master_UUID: bb4b388c-e113-11ee-ba3f-fa163e8de5fcMaster_Info_File: mysql.slave_master_infoSQL_Delay: 0SQL_Remaining_Delay: NULLRetrieved_Gtid_Set: bb4b388c-e113-11ee-ba3f-fa163e8de5fc:4-5Executed_Gtid_Set: bb4b388c-e113-11ee-ba3f-fa163e8de5fc:1-41 row in set (0.00 sec)(root@localhost) [test] select * from t1;
+----+
| id |
+----+
|  1 |
|  2 |
|  3 |
|  4 |
+----+
4 rows in set (0.00 sec)

此时t1 drop前的数据就已经复制过来了,可以导出t1表,导入主库
(8)在从库继续执行start slave ;可恢复正常的主从

             Slave_IO_Running: YesSlave_SQL_Running: YesRetrieved_Gtid_Set: bb4b388c-e113-11ee-ba3f-fa163e8de5fc:4-5Executed_Gtid_Set: bb4b388c-e113-11ee-ba3f-fa163e8de5fc:1-5Auto_Position: 1Replicate_Rewrite_DB: Channel_Name: Master_TLS_Version: 
1 row in set (0.00 sec)(root@localhost) [test] select * from t1;
ERROR 1146 (42S02): Table 'test.t1' doesn't exist

可以看到从库继续同步主库的下一个事务bb4b388c-e113-11ee-ba3f-fa163e8de5fc:5 t1表被drop掉了。

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

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

相关文章

计算机网络练习-计算机网络概述与性能指标

计算机网络概述 ----------------------------------------------------------------------------------------------------------------------------- 1. 计算机网络最据本的功能的是( )。 1,差错控制 Ⅱ.路由选择 Ⅲ,分布式处理 IV.传输控制 …

3.网络编程-TCP

目录 TCP 建立连接的过程是怎样的 TCP为什么是三次握手 TCP 断开连接的过程是怎样的 TCP挥手为什么需要四次 为什么TIME_WAIT等待的时间是2MSL TCP详解之滑动窗口 TCP 半连接队列和全连接队列是什么 TCP粘包,拆包是怎么发生的,如何解决 TCP是如何…

书生·浦语大模型实战营之茴香豆:搭建你的 RAG 智能助理

书生浦语大模型实战营之茴香豆:搭建你的 RAG 智能助理 RAG(Retrieval Augmented Generation)技术,通过检索与用户输入相关的信息,并结合外部知识库来生成更准确、更丰富的回答。解决 LLMs 在处理知识密集型任务时可能遇…

高项-进度管理

成本管理就是要确保项目在批准的预算内完成。 成本的类型 成本的组成 项目成本管理储备成本基准(需要经过批准才能进行变更) 成本基准应急储备工作包成本(在基准内的可以不经过批准变更) 工作包成本活动成本活动应急储备&…

物联网实战--驱动篇之(三)LoRa(sx1278)

目录 一、LoRa简介 二、sx1278模块 三、硬件抽象层 四、SX1278初始化 五、发送时间计算 六、发送模式 七、接收模式 八、总结 一、LoRa简介 LoRa在物联网传输领域有着举足轻重的地位,平时大家可能比较少听说,因为它主要还是在行业应用&#xff0…

C语言整数和小数的存储

1.整数在内存中的存储 计算机使用二进制进行存储、运算,整数在内存中存储使用的是二进制补码 1.1原码、反码、补码 整数的2进制表⽰⽅法有三种,即 原码、反码和补码 三种表⽰⽅法均有符号位和数值位两部分,符号位都是⽤0表⽰“正”&am…

鸿蒙内核源码分析 (Fork 篇) | 一次调用,两次返回

第一次看到 fork 时,说是一次调用,两次返回,当时就懵圈了,多新鲜,真的很难理解。因为这足以颠覆了以往对函数的认知, 函数调用还能这么玩,父进程调用一次,父子进程各返回一次。而且只…

机器学习贝叶斯算法是什么

参考一篇理解性文章:如何让10岁的表弟也能理解贝叶斯公式 问: 机器学习贝叶斯算法是什么,它的会被用于分类或者回归分析吗,它有什么优势? 答: 机器学习中的贝叶斯算法是一种基于贝叶斯定理的算法&#…

设计原则、设计模式、设计模式项目实战

设计原则 封装、继承、多态、抽象分别可以解决哪些编程问题 封装:也叫做信息隐藏或数据保护访问。数据 通过暴露有限的访问接口,授权外部仅能通过类提供接口访问,对内的类private私有化属性,通过封装简化操作,让用户更…

记Postman参数化

因为需要在WEB页面上处理部分数据,手动操作太慢,所以考虑使用接口方式处理,因急于使用,用Python Request的方式,写代码也来得慢,故采用Postman加外部文件参数化方式来实现。 接口请求是Post方式&#xff0c…

Healthcare医疗健康领域常见的几个单词

有几个医疗健康领域的单词总是傻傻分不清楚 inpatient,住院病人 outpatient ,门诊病人 urgentcare ,急需护理 ambulatory,非卧床病人 emergency, 急诊(比前面那个病情或者伤情更加严重) wellne…

电商平台混战之下,天猫破解品牌增长奥秘

行业共识是追上风,才有好生意,但风很多时候不会只有一个方向。 4月2日,上海,TopTalk 2024天猫超级品牌私享会举行。这个活动已举办数年,每一年天猫都会发布新一年度的品牌经营策略,只是与往年不同的是&…

YOLOv9改进策略 :原创自研 | 自研MSAM注意力,通道注意力升级,魔改CBAM

💡💡💡本文自研创新改进:MSAM(CBAM升级版):通道注意力具备多尺度性能,多分支深度卷积更好的提取多尺度特征,最后高效结合空间注意力 1)作为注意力MSAM使用; 推荐指数:五星 MSCA | 亲测在多个数据集能够实现涨点,对标CBAM。 改进1结构图如下: 《YOLOv…

linux安全加固

1.登录账号加固 /etc/login.defs 创建⽤户的默认设置⽂件 grep -Ev "^#|^$" /etc/login.defs /etc/login.defs ⽂件⽤于在创建⽤户时,对⽤户的⼀些基本属性做默认设置,例如指定⽤户 UID 和 GID 的范围,⽤户的过期时间&#xff0…

寻找排序数组中的最小值

题目描述 已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums [0,1,2,4,5,6,7] 在变化后可能得到: 若旋转 4 次,则可以得到 [4,5,6,7,0,1,2]若旋转 7 次…

【前端】CSS(引入方式+选择器+常用元素属性+盒模型+弹性布局)

文章目录 CSS一、什么是CSS二、语法规范三、引入方式1.内部样式表2.行内样式表3.外部样式 四、选择器1.选择器的种类1.基础选择器:单个选择器构成的1.标签选择器2.类选择器3.id 选择器4.通配符选择器 2.复合选择器1.后代选择器2.子选择器3.并集选择器4.伪类选择器 五…

Linux 内核优化简笔 - 高并发的系统

简介 Linux 服务器在高并发场景下,默认的内核参数无法利用现有硬件,造成软件崩溃、卡顿、性能瓶颈。 当然,修改参数只是让Linux更好软件的去利用已有的硬件资源,如果硬件资源不够也无法解决问题的。而且当硬件资源不足的时候&am…

AcWing 788. 逆序对的数量——算法基础课题解

AcWing 788. 逆序对的数量 题目描述 给定一个长度为 n 的整数数列&#xff0c;请你计算数列中的逆序对的数量。 逆序对的定义如下&#xff1a;对于数列的第 i 个和第 j 个元素&#xff0c;如果满足 i<j且 a[i]>a[j]&#xff0c;则其为一个逆序对&#xff1b;否则不是。…

vscode开发java的插件和配置

推荐插件 .vscode/extensions.json {"recommendations": ["redhat.fabric8-analytics","ms-azuretools.vscode-docker","vscjava.vscode-java-pack","eamodio.gitlens","obkoro1.korofileheader","redhat.j…

代码随想录算法训练营第三十一天|455.分发饼干、376.摆动序列、53.最大子数和

文档链接&#xff1a;https://programmercarl.com/ LeetCode455.分发饼干 题目链接&#xff1a;https://leetcode.cn/problems/assign-cookies/ 思路&#xff1a;我采用的是优先用小饼干喂小孩。 贪心&#xff1a; class Solution { public:int findContentChildren(vecto…