您的位置:首页 > 数据库 > MySQL

mysql数据恢复

2016-07-22 13:42 465 查看
打开mysql的bin log功能:

对于mysql也是支持增量备份,但要打开mysql的bin log功能。
我们修改mysql的配置文件。linux是/etc/my.cnf,windows是mysql的安装目录/my.ini
我们在[mysqld]下面加上log-bin一行代码,如下面。

[mysqld]

log-bin=mysql-bin

复制代码
加完后重起mysql即可。

某客户更新数据的时候,误删了数据库的内容,因为数据库做了主从,但是没有做备份(备份很重要啊!)幸好开启了bin-log,之后只好把整个日志的记录拿回来本地进行恢复。

之后自己也做了一个简单的测试,对数据进行恢复,具体如下:

1、新建一个表

CREATE TABLE  `lynn`.`sn_test` ( `name` VARCHAR( 10 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL , `age` INT( 3 ) NOT NULL ) ENGINE = MYISAM;

2、插入多条数据

INSERT INTO `lynn`.`sn_test` (`name`, `age`) VALUES ('lynn1', '1');

INSERT INTO `lynn`.`sn_test` (`name`, `age`) VALUES ('lynn2', '2'); 

INSERT INTO `lynn`.`sn_test` (`name`, `age`) VALUES ('lynn3', '3'); 

INSERT INTO `lynn`.`sn_test` (`name`, `age`) VALUES ('lynn4', '4');

3、查看数据并删除

mysql> select * from sn_test;

+-------+-----+

| name  | age |

+---------+---+

| lynn1 |   1 |

| lynn2 |   2 |

| lynn3 |   3 |

| lynn4 |   4 |

+---------+-----+

4 rows in set (0.00 sec)

mysql> delete from sn_test;

Query OK, 4 rows affected (0.00 sec)

mysql> select * from sn_test;

Empty set (0.00 sec)

4、mysqlbinlog恢复数据

mysqlbinlog mysql-bin.000001 > 1.sql  这是把文件转储成SQL

查看 1.sql 里面数据插入的纪录,把删除之前的数据进行恢复

mysqlbinlog mysql-bin.000006 --start-position=2471 --stop-position=2876 | mysql -uroot -p123 # 这句话应该是按字节开始执行可以依据转储的SQL文件观察回滚位置

重新登录,查看数据,OK,已经成功恢复了

对于数据库操作,应该注意如下问题:

1、要常备份(全备,增量备份),出了问题可以最快恢复数据;

2、操作数据库前,要把需要操作的数据库或者表dump出来;

3、需要把bin-log打开,就算没有做上面的两步,也可以通过日志恢复数据
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql