首页 > 数据库 >通过延迟从库来恢复MySQL数据【转】

通过延迟从库来恢复MySQL数据【转】

时间:2023-09-01 15:55:51浏览次数:45  
标签:误操作 -- backup MySQL mysql 从库 data 延迟

在前面,我们讲了,通过创建一个临时从库,再把数据同步到误操作的前一个事务,来恢复误删除的数据,可以点击跳转

但是临时准备一套从库,会多花费很多时间,那有没有更快的办法呢?

这一篇文章,就讲一下通过延迟从库,来恢复误删除的数据。

比如平时这个从库都是延迟主库1小时,当主库出现误操作,从库直接同步到误操作前一个事务,这样从库的数据就是误操作前一刻的数据。

这样,再把数据导入到之前误操作的主库,完成恢复。

我们来开始实验。

 

1 配置延迟从库

在原实例进行全量备份

cd /data/backupxtrabackup --defaults-file=/data/mysql/conf/my.cnf -uu_xtrabackup -p'Ijnbgt@123' --backup --stream=xbstream --target-dir=./ >/data/backup/xtrabackup.xbstream

传到从库

scp xtrabackup.xbstream 192.168.12.162:/data/backup/recover

关闭从库的MySQL实例

/etc/init.d/mysql.server stop

清空目标实例数据目录和事务日志目录:

