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