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

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


咨詢
建站咨詢
