MySQL数据库的备份和恢复之二
我们来说恢复的第二种情况,就是需要从binlog中指定位置恢复 binlog如何设置不说了,我们假设上次用mysqldump做过一次全量备份。 mysqldump -uroot -p -h 192.168.1.35 -P3306 --opt --triggers -R --hex-blob --single-transaction --flush-logs --master-data=2 -B 库名 > 库名.sql 由于我们在备份中使用了参数–flush-logs –master-data=2,所以 库名.sql 中会有binglog的信息供我们使用。 一、用mysqlbinlog来恢复 我们首先要查到随后的binlog文件是那个,从那时候起又生成多少个binglog文件。 然后去库里查询: show master logs; show master status; 我们要分析一下SQL # show binlog events [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count]; show binlog events in 'javaboy_logbin.000002' limit 5,10; 我们来翻看日志: 可以看到是从 764–>865 ,发生了删除,那么回放到这个764这个position前即可,764不会执行 mysqlbinlog /var/lib/mysql/mysql-bin.000204 --stop-position=764 --database=bbb | mysql -uroot -p –start-position指定从哪里开始恢复,如果不指定,就会从binlog文件开头的position开始 mysqlbinlog /var/lib/mysql/mysql-bin.000204 --start-position=205 --stop-position=764 --database=bbb | mysql -uroot -p 二、用binglog2sql来恢复 binlog2sql 是大众点评公司的DBA 开发的一款基于通过解析binlog将delete 恢复为insert,update 的值 set 字段和where条件做对调的原理来恢复数据的。 使用限制 MySQL的binlog format 必须是row 安装 ...