zoukankan      html  css  js  c++  java
  • Mysql 数据恢复

    基本上每个跟数据库打交道的程序员都会碰一个问题,MySQL误操作后如何快速回滚?

    比如,delete一张表,忘加限制条件,整张表没了。假如这还是线上环境核心业务数据,那这事就闹大了。误操作后,能快速回滚数据是非常重要的。

    使用binlog二进制文件恢复数据(Mysql在5.7以前是默认关闭log_bin的,8以后默认开启),本文以ubuntu18.04系统下的5.7版本的mysql为例子

    1. 开启mysql的log-bin参数记录binlog日志功能

    首先,查看一下log_bin日志的开启状况

    mysql> show variables like '%log_bin%';

    我们可以看到log_bin对应的值是OFF,即处于关闭的状态的。
    我们通过更改my.cnf配置文件来开启log_bin
    my.cnf默认放在/etc/mysql/目录下,添加如下内容:

    [mysqld]
    server_id = 1
    log_bin=/var/lib/mysql/mysql-bin

    然后重启mysql

    services mysql restart

    这时候查看log_bin,可以发现结果已经变成了ON,成功开启,同时在对应的文件夹也生成了对应的日志文件。

    3.建立测试环境和数据
    a.建立数据

    //mysql命令行执行
    //创建数据库
    create database Demo;
    //创建表
    create table student(sno int(10) NOT NULL COMMENT '学号',sname varchar(16) NOT NULL COMMENT '姓名',ssex char(2) NOT NULL COMMENT '性别', sage tinyint(2) NOT NULL default '0' COMMENT '学生年龄',sdept varchar(16) default NULL COMMENT '学生所在系别',PRIMARY KEY (sno)) ENGINE=Innodb AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
    //插入测试数据
    insert into student values(0001,'路亚','','24','计算机网络');
    insert into student values(0002,'elain','','26','computer');
    insert into student values(0003,'zhangxiao','','28','物流');
    insert into student values(0004,'jeacen','','28','compter');
    insert into student values(0005,'张扬','','29','计算机科学');

    b. 进行备份

    mysqldump -F -uroot -proot --lock-all-tables -B student> /tmp/student.sql //加了-F参数,备份后binlog会生成新文件 /终端执行

    c.模拟更新数据

    insert into student values(0006,'jason','','20','compter');
    insert into student values(0007,'tomsion','','27','人力资源');
    drop database Demo;

    3.恢复数据

    mysqladmin -uroot -p flush-logs //回车输入密码

    刷新并备份出需要的binlog日志文件,找到对应的logbin文件
    把二进制文件转成sql文件

    mysqlbinlog /var/lib/mysql/mysql-bin.000008 > /tmp/binlog.sql

    然后删除文件里面无关的内容,把需要用到的语句重新运行一遍就可以了

    4.完成数据恢复

  • 相关阅读:
    DICOMDIR结构
    给文件夹添加Everyone用户
    关于Predicate<T>委托
    开发者必备的6款源码搜索引擎
    Create XML Files Out Of SQL Server With SSIS And FOR XML Syntax
    create xml file from sql script
    DICOM中的入门概念
    小米note开启调试模式
    [转] Java基础知识——Java语言基础
    Java语言基本语法
  • 原文地址:https://www.cnblogs.com/s42-/p/13901381.html
Copyright © 2011-2022 走看看