当前位置:数据库 > MySQL >>

mysql通过mysql-bin文件恢复数据

mysql-bin00xxx文件(/var/lib/mysql/mysql-bin00xxx)是数据库的操作日志文件,一定情况下可以利用操作日志文件来恢复数据,例如一个表中之前插入了1条数据,之后给误删除了,这时可以在操作日志文件找到之前插入的数据,以此来恢复数据。

my.cnf配置相关

1.开启日志保存机制  log-bin=mysql-bin

2.保留的日志的天数   expire_logs_day = 2

执行日志中的操作:

1.将日志转换为sql文件,然后找出需要的数据进行恢复

mysqlbinlog /var/lib/mysql/mysql-bin.000021 > zzzyk.com.sql

2.指定位置(位置可以参照导出的sql文)

mysqlbinlog --start-position="318086"  --stop-position="318176" /zzzyk.com/mysql-bin.000021 | mysql -u ta -pta

3.指定时间

mysqlbinlog --start-date="2024-02-15 13:00:00" --stop-date="2015-02-15 13:15:00"  /zzzyk.com/mysql-bin.000021 | mysql -u ta -pta

4.指定数据库

mysqlbinlog --start-date="2024-02-15 13:00:00" --stop-date="2015-02-15 13:15:00"  /zzzyk.com/mysql-bin.000021 | mysql -u ta -pta --one-database test


最长用的就是恢复指定数据端的数据了,可以直接恢复到数据库中: 
mysqlbinlog  --start-date="2014-02-18 16:30:00" --stop-date="2024-02-18 17:00:00" mysql_bin.000001 |mysql -uroot -p123456

亦可导出为sql文件,再导入至数据库中: 
mysqlbinlog  --start-date="2014-02-18 16:30:00" --stop-date="2024-02-18 17:00:00" mysql_bin.000001 >zzzyk.com.sql


指定开始\结束位置,从上面的查看产生的binary log我们可以知道某个log的开始到结束的位置,我们可以在恢复的过程中指定回复从A位置到B位置的log.需要用下面两个参数来指定:
    --start-positon="50" //指定从50位置开始 
    --stop-postion="100"//指定到100位置结束 


CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,