• 简单粗暴通过 Binlog 日志来恢复 MySQL 数据


    引言

    Binlog 日志的主要作用:
    1、增量备份。
    2、主从复制。

    操作步骤

    1、登录 MySQL -> 执行 show variables like '%log_bin%'; 查询 binlog 状态。
    提示: log_bin => on 说明已经开始 binlog。

    2、准备测试数据

    // 创建 `test` 数据库
    CREATE DATABASE `test`;
    
    // 创建 `user` 数据表
    CREATE TABLE `user` (
      `id` int(11) NOT NULL,
      `name` varchar(25) DEFAULT NULL,
      `age` int(4) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    // 插入测试数据
    BEGIN;
    INSERT INTO `user` VALUES (1, 'liuyi', 20);
    INSERT INTO `user` VALUES (2, 'chener', 21);
    INSERT INTO `user` VALUES (3, 'zhangsan', 22);
    INSERT INTO `user` VALUES (4, 'lisi', 23);
    INSERT INTO `user` VALUES (5, 'wangwu', 24);
    COMMIT;
    

    3、备份数据

    4、备份数据之后,执行 flush logs 重新生成一个 binlog 日志,用来记录被备份之后的操作。

    5、执行更新操作,将 ID 为 5 的记录 age 修改成 30。

    6、由于误删除,将数据表 user 删除掉了。

    7、开始将之前的备份数据恢复到数据库。

    8、但是,我们发现之前的更新的数据已经丢失了。

    9、查询出 binlog 日志 binllog.000002。

    10、找到更新操作的 position (位置点)。

    11、使用 binlog 进行数据恢复。

    12、再次查看数据,已经将数据恢复了。

  • 相关阅读:
    过度效果
    JQ 滚动图片
    清除Css中select的下拉箭头样式
    利用原生 js 模拟出 JSON.parse 和 JSON.stringify
    利用 qrcode 在图片生成二维码
    JavaScript--正则表达式
    2、less的用法
    模拟select下拉框之多选(数据源采用模拟Ajax数据--原创)
    模拟 ES6 SET 数组去重
    前端方式导入导出xlsx
  • 原文地址:https://www.cnblogs.com/yxhblogs/p/12642776.html
Copyright © 2020-2023  润新知