如果在MySQL數(shù)據(jù)庫(kù)中,未開(kāi)啟binlog的情況下,發(fā)生了表數(shù)據(jù)的誤刪、誤更等情況,那么怎樣才能恢復(fù)表呢?
以下是具體的操作步驟:
1.使用show databases命令查看要恢復(fù)的數(shù)據(jù)庫(kù)名稱,例如test_db。 2.進(jìn)入該數(shù)據(jù)庫(kù):use test_db; 3.創(chuàng)建一張臨時(shí)表,用于恢復(fù)數(shù)據(jù):create table tmp_table select * from original_table where 1=2; 4.查看刪除的表數(shù)據(jù),獲取被刪的那些行的所有信息:select * from mysql庫(kù)名稱.binlog文件名稱 where 查詢條件 limit 執(zhí)行的次數(shù)。 例如,如果最后一次刪除或更新執(zhí)行語(yǔ)句的時(shí)候是在binlog文件中的位置131(可以通過(guò)show binlog events in 'binlog文件名稱';命令來(lái)查看),則查詢語(yǔ)句為:select * from mysql-bin.000131 where 查詢條件 limit 執(zhí)行的次數(shù)。 5.將查出來(lái)的行導(dǎo)入到臨時(shí)表tmp_table中:insert into tmp_table select * from mysql-bin.000131 where 查詢條件 limit 執(zhí)行的次數(shù)。 6.從臨時(shí)表中將行重新導(dǎo)入到原始表中:insert into original_table select * from tmp_table;
需要注意的是,此方法僅適用于未開(kāi)啟binlog的情況,如果開(kāi)啟了binlog,則可使用“binlog備份+反查binlog”等方式來(lái)進(jìn)行數(shù)據(jù)恢復(fù)。