第93讲:MySQL主从复制集群延时从库的核心概念以及使用

本文主要是介绍第93讲:MySQL主从复制集群延时从库的核心概念以及使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 1.延时从库的概念
    • 2.配置从库延时
    • 3.模拟主库误删除使用延时从库恢复数据
      • 3.1.模拟主库误删除操作
      • 3.2.利用从库延时恢复主库误删除的数据

1.延时从库的概念

延时从库和主从延时是两个概念,延时从库指的是认为手动配置一个从库延时复制主库的时间,当主库有新数据产生后,从而经过xxx时间后再进行复制同步。

可以通过延时从库,当主库有误删除操作时,由于从库配置了延时从库,可以避免误删除的指令也在从库中执行,我们可以利用从库去还原数据。

在企业生产环境中,延时从库的时间一般都在3~6小时左右。要有足够的延时事件供运维去排查问题。

2.配置从库延时

设置从库延时事件为300秒。

mysql> stop slave;
mysql> change master to master_delay = 300;
mysql> start slave;

image-20220708145738282

3.模拟主库误删除使用延时从库恢复数据

模拟主库误删除使用延时从库恢复数据的思路:

  • 首先配置好延时从库的时间。
  • 然后模拟主库误删除故障。
  • 迅速反应到主库误删除了,然后利用延时从库的时间,去恢复误删的数据:
    • 首先停止从库的SQL线程,停止主库业务,避免新数据再写入。
    • 模拟SQL线程,截取relaylog中误删除时的日志数据。
    • 然后手动恢复截取的Binlog日志,验证数据的可用性。

3.1.模拟主库误删除操作

在主库中执行下面的SQL,创建一个数据库,创建一个表,写入几条数据,然后删除数据库。

mysql> create database db_test;
mysql> use db_test;
create table t1(id int);
insert into t1 values (1),(2),(3);
drop database db_test;

一系列操作完成后,主库的数据被误删除,在从库的状态中,我们可以看到还有277秒从库就会将主库的操作同步过来。

image-20220708153140513

3.2.利用从库延时恢复主库误删除的数据

在还有277秒就要将主库操作同步到从库时,我们发现了主库的误操作行为,为了防止将从库的数据也误删除,我们决定先停止掉从库的SQL线程,然后通过从库延时还未执行的主库传来的Binlog日志,恢复主库误删除的数据。

1)停止从库的SQL线程

mysql> stop slave sql_thread;

2)截取从库未执行的Relaylog日志

延时从库指的是经过一段时间后,再执行主库传输的Binlog,主库传输的Binlog会写入到Relaylog中,我们要截取主库误删除操作之前的Binlog,通过Binlog去还原主库误删除的数据。

1.获取截取Relaylog日志的起点
#通过查看从库的状态就可以看-2到上次执行的Relay log位置号,这个号就可以作为Relay Log截取的起点。
mysql> show slave status\G;Relay_Log_File: mysql-2-relay-bin.000004Relay_Log_Pos: 360
#起点为3602.获取截取Relaylog日志的终点
#relaylog记录的就是Binlog日志,也有专门看relaylog中事件标识位的命令
mysql> show relaylog events in 'mysql-2-relay-bin.000004';
#找到删除操作的标识位号,终点为1055

Relaylog事件中,End_log_pos一列不需要关注,这一列记录的是主库Binlog中该事件对应的Position号。

image-20220708155224259

3.截取日志
[root@mysql-2 ~]# mysqlbinlog --start-position=360 --stop-position=1055 /data/mysql3307/mysql-2-relay-bin.000004 > wsc.sql4.将截取的Binlog传输到主库中还原数据
[root@mysql-2 ~]# scp -rp wsc.sql root@192.168.20.11:/root
mysql> source /root/wsc.sql5.启动从库SQL线程
mysql> start slave;6.数据还原成功并且也复制到了从库

image-20220708160334910

这篇关于第93讲:MySQL主从复制集群延时从库的核心概念以及使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/657432

相关文章

Java中流式并行操作parallelStream的原理和使用方法

《Java中流式并行操作parallelStream的原理和使用方法》本文详细介绍了Java中的并行流(parallelStream)的原理、正确使用方法以及在实际业务中的应用案例,并指出在使用并行流... 目录Java中流式并行操作parallelStream0. 问题的产生1. 什么是parallelS

MySQL数据库双机热备的配置方法详解

《MySQL数据库双机热备的配置方法详解》在企业级应用中,数据库的高可用性和数据的安全性是至关重要的,MySQL作为最流行的开源关系型数据库管理系统之一,提供了多种方式来实现高可用性,其中双机热备(M... 目录1. 环境准备1.1 安装mysql1.2 配置MySQL1.2.1 主服务器配置1.2.2 从

Linux join命令的使用及说明

《Linuxjoin命令的使用及说明》`join`命令用于在Linux中按字段将两个文件进行连接,类似于SQL的JOIN,它需要两个文件按用于匹配的字段排序,并且第一个文件的换行符必须是LF,`jo... 目录一. 基本语法二. 数据准备三. 指定文件的连接key四.-a输出指定文件的所有行五.-o指定输出

Linux jq命令的使用解读

《Linuxjq命令的使用解读》jq是一个强大的命令行工具,用于处理JSON数据,它可以用来查看、过滤、修改、格式化JSON数据,通过使用各种选项和过滤器,可以实现复杂的JSON处理任务... 目录一. 简介二. 选项2.1.2.2-c2.3-r2.4-R三. 字段提取3.1 普通字段3.2 数组字段四.

Linux kill正在执行的后台任务 kill进程组使用详解

《Linuxkill正在执行的后台任务kill进程组使用详解》文章介绍了两个脚本的功能和区别,以及执行这些脚本时遇到的进程管理问题,通过查看进程树、使用`kill`命令和`lsof`命令,分析了子... 目录零. 用到的命令一. 待执行的脚本二. 执行含子进程的脚本,并kill2.1 进程查看2.2 遇到的

Java AOP面向切面编程的概念和实现方式

《JavaAOP面向切面编程的概念和实现方式》AOP是面向切面编程,通过动态代理将横切关注点(如日志、事务)与核心业务逻辑分离,提升代码复用性和可维护性,本文给大家介绍JavaAOP面向切面编程的概... 目录一、AOP 是什么?二、AOP 的核心概念与实现方式核心概念实现方式三、Spring AOP 的关

详解SpringBoot+Ehcache使用示例

《详解SpringBoot+Ehcache使用示例》本文介绍了SpringBoot中配置Ehcache、自定义get/set方式,并实际使用缓存的过程,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录摘要概念内存与磁盘持久化存储:配置灵活性:编码示例引入依赖:配置ehcache.XML文件:配置

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三

k8s按需创建PV和使用PVC详解

《k8s按需创建PV和使用PVC详解》Kubernetes中,PV和PVC用于管理持久存储,StorageClass实现动态PV分配,PVC声明存储需求并绑定PV,通过kubectl验证状态,注意回收... 目录1.按需创建 PV(使用 StorageClass)创建 StorageClass2.创建 PV

Redis 基本数据类型和使用详解

《Redis基本数据类型和使用详解》String是Redis最基本的数据类型,一个键对应一个值,它的功能十分强大,可以存储字符串、整数、浮点数等多种数据格式,本文给大家介绍Redis基本数据类型和... 目录一、Redis 入门介绍二、Redis 的五大基本数据类型2.1 String 类型2.2 Hash