• MySQL通过binlog日志恢复数据


    一、查看下自己的MySQL是否开启了binlog日志

    # 是否启用binlog日志   OFF:关闭 ON:开启
    show variables like 'log_bin';

    二、开启binlog日志

    在linxu服务器中找到my.cnf :

    mysql --help | grep 'Default options' -A 1

    执行结果

    Default options are read from the following files in the given order:
    /etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf 

    可以看到mysql优先加载/etc/my.cnf中的配置。

    所以需要在/etc/my.cnf中mysqld节添加开启binlog的配置,如下有两种方式:

    #第一种方式:
    #开启binlog日志
    log_bin=ON
    #binlog日志的基本文件名
    log_bin_basename=/var/lib/mysql/mysql-bin
    #binlog文件的索引文件,管理所有binlog文件
    log_bin_index=/var/lib/mysql/mysql-bin.index
    #配置serverid
    server-id=1
     
    #第二种方式:
    #此一行等同于上面log_bin三行
    log-bin=/var/lib/mysql/mysql-bin
    #配置serverid
    server-id=1

    修改完配置后,重启mysql。

    systemctl stop mysqld.service 
    systemctl start mysqld.service
    systemctl status mysqld.service

    在navicat中或者在服务器中进入mysql 执行SHOW VARIABLES LIKE 'log_bin'; Value 值为 ON即可。

    SHOW VARIABLES LIKE 'log_bin'

    PS:mysql启动停止命令

    一、 启动
    1、使用 service 启动:service mysql start
    2、使用 mysqld 脚本启动:/etc/inint.d/mysql start
    3、使用 safe_mysqld 启动:safe_mysql&
     
    二、停止
    1、使用 service 启动:service mysql stop
    2、使用 mysqld 脚本启动:/etc/inint.d/mysql stop
    3、mysqladmin shutdown
     
    三、重启
    1、使用 service 启动:service mysql restart
    2、使用 mysqld 脚本启动:/etc/inint.d/mysql restart

    二、使用binlog日志恢复数据

    首先在21:21分 我的fo_service库的admin表中有这么几条数据

     随后我向admin表插入了三条数据

     

     但是呢 我在21:24分误删除了这三条数据, 我想恢复怎么办呢

     

    (有的小伙伴会说直接把上面的insert语句拿下来不就完了吗,歪,那我们还用binlog干嘛)

    恢复过程:

    1、查看当前服务器的MySQL使用的binlog文件及大小(这个是会有多个的,我这里演示所以只有一个)

    show binary logs;

     2、查看binlog的目录

    show global variables like '%log_bin%';

     3、导出sql文件

    执行完下面这个命令,输出的sql文件在当前你所在的目录位置。

    (注意自己的mysql-bin.000001文件所在目录,你的也可能是mysql-bin.000005哦,复制的时候注意改开始和结束时间,改路径 /var/lib/mysql/mysql-bin.000001

    两种都可以
    mysqlbinlog --no-defaults --database=fo_service --start-datetime="2022-04-25 21:21:00" --stop-datetime="2022-04-25 21:23:00" -v /var/lib/mysql/mysql-bin.000001  > nobase64.sql
    
    mysqlbinlog --no-defaults --database=fo_service --start-datetime="2022-04-25 21:21:00" --stop-datetime="2022-04-25 21:23:00" -v --base64-output=decode-rows /var/lib/mysql/mysql-bin.000001 > base64.sql

    4、执行命令,还原数据

    输出文件之后 将文件下载到本地 (我放在D盘的根目录下)

    将服务器上的库复制到本地一份

    使用黑窗口(cmd)的root账号登录mysql后

    执行source命令

    查看本地的admin表的数据,可以看见删除的数据恢复了(包括数据的主键ID都是恢复的,大可放心)。

    最后将本地的数据迁移到服务器上的数据库中即可。

    文章参考  https://blog.csdn.net/jolly10/article/details/80077366

  • 相关阅读:
    浏览器 窗口 scrollTop 的兼容性问题
    document.documentElement.scrollTop || document.body.scrollTop;
    javascript函数querySelector
    :before和:after的内幕以及伪类
    css伪类伪元素
    JavaScript 运动框架 Step by step
    js中style,currentStyle和getComputedStyle的区别
    js函数变量
    函数
    oracle语法练习
  • 原文地址:https://www.cnblogs.com/qq1445496485/p/16221857.html
Copyright © 2020-2023  润新知