mysql恢復(fù)delete數(shù)據(jù) MySQL的數(shù)據(jù)如何恢復(fù)到任意時(shí)間點(diǎn)?
MySQL的數(shù)據(jù)如何恢復(fù)到任意時(shí)間點(diǎn)?要將數(shù)據(jù)庫(kù)還原到以前的時(shí)間點(diǎn),必須有日志備份。下面是使用日志的示例:create database db1 go alter database db1 set r
MySQL的數(shù)據(jù)如何恢復(fù)到任意時(shí)間點(diǎn)?
要將數(shù)據(jù)庫(kù)還原到以前的時(shí)間點(diǎn),必須有日志備份。下面是使用日志的示例:create database db1 go alter database db1 set recovery full go backup database db1 to disk=“db1。Bak“with init--首先,對(duì)數(shù)據(jù)庫(kù)進(jìn)行完全備份,否則checkpoint將暫存非活動(dòng)日志(類(lèi)似于簡(jiǎn)單恢復(fù))go use db1 go create table t(col int)go--一些數(shù)據(jù)庫(kù)操作--一些數(shù)據(jù)庫(kù)操作--一些數(shù)據(jù)庫(kù)操作--假設(shè)您在15:15之后刪除此表。如果要恢復(fù)此表,則需要備份數(shù)據(jù)庫(kù)的日志。使用master go backup log db1 to disk=”db1。TRN“使用norecovery go---然后執(zhí)行以下操作:使用master go從disk=”db1還原數(shù)據(jù)庫(kù)db1。Bak“with norecovery go restore log db1 from disk=”db1。TRN “with recovery,stopat=”2009-03-08 15:15:00 “--此時(shí),數(shù)據(jù)庫(kù)恢復(fù)到15:15的狀態(tài)。
MySQL主從復(fù)制能完美解決數(shù)據(jù)庫(kù)的單點(diǎn)問(wèn)題嗎?為什么?
使用主從時(shí),實(shí)際上放棄了強(qiáng)一致性。由于受試者只問(wèn)一個(gè)問(wèn)題,我們不考慮訪問(wèn)次數(shù)的問(wèn)題。換句話說(shuō),假設(shè)主從復(fù)制可以完全支持當(dāng)前的系統(tǒng)訪問(wèn)。)
通用數(shù)據(jù)庫(kù)主從設(shè)置:
主數(shù)據(jù)庫(kù)可以讀寫(xiě)
即系統(tǒng)可以同時(shí)從主數(shù)據(jù)庫(kù)和從數(shù)據(jù)庫(kù)獲取數(shù)據(jù)。數(shù)據(jù)寫(xiě)入主庫(kù)后,會(huì)自動(dòng)同步到從庫(kù)。
這構(gòu)成了一個(gè)簡(jiǎn)單的分布式系統(tǒng)。根據(jù)cap定理,三個(gè)中只能選擇一個(gè)。如果一致性很強(qiáng),則不會(huì)提高系統(tǒng)的可用性,反而會(huì)降低系統(tǒng)的可用性。
讓我們看看上面的主從結(jié)構(gòu)中可能出現(xiàn)什么問(wèn)題:
系統(tǒng)寫(xiě)入主數(shù)據(jù)庫(kù),然后從主數(shù)據(jù)庫(kù)進(jìn)行查詢。這是一個(gè)單點(diǎn)數(shù)據(jù)庫(kù),沒(méi)有影響。
-如果數(shù)據(jù)已同步,則沒(méi)有影響
-如果數(shù)據(jù)未同步,則會(huì)查詢舊數(shù)據(jù)
-如果同步有問(wèn)題,則會(huì)斷開(kāi)主設(shè)備和從設(shè)備的連接。如果系統(tǒng)無(wú)法感知它,那么查詢可能總是舊數(shù)據(jù)。這里我們需要監(jiān)視同步。當(dāng)同步出現(xiàn)問(wèn)題時(shí),我們應(yīng)該及時(shí)處理
掛斷庫(kù)。主數(shù)據(jù)不能與從數(shù)據(jù)同步。如果主從交換機(jī)是自動(dòng)的,單點(diǎn)故障的概率只會(huì)降低50%(如果主數(shù)據(jù)庫(kù)或備用數(shù)據(jù)庫(kù)發(fā)生故障,并且沒(méi)有人恢復(fù))。