一、 Mysqlbin-log 日志

1.开启Mysqlbin-log 日志

#vi/etc/my.cnf

[client]

#password =your_password

port  =3306

socket  =/tmp/mysql.sock

default-character-set-utf8

.......

[mysqld]

port= 3306

socket= /var/lib/mysql/mysql.sock

log-slow-queries=mysql-slowlog

log-error=mysql.err

log=mysql.log

log-bin=mysql-bin//删除#符号


2.查看二进制文件(mysql-bin.******)

#cd/usr/local/mysql/bin/ && ls


3.查看mysqbinlog日志是否开启

mysql>show variables like “%log-bin%;


4.Mysqlbin-log有关的日志操作

mysql>flush logs;//此时就会多一个最新的bin-log日志

mysql>show master status;//查看最后一个bin日志

mysql>reset master;//清空所有的bin-log日志

mysql>mysqlbinlog–no-defaults mysql-bin.******|more//查看bin-log日志






二、Mysqlbin-log日志恢复


1.备份现有数据()

#mysqldump-uroot -p123456 test -l -F > /tmp/test.sql //-Fflushlogs-l即读锁,在备份时用户不可进行写操作


2.第一次恢复操作

#mysql -uroot-p123456 test -v(可选)-f < /tmp/test.sql


3.第二次从bin-log日志恢复操作

#/usr/local/mysql/bin/mysqlbinlog--no-defaults --stop-position=”position_num” mysql-bin.****** |/usr/local/mysql/bin/mysql -uroot -p123456 //position是用来记录增、删、改操作的



三、一次完整的Mysqlbin-log日志恢复过程实例

1).创建一个表:

mysql>usetest;

mysql>createtable t1(id int);

mysql>showtables;


2).添加两行数据:

mysql>insertinto t1 values(1);

mysql>insertinto t1 values(2);

mysql>select *from t1;


3).备份现有数据(09:30):

#mysqldump -uroot-p123456 test -l -F > /tmp/test.sql


4).在备份完后再添加三行数据(记录):

mysql>insert into t1 values(3);

mysql>insert into t1 values(4);

mysql>insert into t1 values(5);


5).此时突然数据库损损坏或者认为删除:

mysql>drop table t1;


6).用已备份的test.sql来恢复数据库:

#mysql -uroot-p123456 test < test.sql


7).bin-log日志恢复:

#/usr/local/mysql/bin/mysqlbinlog–no-defaults mysql-bin.000006|more//查看bin-log日志,在我的虚力机上bin-log日志从mysql-bin.000005开始

#/usr/local/mysql/bin/mysqlbinlog--no-defaults --stop-position=”272” mysql-bin.000006 |/usr/local/mysql/bin/mysql -uroot -p123456 //恢复bin-log日志