数据恢复的前提是要开启日志记录机制,开启记录需要在哪个文件夹中的哪个位置

数据恢复的前提是要开启日志记录机制,开启记录需要在哪个文件夹中的哪个位置,第1张

1.找到my.ini文件

(方法:先到mysql安装目录找my.ini文件如果此安装目录没有找到该文件,则此文件一般在C盘下的ProgramData文件夹中,此文件夹为隐藏文件夹需要直接查找 C:\ProgramData\MySQL\MySQL Server 5.7\)然后打开my.ini文件

(在此文档里找到[mysqld]标签,并且在下面加上log-xfdhb=xfdhbary-log这句话

如[mysqld]

log-xfdhb=xfdhbary-log

(说明:log-xfdhb *** 作符命令为开启日志文件,因为mysql默认的是关闭日志,然后xfdhbary-log为产生日志文件的文件名,此文件在C:\ProgramData\MySQL\MySQL Server 5.7\Data下面可以看到 xfdhbary-log.000001文件这就是产生的日志二进制文件)

xfdhbary-log.000001文件这就是产生的日志二进制文件

2.日志文件已经开启下面进行实验,

建立一个新表product,kkdmt添加记录,这时在navicat里查看日志它会显示建表和添加数据的记录,时间

注意要记住建表时间和添加记录后的时间

打开命令提示符,用cd找到mysql安装目录后,

输入mysqlxfdhblog “C:\ProgramData\MySQL\MySQL Server 5.7\Data\xfdhbary-log.000001” --start-datetime=“2018-11-05 18:00:04.531” --stop-datetime=“2018-11-05 18:01:10.125” |mysql -u root -p

就可以恢复删除的数据了

注意:slddn误删一条数据,利用二进制日志恢复的时候你需要寻找的是 创建数据的那个节点(时间),而并非你删除数据的那个节点(时间)

slddn回滚数据,回滚到删数据之前的数据库状态(只执行了stop-position 或者stop-datetime),那么在stop-position之后所有的数据库 *** 作都将丢失所以你需要

start-position stop-position 回滚单条被删数据

(start-datetime为开始恢复的时间,stop-datetime为结束恢复的时间)

一、binlog 介绍

服务器的二进制日志记录着该数据库的所有增删改的 *** 作日志(前提是要在自己的服务器上开启binlog),还包括了这些 *** 作的执行时间。为了显示这些二进制内容,我们可以使用mysqlbinlog命令来查看。

用途1:主从同步

用途2:恢复数据库(也是线上出现一次数据库文件丢失后,才对这个有所了解并学习的)

mysqlbinlog命令用法:shell>mysqlbinlog [options] log_file ...

1)mysqlbinlog 选项示例

常见的选项有以下几个:

--start-datetime

从二进制日志中读取指定等于时间戳或者晚于本地计算机的时间。取值如:="1470733768" 或者="2016-08-09 5:09:28"

示例:

[root@hcloud ~]# mysqlbinlog --start-datetime="2016-08-09 5:05:27" /var/lib/mysql/mysql-bin.000001

--stop-datetime

从二进制日志中读取指定小于时间戳或者等于本地计算机的时间取值和上述一样

--start-position

从二进制日志中读取指定position 事件位置作为开始。取值:="2698"

示例:

[root@hcloud ~]# mysqlbinlog --start-position="2698" /var/lib/mysql/mysql-bin.000001

--stop-position

从二进制日志中读取指定position 事件位置作为事件截至。取值:="2698"

二、环境准备以及备份恢复

1) 安装好mysql后,检查开启binlog

mysql>SHOW BINARY LOGS

ERROR 1381 (HY000): You are not using binary logging

:上面提示说明没有服务器开启binlog

修改/etc/my.cnf

在mysqld选项中添加一行内容如下:

log-bin=mysql-bin

默认如果不给值的话,log-bin 的会

要想从二进制日志恢复数据,你需要知道当前二进制日志文件的路径和文件名。一般可以从选项文件(即my.cnf or my.ini,取决于你的系统)中找到路径。如果未包含在选项文件中,当服务器启动时,可以在命令行中以选项的形式给出。启用二进制日志的选项为-- log-bin。要想确定当前的二进制日志文件的文件名,输入下面的MySQL语句:

SHOW BINLOG EVENTS /G

你还可以从命令行输入下面的内容:

mysql --user=root -pmy_pwd -e 'SHOW BINLOG EVENTS /G'

将密码my_pwd替换为服务器的root密码。

1. 指定恢复时间

对于MySQL 4.1.4,可以在mysqlbinlog语句中通过--start-date和--stop-date选项指定DATETIME格式的起止时间。举例说 明,假设在今天上午10:00(今天是2006年4月20日),执行SQL语句来删除一个大表。要想恢复表和数据,你可以恢复前晚上的备份,并输入:

mysqlbinlog --stop-date="2005-04-20 9:59:59" /var/log/mysql/bin.123456 /

mysql -u root -pmypwd

该命令将恢复截止到在--stop-date选项中以DATETIME格式给出的日期和时间的所有数据。如果你没有检测到几个小时后输入的错误的SQL语句,可能你想要恢复后面发生的活动。根据这些,你可以用起使日期和时间再次运行mysqlbinlog:

mysqlbinlog --start-date="2005-04-20 10:01:00" /var/log/mysql/bin.123456 /

mysql -u root -pmypwd /

在该行中,从上午10:01登录的SQL语句将运行。组合执行前夜的转储文件和mysqlbinlog的两行可以将所有数据恢复到上午10:00前一秒钟。你应检查日志以确保时间确切。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8703301.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-20
下一篇 2023-04-20

发表评论

登录后才能评论

评论列表(0条)

保存