MySQL开启binlog后,写入操作都会记录到二进制日志里,可以使用mysqlbinlog查看/导出/恢复数据.
假设你之前进行了 mysqldump全量备份,和binlog增量备份(在mysqldump全量备份时使用参数--flush-logs清除全量备份前的binlog).
先恢复之前用mysqldump进行的全量备份,然后用 mysqlbinlog进行时间点还原:
?
mysql -uroot -prootpwd db_name < db_name.sql
mysqlbinlog --stop-datetime="2013-10-12 12:30:00" /var/log/mysql/mysql-bin.000001 | mysql -uroot -prootpwd
这里假设你的误操作发生在 2013-10-12 12:30:00之后.
如果你既没有进行mysqldump全量备份,也没有开启binlog安全日志,那真的就悲剧了.