新聞中心
MySQL是一種開源的關(guān)系型數(shù)據(jù)庫,全球范圍內(nèi)廣泛應(yīng)用于各種領(lǐng)域。然而,有時(shí)我們不小心刪除了MySQL數(shù)據(jù)庫,導(dǎo)致數(shù)據(jù)的丟失。這時(shí)需要采取一些措施來恢復(fù)數(shù)據(jù)庫。本文將介紹如何恢復(fù)意外刪除的MySQL數(shù)據(jù)庫。

創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的皋蘭網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
1. 環(huán)境準(zhǔn)備
在恢復(fù)意外刪除的MySQL數(shù)據(jù)庫之前,我們需要先準(zhǔn)備好以下環(huán)境:
1)備份文件:MySQL數(shù)據(jù)庫備份文件是恢復(fù)數(shù)據(jù)庫的重要依據(jù)。如果沒有備份文件,那么數(shù)據(jù)恢復(fù)工作就會(huì)變得更加困難。建議在日常工作中定期備份MySQL數(shù)據(jù)庫。
2)MySQL安裝文件:如果數(shù)據(jù)恢復(fù)需要重新安裝MySQL,那么MySQL安裝文件就是必要的??梢詮腗ySQL官網(wǎng)下載最新的MySQL安裝文件。
3)恢復(fù)工具:有很多恢復(fù)工具可以用來恢復(fù)MySQL數(shù)據(jù)庫,例如MySQLDump、MyISAMCHK和IBDTool等。我們需要根據(jù)實(shí)際情況選擇一個(gè)合適的恢復(fù)工具。
2. 恢復(fù)步驟
接下來,我們將分步驟介紹如何恢復(fù)意外刪除的MySQL數(shù)據(jù)庫。
步驟1:檢查數(shù)據(jù)備份
我們需要檢查備份文件是否存在,并確認(rèn)備份文件的完整性和可用性。如果有多個(gè)備份文件,我們需要選擇最近的備份文件。如果備份文件沒有問題,我們可以繼續(xù)進(jìn)行數(shù)據(jù)恢復(fù)工作。
步驟2:停止MySQL服務(wù)
在進(jìn)行數(shù)據(jù)恢復(fù)之前,我們需要停止MySQL服務(wù)??梢允褂靡韵旅顏硗V筂ySQL服務(wù):
sudo systemctl stop mysql
步驟3:備份MySQL數(shù)據(jù)目錄
在進(jìn)行數(shù)據(jù)恢復(fù)之前,我們需要備份MySQL數(shù)據(jù)目錄,以防止發(fā)生任何意外情況。可以使用以下命令來備份MySQL數(shù)據(jù)目錄:
sudo cp -R /var/lib/mysql /var/lib/mysql.backup
步驟4:刪除原始MySQL數(shù)據(jù)庫
在進(jìn)行數(shù)據(jù)恢復(fù)之前,我們需要?jiǎng)h除原始MySQL數(shù)據(jù)庫,以便重新創(chuàng)建一個(gè)新的MySQL數(shù)據(jù)庫。可以使用以下命令來刪除原始MySQL數(shù)據(jù)庫:
sudo rm -rf /var/lib/mysql/*
步驟5:恢復(fù)MySQL數(shù)據(jù)庫
現(xiàn)在,我們可以開始恢復(fù)MySQL數(shù)據(jù)庫。如果使用MySQLDump恢復(fù)數(shù)據(jù)庫,可以使用以下命令:
mysql -u [username] -p [database_name]
其中,[username]是用戶名,[database_name]是數(shù)據(jù)庫名稱,[backup_file].sql是備份文件的名稱。執(zhí)行該命令后,系統(tǒng)會(huì)提示輸入密碼。請(qǐng)輸入MySQL用戶密碼后,恢復(fù)工作將自動(dòng)進(jìn)行。
如果使用其他恢復(fù)工具,可以參考官方文檔進(jìn)行操作。
步驟6:重新啟動(dòng)MySQL服務(wù)
數(shù)據(jù)恢復(fù)完成后,我們需要重新啟動(dòng)MySQL服務(wù)。可以使用以下命令來啟動(dòng)MySQL服務(wù):
sudo systemctl start mysql
這時(shí),我們可以使用MySQL客戶端查看是否已成功恢復(fù)數(shù)據(jù)庫。如果恢復(fù)成功,我們可以進(jìn)一步感謝數(shù)據(jù)備份工作的重要性,并為未來制定更好的數(shù)據(jù)備份計(jì)劃。
3.
這是一個(gè)簡(jiǎn)單的MySQL數(shù)據(jù)庫恢復(fù)流程。數(shù)據(jù)恢復(fù)過程可能因各種原因而出現(xiàn)意外,但我們可以采取以上步驟來保護(hù)數(shù)據(jù)安全。建議在日常工作中定期備份MySQL數(shù)據(jù)庫,并盡可能使用更多的工具和策略來保護(hù)數(shù)據(jù)。我們也可以將該流程用作參考,根據(jù)實(shí)際情況進(jìn)行優(yōu)化和改進(jìn)。
相關(guān)問題拓展閱讀:
- 怎么備份和還原mysql數(shù)據(jù)庫
怎么備份和還原mysql數(shù)據(jù)庫
MySQL數(shù)據(jù)庫備份與還原
備份和恢復(fù)數(shù)據(jù)
生成SQL腳本戚盯困
在控制臺(tái)使用mysqldump命令可以用來生成指定數(shù)據(jù)庫的腳本文本,但要注意,腳本文本中只包含數(shù)據(jù)庫的內(nèi)容,而不會(huì)存在創(chuàng)建數(shù)據(jù)庫的語句!所則燃以在恢復(fù)數(shù)據(jù)時(shí),還需要自已手動(dòng)創(chuàng)建一個(gè)數(shù)據(jù)庫之后再去恢復(fù)數(shù)據(jù)。
mysqldump –u用戶名 –p密碼 數(shù)據(jù)庫名>生成的腳本文件路徑
現(xiàn)在可以在C盤下找到mydb1.sql文件了!
注意,mysqldump命令是在Windows控制臺(tái)下執(zhí)行,無需登錄mysql?。。?/p>
執(zhí)行SQL腳本
執(zhí)行SQL腳本需要登錄mysql,然后進(jìn)入指定數(shù)據(jù)庫,才可以執(zhí)行SQL腳本?。。?/p>
執(zhí)行SQL腳本不只是用來恢復(fù)數(shù)據(jù)庫,也可以在平時(shí)編寫SQL腳本,然后使用執(zhí)行SQL 腳本來操作數(shù)據(jù)庫!大家都知道,在黑屏下編寫SQL語句時(shí),就算發(fā)現(xiàn)了錯(cuò)誤,可能也不能修改了。所以我建議高念大家使用腳本文件來編寫SQL代碼,然后執(zhí)行之!
SOURCE C:\mydb1.sql
注意,在執(zhí)行腳本時(shí)需要先行核查當(dāng)前數(shù)據(jù)庫中的表是否與腳本文件中的語句有沖突!例如在腳本文件中存在create table a的語句,而當(dāng)前數(shù)據(jù)庫中已經(jīng)存在了a表,那么就會(huì)出錯(cuò)!
還可以通過下面的方式來執(zhí)行腳本文件:
mysql -uroot -p123 mydb1
mysql –u用戶名 –p密碼 數(shù)據(jù)庫
這種方式無需登錄mysql!
備份數(shù)據(jù)庫困稿
使用mysqldump命令備份數(shù)據(jù)含尺棚庫
還原數(shù)據(jù)庫
1、使用mysql命令還原數(shù)據(jù)庫
將談則game_backup.sql 還原至 game 數(shù)據(jù)庫:
2、使用source命令還原數(shù)據(jù)庫
如果數(shù)據(jù)庫過大,建議可以使用source命令
前言
MySQL 5.6引入了GTID,每個(gè)事務(wù)都會(huì)產(chǎn)生一個(gè)GTID,我們可以通過驗(yàn)證主從GTID來驗(yàn)證主從數(shù)據(jù)的一致性。
為了敘述簡(jiǎn)便,定義一個(gè)量ALL_GTID: 表示某個(gè)數(shù)據(jù)庫實(shí)例上 所有存在過的 或 將要存在的事務(wù) 的GTID(包括已經(jīng)被purge掉的事務(wù))。
在討論數(shù)據(jù)庫可用性的場(chǎng)景中, 當(dāng)發(fā)生主備切換時(shí), 需要進(jìn)行數(shù)據(jù)補(bǔ)償。通過比較主備的ALL_GTID,可以確定需要補(bǔ)償多少數(shù)據(jù):
在實(shí)例存活的情況,可以在實(shí)例狀態(tài)中查詢ALL_GTID。
在實(shí)例崩潰的情況,無法在實(shí)例狀態(tài)中查詢ALL_GTID??梢酝ㄟ^查詢BINLOG中的Previous-GTIDs計(jì)算來獲得ALL_GTID。
下面列舉與ALL_GTID相關(guān)的變量。
與ALL_GTID相關(guān)的變量
Previous-GTIDs
Previous-GTIDs格式如下(環(huán)境為MySQL5.7,日志手動(dòng)flush binary logs獲得):
查看新輪轉(zhuǎn)出的BINLOG:
下面為mysql-bin.00001中包含的GTID:
請(qǐng)點(diǎn)擊輸入圖片描述
然后再次flush binary logs:
請(qǐng)點(diǎn)擊輸入圖片描述
mysql-bin.00002中是沒有任何GTID的。
請(qǐng)點(diǎn)擊輸入圖片描述
綜上Previous-GTIDs是本身這個(gè)BINLOG文件前面的所有BINLOG的。
請(qǐng)點(diǎn)擊輸入圖片描述
全局變量中的GTID相關(guān)的變量
請(qǐng)點(diǎn)擊輸入圖片描述
變量解釋:
gtid_executed 代表著server上所有事務(wù)執(zhí)行產(chǎn)生的GTID(包含已經(jīng)被purge的BINLOG中的GTID或者是手動(dòng)set gtid_purged的GTID)。
gtid_purged 代表著已經(jīng)被purge到的GTID。gtid_purged是gtid_executed的子集。
gtid_retrieved 是從機(jī)上relay_log中的GTID。
ALL_GTID 的計(jì)算
了解了GTID相關(guān)的變量之后,可以得到獲得實(shí)例的All_GTID的的方法:
對(duì)象
方法
存活的Master實(shí)例 gtid_executed
存活的Slave實(shí)例 gtid_executed和gtid_retrieved的并集
非存活Master實(shí)例 最后一個(gè)BINLOG文件的Previous-GTIDs + 最后一個(gè)BINLOG文件中所有的GTID
非存活Slave實(shí)例 最后一個(gè)BINLOG文戚虧件的Previous-GTIDs + 最后一個(gè)BINLOG文件中所有的GTID
在獲得非存活實(shí)例中的ALL_GTID時(shí),最后一個(gè)BINLOG文件中的GTID可能不連續(xù)(比如事務(wù)同時(shí)來自于本實(shí)例客戶端和復(fù)制回放),所以需要掃描最后一個(gè)BINLOG文件。
生產(chǎn)中我們使用Xtrabackup來產(chǎn)生一個(gè) 從實(shí)例 的流程如下:
拉取備份,進(jìn)行還原
change master to
set @@global.gtid_purged=’xxx’;
set @@global.gtid_purged=’xxx’; 的影響:
將 從實(shí)例 的ALL_GTID手工置為xxx, 在通過GTID方式建立復(fù)制時(shí)不會(huì)出錯(cuò).
將更新Binlog中記錄的Previous-GTIDs (由于Binlog不可改變, 將產(chǎn)生新的Binlog, 記錄新的Previous-GTIDs).
MySQL 5.7中set gtid_purged的行為變更
問題描述
回顧一下備份恢復(fù)的流歷渣程:
拉取備份,進(jìn)行還原
change master to
set @@global.gtid_purged=’xxx’;
現(xiàn)象: 發(fā)現(xiàn)有一臺(tái)MySQL 5.7的Slave服務(wù)器恢復(fù)后沒有產(chǎn)生 正確的Previous-GTIDs。
分析
分析整個(gè)過程,解決問題高爛神應(yīng)該分階段進(jìn)行手動(dòng)模擬發(fā)現(xiàn)問題。以下為詳細(xì)步驟:
手工還原備份
環(huán)境
BINLOG數(shù)量,Previous-GTIDs狀態(tài)
Xtrabackup 2.4.2 & MySQL 5.6 1,空
Xtrabackup 2.4.2 & MySQL 5.7 1,空
Xtrabackup 2.2.9 & MySQL 5.6 1,空
Xtrabackup 2.2.9 & MySQL 5.7 1,空
可見: 恢復(fù)過程不會(huì)輪轉(zhuǎn)BINLOG。
驗(yàn)證change master和set gtid_purged在不同的MySQL版本中執(zhí)行的差異
環(huán)境
BINLOG數(shù)量,Previous-GTIDs狀態(tài)
change master & MySQL 5.6 1,空
change master & MySQL 5.7 1,空
set gtid_purged & MySQL 5.6 2,正常
set gtid_purged & MySQL 5.7 1,空
可見: 執(zhí)行set gtid_purged時(shí)不同版本的MySQL產(chǎn)生了差異
驗(yàn)證
對(duì)不同版本MySQL單獨(dú)執(zhí)行set @@global.gtid_purged=”;語句。檢查結(jié)果
環(huán)境
進(jìn)行的操作
BINLOG數(shù)量,Previous-GTIDs狀態(tài)
MySQL 5.7 reset master; set @@global.gtid_purged=”; 1,空
MySQL 5.6 reset master; set @@global.gtid_purged=”; 2,正常
結(jié)論
參考:
官方解釋: 在5.7版本中,執(zhí)行SET GTID_PURGED語句后binlog_simple_gtid_recovery會(huì)給GTID_PURGED計(jì)算出一個(gè)錯(cuò)誤的值。
由于5.7中新增了存儲(chǔ)GTID的表。所以5.7版本中set @@global.gtid_purged=”;語句被改成只修改存放GTID的表。
而5.6版本中會(huì)進(jìn)行BINLOG輪轉(zhuǎn)和向Previous_gtids_log_event中添加GTID。如果5.7需要產(chǎn)生和5.6相同結(jié)果的話,可以在SET GTID_PURGED語句后手動(dòng)執(zhí)行flush binary logs語句。
mysql刪除的數(shù)據(jù)庫怎么還原的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于mysql刪除的數(shù)據(jù)庫怎么還原,如何恢復(fù)意外刪除的MySQL數(shù)據(jù)庫?,怎么備份和還原mysql數(shù)據(jù)庫的信息別忘了在本站進(jìn)行查找喔。
成都創(chuàng)新互聯(lián)科技有限公司,是一家專注于互聯(lián)網(wǎng)、IDC服務(wù)、應(yīng)用軟件開發(fā)、網(wǎng)站建設(shè)推廣的公司,為客戶提供互聯(lián)網(wǎng)基礎(chǔ)服務(wù)!
創(chuàng)新互聯(lián)(www.cdcxhl.com)提供簡(jiǎn)單好用,價(jià)格厚道的香港/美國(guó)云服務(wù)器和獨(dú)立服務(wù)器。創(chuàng)新互聯(lián)成都老牌IDC服務(wù)商,專注四川成都IDC機(jī)房服務(wù)器托管/機(jī)柜租用。為您精選優(yōu)質(zhì)idc數(shù)據(jù)中心機(jī)房租用、服務(wù)器托管、機(jī)柜租賃、大帶寬租用,可選線路電信、移動(dòng)、聯(lián)通等。
本文標(biāo)題:如何恢復(fù)意外刪除的MySQL數(shù)據(jù)庫?(mysql刪除的數(shù)據(jù)庫怎么還原)
網(wǎng)址分享:http://m.5511xx.com/article/djgdhjo.html


咨詢
建站咨詢