rm /data/mysql/data/* -rfrm /data/mysql/binlog/* -rf

并把全备恢复到新的 MySQL 中

cd /data/backup/recoverxbstream -x < xtrabackup.xbstreamxtrabackup --prepare --target-dir=./xtrabackup --defaults-file=/data/mysql/conf/my.cnf --copy-back --target-dir=./
chown -R mysql.mysql /data/mysql/etc/init.d/mysql.server start

 

登录从库MySQL

stop slave;reset slave;
change master tomaster_host='192.168.12.161',master_user='repl',master_password='Uid_dQc63',master_delay=3600,master_auto_position = 1;start slave;

其中,master_delay表示从库延迟的秒数。

 

2 主库写入测试数据

create database recover1;use recover1;
CREATE TABLE test_recover (id int NOT NULL AUTO_INCREMENT,a int NOT NULL,PRIMARY KEY (id)) ENGINE=InnoDB CHARSET=utf8mb4;
insert into test_recover values (1,1),(2,2);

 

3 模拟主库误操作

drop database recover1;

 

4 确定误操作的GTID

cd /data/mysql/binlogcp mysql-bin.000065 /data/backup/cd /data/backup/mysqlbinlog mysql-bin.000065 --start-datetime='2023-07-31 22:00:00'  --stop-datetime='2023-07-31 22:50:00'  --base64-output=decode-rows -v  >/data/backup/1.sql

再来查看/data/backup/1.sql这个文件,搜索drop关键字,内容如下:

 

那误操作事务的GTID就是:3e58c925-b396-11ed-9d79-000c2965ac6b:14524559。

 

5 配置同步到误操作前一个事务

从库执行

stop slaveCHANGE MASTER TO MASTER_DELAY = 0;
start slave sql_thread until sql_before_gtids='3e58c925-b396-11ed-9d79-000c2965ac6b:14524559';start slave io_thread;

也就是把从库同步到主库误操作前一个事务。

这样,数据就能恢复到误操作前一刻了。

 

6 导出误操作的数据在主库恢复

在从库备份主库误删除的库,操作如下:

mysqldump -u'root' -p --set-gtid-purged=off -B recover1 >recover1.sqlscp recover1.sql 192.168.12.161:/data/backup/

再到原来的实例,确定recover库是没有的,如果没有,则导入从库传过来的备份:

mysql -uroot -p <recover1.sql

 

7 确定数据是否恢复

再来查询误删除库recover1里表的数据:

select * from recover1.test_recover;

如果能查到(1,1),(2,2)这两行数据,说明通过延迟从库恢复数据成功。

 

转自

通过延迟从库来恢复MySQL数据
https://mp.weixin.qq.com/s/nv8rvmkKSSR6kmAYLoEkkw

标签:误操作,--,backup,MySQL,mysql,从库,data,延迟
From: https://www.cnblogs.com/paul8339/p/17672086.html

相关文章

  • Linux完全卸载MySQL(二进制包/源码 安装方式)
    测试环境说明:[root@linuxpg53~]#cat/etc/redhat-releaseCentOSLinuxrelease7.6.1810(Core)[root@linuxpg53~]#mysql--versionmysqlVer14.14Distrib5.7.30,forlinux-glibc2.12(x86_64)usingEditLinewrappermysql>status--------------mysqlVer......
  • mysql数据库运行sql:datetime(0) NULL DEFAULT NULL报错【杭州多测师_王sir】
     一、错误信息CREATETABLE`file`(`id`varchar(32)CHARACTERSETutf8mb4COLLATEutf8mb4_general_ciNOTNULLCOMMENT'文件md5',`name`varchar(128)CHARACTERSETutf8mb4COLLATEutf8mb4_general_ciNOTNULL,`create_time`datetime(0)NULLDEFA......
  • MySQL的基本概念和常见用法
    MySQL是一种流行的开源关系型数据库管理系统(RDBMS),广泛用于开发Web应用程序和管理数据。以下是MySQL的知识大纲,涵盖了MySQL的基本概念和常见用法:1.数据库基础什么是数据库?什么是关系型数据库?数据库管理系统(DBMS)的作用。MySQL的历史和发展。2.安装和配置下载和安装MySQL......
  • 软件测试|MySQL唯一约束详解
    简介MySQL唯一约束(UniqueKey)是指所有记录中字段的值不能重复出现。MySQL中的唯一约束是一种用于确保表中某列或多列的取值唯一的数据库约束。唯一约束的作用是防止表中出现重复的值,确保数据的完整性和一致性。在本文中,我们将详细介绍MySQL中唯一约束的定义、用法以及其在数据库设......
  • 软件测试|MySQL 非空约束详解
    简介MySQL中的非空约束(NOTNULLConstraint)是一种用于确保表中某列不允许为空值的数据库约束。非空约束的作用是保证特定列的数据始终包含有效值,防止在插入或更新操作时出现空值,从而维护数据的完整性和一致性。在本文中,我们将详细介绍MySQL中非空约束的定义、用法以及在数据库设计......
  • mysql快速学习
    MySQL简介MySQL是关系型数据库(即通过外键关联来建立表与表的连接)补充一下非关系数据库NoSQL:非关系型数据库,常见的有Redis、mongoDB、CouchDB、cassandra等等特点:免费,开源数据库小巧,功能齐全使用便捷可运行于Windows或Linux操作系统可适用于中小型甚至大型网站应......
  • 243.mysql 内存统计相关
    1.查看mysql是否打开了关于innodb内存相关的监控SELECT*FROMperformance_schema.setup_instrumentsWHERENAMELIKE'%memory/innodb%';2.没有打开的话开一下(自己判断:重启数据库会恢复原有设置)#updateperformance_schema.setup_instrumentssetenabled='yes'wher......
  • Oracle数据迁移MySQL的三种简单方法
    Oracle数据迁移MySQL的三种简单方法更新时间:2023年06月05日10:58:16  作者:牛牛的笔记 对于许多企业而言,迁移数据库时最大的挑战之一是如何从一个数据库平台顺利迁移到另一个平台,下面这篇文章主要给大家介绍了关于Oracle数据迁移MySQL的三种简单方法,需要的朋友可以参......
  • MySQL InnoDB 是怎么使用 B+ 树存数据的?
    这里限定MySQLInnoDB存储引擎来进行阐述,避免不必要的阅读歧义。首先通过一篇文章简要了解下B树的相关知识:你好,我是B树。B+树是在B树基础上的变种,主要区别包括:1、所有数据都存储在叶节点,其它几点作为索引存储。2、数据节点添加链指针,便于横向检索。数据是怎么......
  • mysql字符集批量修改
    修改所有数据库字符集SELECTCONCAT('ALTERDATABASE',SCHEMA_NAME,'CHARACTERSETutf8mb4COLLATEutf8mb4_bin;')as'Fanrncho'FROMinformation_schema.`SCHEMATA`WHEREDEFAULT_CHARACTER_SET_NAMERLIKE'utf8mb4'ANDSCHEMA_NAME......