mysqlbinlog 怎么将数据库恢复到指定的时间

mysqlbinlog 怎么将数据库恢复到指定的时间,第1张

$request = curl_init('>

mysql数据库不小心还原了需要按照以下步骤恢复。

1、先确认mysql有没有启用bin日志 ,就是看下mysqlini(mycnf)里的log-bin=mysql-bin, 可以 自定义一个目录和前缀名,比如/data/log/mylog这样。

2、然后在数据库文件存放的data目录就能看到mysql-bin00000x这样的文件,这就是二进制日志了,可以导出成txt格式的,里面其实就是对数据库的各种 *** 作sql语句。

3、导出txt文件:

e:\wamp\bin\mysql\mysql5612\bin>mysqlbinlog

--database=testdatabase

e:\wamp\bin\mysql\mysql5612\data\mysql-bin000312

>

c:\\test1txt

这是windows下的导出,linux也是类似的。

database=数据库名

从最早的日志还始还原

linux下可以很方便的 mysql-bin000

可以加参数开始时间和结束时间,就是你执行那条sql语句的时间

start-datetime="2014-12-04

11:25:56"

--stop-datetime="2014-12-04

13:23:50"

4、恢复数据:

e:\wamp\bin\mysql\mysql5612\bin>mysqlbinlog

--database=yundongchao

e:\wamp\bin\mysql\mysql5612\data\mysql-bin000179

|

mysql

-u

root

-p

------------------------------------------------

mysql binlog没有开启数据恢复

mysql 不小心误删了一个数据表的数据,通过delete,没有开启binlog,如何才可以恢复数据。MYI MYD文件还是原大小。

SQL code

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

MariaDB [(none)]> show variables like '%bin%';

+-----------------------------------------+----------------------+

| Variable_name | Value |

+-----------------------------------------+----------------------+

| binlog_annotate_row_events | OFF |

| binlog_cache_size | 32768 |

| binlog_checksum | NONE |

| binlog_direct_non_transactional_updates | OFF |

| binlog_format | STATEMENT |

| binlog_optimize_thread_scheduling | ON |

| binlog_stmt_cache_size | 32768 |

| innodb_locks_unsafe_for_binlog | OFF |

| log_bin | OFF |

| log_bin_trust_function_creators | OFF |

| max_binlog_cache_size | 18446744073709547520 |

| max_binlog_size | 1073741824 |

| max_binlog_stmt_cache_size | 18446744073709547520 |

| sql_log_bin | ON |

| sync_binlog | 0 |

+-----------------------------------------+----------------------+

15 rows in set (000 sec)

如何恢复,数据库还未重启。

SQL code

1

2

3

4

5

6

7

8

9

10

11

[root@flxx dada002]# ll

total 512332

drwxr-xr-x 2 dada002 root 4096 Dec 22 23:10 bak

-rw-r----- 1 root root 13880 Mar 13 11:52 gk_info_infofrmbak

-rw-r----- 1 root root 485853324 Mar 13 11:51 gk_info_infoMYDbak

-rw-r----- 1 root root 9374720 Mar 13 11:51 gk_info_infoMYIbak

-rw-r----- 1 root root 18874368 Mar 13 12:02 ibdata1

-rw-r----- 1 root root 5242880 Mar 13 12:02 ib_logfile0

-rw-r----- 1 root root 5242880 Mar 13 12:02 ib_logfile1

drwxrwxrwx 2 dada002 root 12288 Mar 9 14:25 logs

drwxr-xr-x 16 dada002 root 4096 Mar 8 15:10 >

MySQL开启binlog后,写入 *** 作都会记录到二进制日志里,可以使用mysqlbinlog查看/导出/恢复数据 假设你之前进行了 mysqldump全量备份,和binlog增量备份(在mysqldump全量备份时使用参数--flush-logs清除全量备份前的binlog) 先恢复之前用mysqldumpmysql binlog可否恢复删除数据

不同的数据库有不同的恢复方式。

Oracle 11g之后有闪存回归机制,在一定的时间内可以从闪存中恢复数据。

MySQL数据库则在开启了binlog日志的情况下,可以通过binlog日志恢复被删除的数据。

在解决的过程中,以下几种尝试:

1如果开启了日志,直接mysqlbinlog 使用日志恢复即可。

2如果不是删除了一个表的部分数据,而是删除整个表,那么可以在删除后马上用磁盘数据恢复软件尝试恢复。(因为删除表后会有文件被删除,而删除表的部分数据,文件还是存在)

3找数据恢复的公司,使用工具分析ibdata1(分析过程参考一页一页查看有没有历史记录存在,使用ibdata1恢复数据,应该是在了解数据表结构的前提下,数据库除ibdata1外其他数据受损不能正常使用数据库时尝试,而不是删了表数据后恢复什么的。(事实上,这个文件是存储现有表数据的,其实也可以设置成每个表一个文件。)

4mysql下有ib_logfile0和ib_logfile1两个文件,其实这两个文件里,记录了Mysql的一些事物日志,用于事务的前滚后滚,是Mysql自身使用的,这个文件用文本工具打开后,有很多乱码,但却可以查找到被删除的少量数据的insert记录,极少数的乱码通过前后语句找出了原文,最终通过事物日志恢复了删除的文件。

注:用事物日志恢复,需要几个前提。

1:知道被删除数据的大概位置,不要这边查找,那边又不断有新数据插入。

2:因为有很多乱码,适用于查找少量数据,而不是用作大量数据的恢复,浪费体力。

3:如果二进制日志没开,没有备份,那么只能用这种方法恢复了。

以上就是关于mysqlbinlog 怎么将数据库恢复到指定的时间全部的内容,包括:mysqlbinlog 怎么将数据库恢复到指定的时间、详解Mysql自动备份与恢复的几种方法(图文教、不小心删掉了mysql数据库怎么办等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/sjk/10171289.html

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

发表评论

登录后才能评论

评论列表(0条)

保存