利用mysqldump mysqlbinlong恢复数据

来源:互联网 发布:智多星定额造价软件 编辑:程序博客网 时间:2024/06/08 06:33

mysqldup参数


--master-data: mysqldump导出数据时,当这个参数的值为1的时候,mysqldump出来的文件就会包括CHANGE MASTER TO这个语句,CHANGE MASTER TO后面紧接着就是file和position的记录,在slave上导入数据时就会执行这个语句,salve就会根据指定这个文件位置从master端复制binlog。默认情况下这个值是1

当这个值是2的时候,chang master to也是会写到dump文件里面去的,但是这个语句是被注释的状态。


--single-transaction:来保证备份的一致性,实际上它的工作原理是设定本次会话的隔离级别为:REPEATABLE READ,以确保本次会话(dump)时,不会看到其他会话已经提交了的数据。


导出日志

/usr/local/mysql/bin/mysqldump  -uroot -p --single-transaction --master-data=1   test > /tmp/test.sql


分析日志找出出错日志的位置。


恢复
mysqlbinlog --start-position=107 --stop-position=2395 mysql-bin.000002|mysql test


如果要是有update XXX set a=XXX 这种一种的就需要用的

mysqlbinlog -B  --start-position=2395 --stop-position=63933 mysql-bin.000002 |mysql testy (这个需要自己生成)

具体如下:

1.准备好MySQL-5.5.18的源码,这里用的Percona-MySQL-5.5.18源码

2.cd mysql-5.5.18

3.wget http://mysql.taobao.org/images/0/0f/5.5.18_flashback.diff
4.patch-p0<5.5.18_flashback.diff

即可以看到了mysqlbinlog , 因这里只为要mysqlbinlog这个程序,所以编译MySQL时没加特别的参数.该工具是否具备flashback功能可以确认一下是否有 “-B” 这个参数


0 0