一、windows系统恢复的数据库数据:
第一步:cmd 登陆mysql
mysql -uroot -p
1
第二步:选择一个数据库lxq
mysql> use lxq;
1
第三步:创建一个表:sn_test
mysql> CREATE TABLE lxq
.sn_test
( name
VARCHAR( 10 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL , age
INT( 3 ) NOT NULL ) ENGINE = MYISAM;
1
第四步:插入表:sn_test 数据
INSERT INTO lxq
.sn_test
(name
, age
) VALUES (‘lxq1’, ‘1’);
INSERT INTO lxq
.sn_test
(name
, age
) VALUES (‘lxq2’, ‘2’);
INSERT INTO lxq
.sn_test
(name
, age
) VALUES (‘lxq3’, ‘3’);
INSERT INTO lxq
.sn_test
(name
, age
) VALUES (‘lxq4’, ‘4’);
1
2
3
4
第五步:查看数据并删除
mysql> select * from sn_test;
mysql> delete from sn_test;
mysql> select * from sn_test;
1
2
3
第六步:查看自己的操作被记录在了那个binlog文件中(一般存放在标号最大的ID下)
1.查询所有日志 Position 值;
mysql> show master logs;
±-----------------±----------+
| Log_name | File_size |
±-----------------±----------+
| mysql-bin.000001 | 790 |
| mysql-bin.000002 | 126 |
| mysql-bin.000003 | 126 |
| mysql-bin.000004 | 126 |
| mysql-bin.000757 | 126 |
| mysql-bin.000758 | 126 |
| mysql-bin.000759 | 150 |
| mysql-bin.000760 | 2073 |
| mysql-bin.000761 | 107 |
±-----------------±----------+
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2.查询最近一次也就是当前日志的 Position 值;(这步操作适用于刚刚删除数据 )
mysql> show master status;
±-----------------±---------±-------------±-----------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
±-----------------±---------±-------------±-----------------+
| mysql-bin.000761 | 1151 | | |
±-----------------±---------±-------------±-----------------+
1
2
3
4
5
6
第七步:拿最新日志文件做案例,查看 mysql-bin.000761 这个日志文件中记录了那些操作执行:
mysql> show binlog events in ‘mysql-bin.000761’;
1
| mysql-bin.000761 | 390 | Query | 1 | 593 | use lxq
; CREATE TABLE lxq
.sn_test
( name
VARCHAR( 10 ) CHARACTER SET utf8 COLLATE utf8
_bin NOT NULL , age
INT( 3 ) NOT NULL ) ENGINE = MYISAM |
| mysql-bin.000761 | 593 | Query | 1 | 660 | BEGIN
|
| mysql-bin.000761 | 660 | Query | 1 | 786 | use lxq
; INSERT INTO lxq
.sn_test
(name
, age
) VALUES (‘lxq1’, ‘1’)
|
| mysql-bin.000761 | 786 | Query | 1 | 854 | COMMIT
|
| mysql-bin.000761 | 854 | Query | 1 | 921 | BEGIN
|
| mysql-bin.000761 | 921 | Query | 1 | 1047 | use lxq
; INSERT INTO lxq
.sn_test
(name
, age
) VALUES (‘lxq2’, ‘2’)
|
| mysql-bin.000761 | 1047 | Query | 1 | 1115 | COMMIT
|
| mysql-bin.000761 | 1115 | Query | 1 | 1182 | BEGIN
|
| mysql-bin.000761 | 1182 | Query | 1 | 1308 | use lxq
; INSERT INTO lxq
.sn_test
(name
, age
) VALUES (‘lxq3’, ‘3’)
|
| mysql-bin.000761 | 1308 | Query | 1 | 1376 | COMMIT
|
| mysql-bin.000761 | 1376 | Query | 1 | 1443 | BEGIN
|
| mysql-bin.000761 | 1443 | Query | 1 | 1569 | use lxq
; INSERT INTO lxq
.sn_test
(name
, age
) VALUES (‘lxq4’, ‘4’)
|
mysql-bin.000761 | 1704 | Query | 1 | 1785 | use lxq
; delete from sn_test
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
第八步: 从上面查询结果中找到被删除的表在创建时的sql 语句的 position值 593 和 删除数据时候的sql语句前一个 position 值 1569 。下面开始最重要的一步使用 mysqlbinlog 进行恢复数据操作, 需要在路径 D:\BtSoft\WebSoft\mysql\MySQL5.5\data\ 下执行:
D:\BtSoft\WebSoft\mysql\MySQL5.5\data\ > mysqlbinlog mysql-bin.000761 --start-position 593 --stop-position 1569 |mysql -u root -p
1
第九步:输入mysql数据库密码:
1
第十步:重新登录,查看数据,OK,已经成功恢复了。