1、先找到数据库的 bin 目录 C:Program FilesMySQLMySQL Server 5.5bin然后按功能要求,分别键入命令注意:-u 后面是用户名,-p 后面是密码; 后面是备份的路径一、 完全恢复一般我们在没有误操作,但数据库无法打开时,采用完全恢复。1、发生故障了,需要将备份拿出来恢复mysqldump -u root -proot test d:/test.sql2、使用 mysqlbinlog 恢复自 mysqldump 备份以来的 binlog我们这里备份以来的 binlog 是 mysql-bin-3306.000002恢复备份以来的 binlogmysqlbinlo
2、g D:MySQL5.5datamysql-bin-3306.000002|mysql -uroot -proot test但是误操作,比如删了一张表,或是删了一条数据,这时使用完全恢复是没有用的,因为日志里面还存在误操作的语句,我们需要的是恢复到误操作之前的状态,然后跳过误操作语句,再恢复后面执行的语句,完成我们的恢复。这种恢复叫不完全恢复。在 mysql 中,不完全恢复分为基于时间点的恢复和基于位置的恢复。 二、 基于时间点的而恢复查看日志文件 mysql-bin-3306.000002mysqlbinlog D:MySQL5.5datamysql-bin-3306.000002我们发现在
3、 2011-6-4 17:25:44 到 2011-6-4 17:25:47 的时候发生了误操作,误删了一条数据。1、 恢复到以前的完全备份mysqldump -u root -proot test d:/test.sql2、可以用以下语句将数据恢复到故障前mysqlbinlog -stop-date=“2011-6-4 17:25:44“ D:MySQL5.5datamysql-bin-3306.000002| mysql -uroot -proot3、跳过故障的时间点,继续执行后面的 binlog,完成恢复mysqlbinlog -start-date=“2011-6-4 17:25:47
4、“ D:MySQL5.5datamysql-bin-3306.000002| mysql -uroot -proot注:可能是本机采用 innodb 的原因。采用上面操作,会出现类似这种的错误 ERROR 1062 (23000) at line 32: Duplicate entry 27 for key PRIMARY实际中恢复中,找到正确操作的那条语句,找准原先操作的时间点,再执行一次就行了。比如正确操作的时间点为“2011-6-4 17:25:04“ 到“2011-6-4 17:25:37“下面这条语句,就实现了恢复mysqlbinlog -start-date=“2011-6-4 1
5、7:25:04“ -stop-date=“2011-6-4 17:25:37“D:MySQL5.5datamysql-bin-3306.000002| mysql -uroot -proot三、 基于位置的恢复和基于时间点的恢复类似,但更为精准,因为同一时间点可能有很多条 sql 语句同时执行。通过查看日志文件 mysql-bin-3306.000002mysqlbinlog D:MySQL5.5datamysql-bin-3306.000002我们发现故障前后的位置号分别是 621 和 813。就是 end_log_pos 后边显示的。当然也可以通过在 mysql 命令窗种 show bin
6、log events;查看1、恢复到以前的完全备份mysqldump -u root -proot test d:/test.sql2、先恢复到停止位置的所有事务mysqlbinlog -stop-position=“621“ D:MySQL5.5datamysql-bin-3306.000002| mysql -uroot -proot3、恢复从给定的起始位置直到二进制结束的所有事务mysqlbinlog -start-position=“813“ D:MySQL5.5datamysql-bin-3306.000002| mysql -uroot -proot注:可能是本机采用 innodb 的原因。采用上面操作,会出现类似这种的错误 ERROR 1062 (23000) at line 32: Duplicate entry 27 for key PRIMARY实际中恢复中,找到正确操作的那条语句,找准原先操作语句的位置点 end_log_pos,再执行一次就行了。比如正确操作的位置点为“175“ 到 “398“下面这条语句,就实现了恢复mysqlbinlog -start-position=“175“ -stop-position=“398“ D:MySQL5.5datamysql-bin-3306.000002| mysql -uroot -proot