通过延时从库+binlog复制,恢复误操作数据

通过延迟复制与binlog恢复意外删除的数据

一、环境概述

以下是我们操作的数据库环境的详细信息:

数据库版本 实例角色 IP地址 端口
GreatSQL 8.0.32-26 主库 192.168.134.199 5725
GreatSQL 8.0.32-26 从库 192.168.134.199 5726

二、主库设置

在主库上,我们首先需要创建一个复制用户并授权:

shell> /usr/local/greatsql/bin/mysql -S /tmp/mysql5725.sock -p
greatsql> CREATE USER 'repl'@'%' IDENTIFIED BY '123';
greatsql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';

三、配置延迟从库

接下来,我们配置从库以实现延迟复制:

greatsql> CHANGE MASTER TO
    MASTER_HOST='192.168.134.199',
    MASTER_PORT=5725,
    MASTER_USER='repl',
    MASTER_PASSWORD='123',
    MASTER_AUTO_POSITION=1,
    MASTER_DELAY=7200;
greatsql> START SLAVE;
greatsql> SHOW SLAVE STATUSG

file

四、模拟主库数据表误删除

我们模拟一个误删除操作,如下:

shell> /usr/local/greatsql/bin/mysql -S /tmp/mysql5725.sock -p sysbench
greatsql> DROP TABLE sbtest2;

五、从延迟从库恢复数据至主库故障前状态

  1. 备份从库:为防止恢复过程中出现意外,我们首先使用Xtrabackup备份从库:
$ xtrabackup --defaults-file=/data1/greatsql/greatsql5726/my5726.cnf -S /tmp/greatsql5726.sock --backup --slave-info 
    --stream=xbstream --target-dir=/backup/full.xb
  1. 定位误操作的binlog:我们需要找到主库误操作所在的binlog文件,并确认其位置信息:
$ /usr/local/greatsql/bin/mysqlbinlog --no-defaults --base64-output=decode-rows -vvv ./* | grep -rli 'drop'
$ /usr/local/greatsql/bin/mysqlbinlog --no-defaults --base64-output=decode-rows -vvv mysql-bin.000002 | less

file

  1. 停止sql_thread线程:设置复制不延时,并在误操作binlog位置点停止复制:
shell> /usr/local/greatsql/bin/mysql -S /tmp/mysql5726.sock -p
greatsql> STOP SLAVE;
greatsql> CHANGE MASTER TO MASTER_DELAY = 0;
greatsql> START SLAVE IO_THREAD;
greatsql> START SLAVE SQL_THREAD UNTIL SQL_BEFORE_GTIDS='2fc5a82c-2ac3-11ee-9f7f-00163e402951:187';
greatsql> SHOW SLAVE STATUSG
  1. 等待复制停止:等待复制到达指定的停止位置点,此时sql_thread线程已停止。

file

  1. 备份误操作的表:查看从库中误操作的表,并备份以便恢复到主库:
greatsql> SHOW TABLES FROM sysbench;
greatsql> SELECT COUNT(*) FROM sysbench.sbtest2;
shell> /usr/local/greatsql/bin/mysqldump -S /tmp/mysql5726.sock --set-gtid-purged=OFF --single-transaction --master-data=2 --max-allowed-packet=32M -q sysbench sbtest2 > sbtest2.sql
  1. 恢复备份数据至主库

```sql
shell> /usr/local/greatsql/bin/mysql -S /tmp/mysql5725.sock -p -A sysbench
greatsql> SET sql_log_bin = off;
greatsql> SOURCE sbtest2.sql

文章整理自互联网,只做测试使用。发布者:Lomu,转转请注明出处:https://www.it1024doc.com/4301.html

(0)
LomuLomu
上一篇 2024 年 12 月 24 日 下午2:42
下一篇 2024 年 12 月 24 日

相关推荐

  • Python深度学习(第2版)PDF免费下载

    适读人群 :想要学习深度学习的学生、职业开发者。 流行深度学习框架Keras之父执笔,涵盖Transformer架构等进展,文字生,简单方式解释复杂概念,不用一个数学公式,利用直觉自然入门深度学习。 电子版仅供预览,下载后24小时内务必删除,支持正版,喜欢的请购买正版书籍 点击原文去下载 书籍信息 作者: [美] 弗朗索瓦·肖莱出版社: 人民邮电出版社出品方…

    2024 年 12 月 30 日
    43600
  • 手动部署前后端分离的项目到本地

    1.准备工作 使用maven打包springboot项目为.jar文件得到springboot-0.0.1-SNAPSHOT.jar 打包vue项目 npm install -g @vue/cli安装Vue CLI 在项目根目录下,运行npm run build命令来构建项目得到一个dist文件夹 将打包好的文件通过远程仓库中转至docker虚拟机 在虚拟机…

    2025 年 1 月 12 日
    64200
  • Nginx HttpHeader增加几个关键的安全选项

    在面对德勤等专业渗透测试(Pentest)的场景时,为了确保网站的安全性并顺利通过严格的安全审查,对这些安全头部配置进行精细化和专业化的调整是至关重要的。 以下是对每个选项的详细建议以及设置值的说明: 1. Strict-Transport-Security (HSTS) 这一策略确保所有通信都通过HTTPS进行,并防止降级攻击。 推荐值: add_head…

    未分类 2024 年 12 月 24 日
    51100
  • 成为百万架构师的第一课:设计模式:Spring中的设计模式

    本文原文地址 Spring5 源码分析 一·、Spring 中常用的设计模式 1.我们通常说的23种经典设计模式: 分类 设计模式 创建型 工厂方法(Factory Method)、抽象工厂模式(Abstract Facotry)、建造者模式(Builder)、原型模式(Prototype)、单例模式(Singleton) 结构型 适配器模式(Adapter…

    2025 年 1 月 6 日
    49900
  • Java中的IP协议(如果想知道Java中有关IP协议的知识,那么只看这一篇就足够了!)

    前言:在当今高度信息化的社会中,互联网已经深刻影响了人类的生活方式和交流方式,从电子邮件的收发到视频会议的举行,从社交媒体的互动到云计算的广泛应用,这一切的背后都离不开网络通信协议的支持。 ✨✨ ✨这里是秋刀鱼不做梦的BLOG ✨✨✨想要了解更多内容可以访问我的主页秋刀鱼不做梦-CSDN博客 在正式开始讲解之前,先让我们看一下本文大致的讲解内容: 目录 1.…

    未分类 2025 年 5 月 12 日
    22600

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信