Dream_sky分享 2023-04-07 15:07 采纳率: 60%
浏览 26

关于#mysql#的问题:linux中mysql二进制日志如何批量恢复

linux中mysql二进制日志如何批量恢复?数据丢失,现在只有二进制文件

  • 写回答

2条回答 默认 最新

  • Elivis Hu 2023-04-07 15:15
    关注

    回答:用二进制文件日志文件恢复数据
    1.开启二进制日志
    在mysqld的配置节点下添加如下配置

    log-bin="E:/Mysql57BinLog/binlog"(windows下的路径,linux下自行修改路径)
    expire_logs_days=10
    max_binlog_size=100M
    2.重启mysql服务
    使用命令show VARIABLES like '%log_bin%';查看

    3.创建库和表
    create database mytest;
    use mytest;
    create table t(a int PRIMARY key)ENGINE = INNODB DEFAULT CHARSET=utf8;

    flush logs;

    flush logs,刷新二进制日志后会多出来一个二进制日志

    使用命令查看二进制日志内容

    默认会读取配置文件,检测到no--beep会报错。
    推荐使用命令:mysqlbinlog --no-defaults E:\Mysql57BinLog\binlog.000001

    4.插入数据
    use mytest;
    insert into t select 1 union all select 2 union all select 3;
    flush logs;

    5.删除数据库
    drop database mytest;
    flush logs;

    6.恢复数据
    mysqlbinlog --no-defaults E:\Mysql57BinLog\binlog.000001 E:\Mysql57BinLog\binlog.000002 E:\Mysql57BinLog\binlog.000003 | mysql -u root -p

    数据已还原。

    -----------------------------------华丽的分割线--------------------------------------------------------------
    二、恢复到某一时间点的数据
    create table t2(a int PRIMARY key)ENGINE=INNODB default CHARSET=utf8;
    insert into t2 values(1),(2),(3),(4),(5);

    mysqlbinlog --no-defaults E:\Mysql57BinLog\binlog.000006

    删除数据
    delete from t2 where a < 4;

    恢复数据

    drop database mytest;
    删除库mytest,回到最原始的地方

    mysqlbinlog --no-defaults --start-position="4" --stop-position="1285" E:\Mysql57BinLog\binlog.000006 | mysql -u root -p

    数据恢复成功。

    评论

报告相同问题?

问题事件

  • 创建了问题 4月7日

悬赏问题

  • ¥20 WPF 如何实现多语言,label 和cs(live Charts)中是否都能翻译
  • ¥15 STM32F103上电短路问题
  • ¥15 关于#单片机#的问题:以ATMEGA128或相近型号单片机为控制器设计直流电机调速的闭环控制系统(相关搜索:设计报告|软件设计|流程图)
  • ¥15 打开软件提示错误:failed to get wglChoosePixelFormatARB
  • ¥15 (标签-python|关键词-char)
  • ¥15 python+selenium,在新增时弹出了一个输入框
  • ¥15 苹果验机结果的api接口哪里有??单次调用1毛钱及以下。
  • ¥20 学生成绩管理系统设计
  • ¥15 来一个cc穿盾脚本开发者
  • ¥15 CST2023安装报错