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位置结束