首页 > 数据库 >mysql8.x通过备份文件及binlog日志恢复数据

mysql8.x通过备份文件及binlog日志恢复数据

时间:2024-08-23 15:26:00浏览次数:11  
标签:binlog mysql8 09 29 备份文件 还原 mysql 日志

问题简述

记一次mysql数据库被误删(是整个库被删了)后的还原

前提条件

  • 数据库版本为mysql8.x以上
  • 具有库被删除前的完整备份
  • 数据库开启binlog
  • 最近备份时间不能超过日志删除时间
#查看数据库是否开启binlog
show variables like 'log_bin';
#默认binlog存储位置
/var/lib/mysql
#查看所有binlog文件-【没啥用】
SHOW BINARY LOGS
#查看binlog日志默认保留时间-【0表示不自动删除日志文件,日志删除时间小于上一次备份时间则无法还原,比如7月6删除日志,但完整备份是7月1的】
SHOW VARIABLES LIKE 'expire_logs_days';

还原步骤

第一步:通过完整备份还原被删的库

注意事项: 还原后切勿让其他用户连接,操作数据库。待使用binlog日志恢复数据后再对库进行操作,否则可能会丢失数据

第二步:查找日志位于哪个文件

进入binlog日志所在目录,根据最近修改时间,大致判断需要还原的位置处于哪个日志文件,因为我们在每日凌晨1点有做全量备份,所以对应找到00:25到当前时间所在的那份日志mysql-bin.000335

在这里插入图片描述

第三步:查看数据被破坏时间点

通过第二步找到的binlog日志文件,我们可以将其转为SQL文件查看(PS:直接用notepad打开会乱码),或者使用专有工具打开,此处将其转为SQL文件

/usr/bin/mysqlbinlog  /var/lib/mysql/mysql-bin.000335 > /var/lib/mysql/mysql-bin.000335.sql

通过搜索drop关键字查看破坏数据的时间点在2022-09-29 10:21:24,我们选择将数据还原到2022-09-29 10:20:59

在这里插入图片描述

第四步:还原数据

还原前还需要大致确定我们需要还原的时间范围,此处我们选择还原2022-09-29 08:00:00到2022-09-29 10:20:59之间的数据,可以使用以下命令

#还原指定数据库
/usr/bin/mysqlbinlog  --database=istrong_portal --start-datetime="2022-09-29 08:00:00" --stop-datetime="2022-09-29 10:20:59" /var/lib/mysql/mysql-bin.000335 | mysql -h127.0.0.1 -uroot -pPWDxxxxx

#还原所有数据库
/usr/bin/mysqlbinlog  --start-datetime="2022-09-29 08:00:00" --stop-datetime="2022-09-29 10:20:59" /var/lib/mysql/mysql-bin.000335 | mysql -h127.0.0.1 -uroot -pPWDxxxxx

注意事项

1、建议还原的时候停止系统,或者切断系统与数据库的连接,否则可能会出现系统日志实时写入库中,还原时报记录不一致错误
2、还原时需要找准对应的时间起止点,否则还原会出现数据不一致,还原的结果不是想要的情况
3、binlog还可以通过位置的起止点进行还原

标签:binlog,mysql8,09,29,备份文件,还原,mysql,日志
From: https://blog.csdn.net/weixin_43514003/article/details/141464935

相关文章

  • 利用ibd2sql直接读取mysql8数据文件数据
    MySQL8.0之后,表结构和表数据统一放到了ibd文件中,该文件包含了表的结构和索引以及数据信息。MySQL支持利用ibd2sdi来进行解析ibd文件下载地址:https://github.com/ddcw/ibd2sql/archive/refs/tags/v1.5.tar.gz[[email protected]]#ibd2sdi/data/mysqldata/data/test01/t......
  • MySQL8.0安装教程
    一、下载二、解压、初始化数据库以windows管理员打开cmd进入MySQL解压后的bin目录执行mysqld--initialize--user=mysql--consoleMySQL初始化完成三、安装mysqld服务mysqld--install四、启动mysql服务netstartmysql五、修改root用户密码mysql-uroot-p输入......
  • Linux(CentOS7)安装MySQL8全过程
    下载官方地址:https://dev.mysql.com/downloads/mysql/选择版本前需先看一下服务器的glibc版本ldd--version  上传将下载好的tar包上传到服务器上,这里演示上传到了/usr/local/文件夹下 解压tar -Jxvfmysql-8.0.36-linux-glibc2.17-x86_64.tar.xz ......
  • Centos 7.9系统 源码安装MySQL8.0
    1.编译安装1.1下载编译所需包#检查重复包、卸载rpm-qa|grepmariadb*|xargsrpm-e--nodeps#下载所需软件包cd/usr/local/src/wgethttps://mirrors.ustc.edu.cn/gnu/gmp/gmp-6.1.2.tar.xzwgethttps://mirrors.ustc.edu.cn/gnu/mpfr/mpfr-4.0.2.tar.gzwget......
  • 如何自动备份文件:确保数据安全的两种高效方案
    在数字化时代,电脑中的文件已成为我们工作、学习和生活不可或缺的一部分。无论是珍贵的照片、重要的工作文档,还是日常使用的软件配置,一旦因意外丢失或损坏,都可能带来不可估量的损失。因此,定期且自动地备份文件显得尤为重要。本文将详细介绍两种自动备份文件的方法,特别是通过“......
  • mysql8.0 主从架构模式【0到1架构系列】
    前提条件准备3,4,5台虚拟机祼装mysql8.0主从架构常见两种模式“一主多从”和“级联复制”两种,基本都很简单,都是依赖binlog日志文件进行同步,binlog日志会记录DDL和部分DDL语句,进行同步时从库会重新执行这些语句从而实现主从同步。步骤1:配置主/从服务器的server_id,如......
  • 最完整版Linux安装mysql8.0(保姆教程)
    目录前言删除已安装的mysql通过yum源安装mysql前言安装mysql可以通过yum源和压缩包两种方式安装,压缩包安装的mysql通常使用的是旧的SysVinit脚本,使用命令如:servicemysqlstart。如果想要交给服务器的任务管理器管理需要进行额外配置,配置中可能会出现一些问题,推荐使......
  • MySQL8.0 Clone Plugin 实现解析浅析
    MySQL8.0ClonePlugin实现解析浅析从8.0.17版本开始官方实现了clone的功能,允许用户通过简单的SQL命令把远端/本地的数据库实例拷贝到其他实例后快速拉起一个新的实例。该功能由一些列的WL组成:Clonelocalreplica(WL#9209):实现了数据本地Clone。Cloneremotereplica......
  • CentOs7 中mysql8 设置远程连接
    迁移csdnCentOs7中Mysql8.0设置远程连接1登陆Mysqlmysql-uroot-p输入密码2选择mysql数据库usemysql;在mysql数据库中存储了用户信息的user表3在mysql数据库的user表中查看当前root用户的相关信息selecthost,user,authentication_string,pluginfromus......
  • 删库了不用跑路!binlog恢复数据实操
    各位道友大家好呀!想必道友们或多或少都听说过MySQL的binlog的作用,它记录了数据库整个的生命周期,可用于恢复数据或者从库同步数据。那么如果发生了数据库误删,具体该怎样恢复数据呢?下面就以一个例子来给道友们演示一下,让我们开始吧!doit!数据备份首先,数据库要定时进行备份,因为如......