mysql数据库中的数据恢复

一马平川628 发布于 2017/03/08 21:57
阅读 135
收藏 1

在mysql中,如何根据日志记录恢复数据呀?

加载中
0
一马平川628
一马平川628

mysql利用日志记录功能恢复数据:
    (1)概述:
        MySQL开启binlog后,所有的写入操作(其实就是SQL语句)都会被记录到二进制日志里,可以使用mysqlbinlog查看/导出/恢复数据.
        假设你之前进行了 mysqldump全量备份,和binlog增量备份(在mysqldump全量备份时使用参数--flush-logs清除全量备份前的binlog).
        flush logs;    也可以单独用作SQL语句来使用,作用:刷新日志记录,产生一个新的日志记录文件。

        先恢复之前用mysqldump进行的全量备份,然后用 mysqlbinlog进行时间点还原:
            恢复全量备份:    mysql -uroot -prootpwd db_name < db_name.sql
            时间点还原:    mysqlbinlog --stop-datetime="2013-10-12 12:30:00" 日志文件  |  mysql -uroot -prootpwd
        
        日志中,记录的是:什么时间操作的数据,并把相应的sql语句记录到日志文件中。
        而数据恢复,则是指:让日志文件中的sql语句,再重新执行一遍。所以要找到一个合适的范围。
    
    (2)使用日志记录功能恢复数据的一般步骤:
        1)开启日志记录功能:
            修改mysql的配置文件(linux是/etc/my.cnf,windows是mysql的安装目录/my.ini)
            在配制文件中的[mysqld]下面加上一行代码:log-bin=mysql-bin,如下:
                [mysqld]
                log-bin=mysql-bin
            就这样,就可以开启日志记录功能了。

        2)使用日志文件恢复数据:
            a、先进行到mysql安装目录的lib目录下,再执行mysqldbinlog命令。
            b、查看日志文件的内容:
                直接打开的话,会是乱码,所以一般都会采用如下命令先将其转换成txt文件,然后再打开:
                    mysqlbinlog 日志文件路径 > txt文件路径
            c、数据恢复:
                查看日志文件,寻找合适的时间点范围或位置范围,就可以进行数据的恢复了。
                第一种方法:先将日志文件导出来变成 sql文件,然后再把sql文件导入到数据库中即可
                    mysqlbinlog 日志文件路径 --start-datetime='2008-01-01 00:00:00' --stop-datetime='2008-08-08 00:00:00' > sql文件路径 (根据时间节点)
                或
                    mysqlbinlog 日志文件路径 --start-position=270 --stop-position=377 > sql文件路径        (根据位置节点)

                    导入:mysql -u用户名 -p密码 数据库名 < sql文件的路径
                
                第二种方法:直接执行日志中的sql语句。
                    mysqlbinlog 日志文件路径 --start-position=2471 --stop-position=2876 | mysql -uroot -p123

            d、重新登录,查看数据,OK,已经成功恢复了

返回顶部
顶部