- 論壇徽章:
- 0
|
某客戶更新數(shù)據(jù)的時(shí)候,誤刪了數(shù)據(jù)庫(kù)的內(nèi)容,因?yàn)閿?shù)據(jù)庫(kù)做了主從,但是沒(méi)有做備份(備份很重要啊!)幸好開(kāi)啟了bin-log。之后只好把整個(gè)日志的記錄拿回來(lái)本地進(jìn)行恢復(fù)。之后自己也做了一個(gè)簡(jiǎn)單的測(cè)試,對(duì)數(shù)據(jù)進(jìn)行恢復(fù),具體如下:
binlog是什么?
binlog日志用于記錄所有更新且提交了數(shù)據(jù)或者已經(jīng)潛在更新提交了數(shù)據(jù)(例如,沒(méi)有匹配任何行的一個(gè)DELETE)的所有語(yǔ)句。語(yǔ)句以“事件”的形式保存,它描述數(shù)據(jù)更改
1、新建一個(gè)表
CREATE TABLE `lynn`.`sn_test` ( `name` VARCHAR( 10 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL , `age` INT( 3 ) NOT NULL ) ENGINE = MYISAM;
2、插入多條數(shù)據(jù)
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、查看數(shù)據(jù)并刪除
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恢復(fù)數(shù)據(jù)
mysqlbinlog mysql-bin.000006 > 1.sql
查看1.txt里面數(shù)據(jù)插入的紀(jì)錄,把刪除之前的數(shù)據(jù)進(jìn)行恢復(fù)
mysqlbinlog mysql-bin.000006 --start-position=2471 --stop-position=2876 | mysql -uroot -p123
重新登錄,查看數(shù)據(jù),OK,已經(jīng)成功恢復(fù)了
對(duì)于數(shù)據(jù)庫(kù)操作,應(yīng)該注意如下問(wèn)題:
1、要常備份(全備,增量備份),出了問(wèn)題可以最快恢復(fù)數(shù)據(jù);
2、操作數(shù)據(jù)庫(kù)前,要把需要操作的數(shù)據(jù)庫(kù)或者表dump出來(lái);
3、使用備份工具:多備份。數(shù)據(jù)自動(dòng)備份,需要時(shí)一鍵恢復(fù)即可。數(shù)據(jù)上傳到多個(gè)云端平臺(tái),丟失風(fēng)險(xiǎn)基本為零
4、需要把bin-log打開(kāi),就算沒(méi)有做上面的兩步,也可以通過(guò)日志恢復(fù)數(shù)據(jù)
|
|