人工誤刪除innodb ibdata資料檔案,如何恢復
1.用sysbench模擬資料寫入
sysbench --test=oltp --mysql-table-engine=innodb --oltp-table-size=1000000 --max-requests=10000 \
--num-threads=100 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=admin --mysql-password=Dmjxjbgc6u \
--mysql-db=test --max-time=600 --mysql-socket=/tmp/mysql3306.sock prepare
2.用rm -f ib*刪除資料檔案和重做日誌檔案
恢復工作:
a 查到mysqld的pid
[[email protected] binlog]$ netstat -nltp|grep mysqld
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp 0 0 :::3306 :::* LISTEN 18401/mysqld
這裡18401
2.利用程序pid檢視對應的檔案描述符
[[email protected] binlog]$ ll /proc/18401/fd|egrep 'ib_|ibdata'
lrwx------ 1 mysql mysql 64 8月 11 10:33 10 -> /mysql/server/data/ib_logfile1
lrwx------ 1 mysql mysql 64 8月 11 10:33 11 -> /mysql/server/data/ib_logfile2
lrwx------ 1 mysql mysql 64 8月 11 10:33 4 -> /mysql/server/data/ibdata1
lrwx------ 1 mysql mysql 64 8月 11 10:33 9 -> /mysql/server/data/ib_logfile0
上面的10、11、4和9就是我們要恢復的檔案
3、關閉前端業務或執行flush tables with read lock; 不讓有資料寫入
4、驗證有沒有資料寫入
a.先輸入下面命令,讓髒頁儘快寫入到磁盤裡
set global innodb_max_dirty_pages_ptc=0;
b.檢視binlog日誌寫入情況,確保file和position沒有變化 show master status;
c.最後檢視innodb狀態資訊,確保髒頁已刷入到磁碟中
show engine inndodb status\G
TRANSACTIONS
...........
trx id counter A21837
Purge don for trx's n:o<A21837 undo n:o<0
##確保後臺purge程序把undo log全部清除掉,事務ID要一致
INSERT BUFFER AND ADAPTIVE HASH INDEX
Ibuf:size 1,free kust keb 65,seg size67,0 merges
##插入buffer合併插入快取等於1
LOG
Log sequence number xxxx
Log flushed up to xxxx
Last checkpoint at xxx
##確保這3個值不在變化
BUFFER POOL AND MEMORY
............
Modified db pages 0
##確保髒頁數量為0
ROW OPERATIONS
..................
0.00 inserts/s,0.00 updates/s,0.00 deletes/s,0.00 reads/s
#確保插入、更新、刪除為0
5.恢復操作
[[email protected] binlog]$ ll /proc/18401/fd|egrep 'ib_|ibdata'
lrwx------ 1 mysql mysql 64 8月 11 10:33 10 -> /mysql/server/data/ib_logfile1
lrwx------ 1 mysql mysql 64 8月 11 10:33 11 -> /mysql/server/data/ib_logfile2
lrwx------ 1 mysql mysql 64 8月 11 10:33 4 -> /mysql/server/data/ibdata1
lrwx------ 1 mysql mysql 64 8月 11 10:33 9 -> /mysql/server/data/ib_logfile0
將上面檔案複製並改名:
cp 10 /mysql/server/data/ib_logfile1
cp 11 /mysql/server/data/ib_logfile2
cp 4 /mysql/server/data/ibdata1
cp 9 /mysql/server/data/ib_logfile0
授權:
cd /mysql/server/data
chown -R mysql:dba ib*
最後重啟mysql
相關推薦
人工誤刪除innodb ibdata資料檔案,如何恢復
1.用sysbench模擬資料寫入sysbench --test=oltp --mysql-table-engine=innodb --oltp-table-size=1000000 --max-requests=10000 \ --num-threads=100 --my
0929誤刪除innodb ibdata數據文件
-i serve sta slow 再次 warn ads 查看 操作 今天在群裏看到有人說不熟悉innodb把ibdata(數據文件)和ib_logfile(事務日誌)文件誤刪除了。不知道怎麽解決。當時我也不知道怎麽辦。後來查閱相關資料。終找到解決方法。其實恢復也挺簡單的
MFC下對檔案及資料夾的操作(複製、剪下、刪除、建立資料夾,寫檔案)
1 void CFileOperationDlg::OnButtonCopy() 2 { 3 // TODO: Add your control notification handler code here 4 UpdateData(TRUE); 5 CString m_
linux誤刪除 dev 下特殊檔案怎麼辦
若不小心誤刪除了 /dev/null 這樣的特殊檔案,或者chroot到其他目錄需要手工建立 /dev/null 怎麼辦呢? 我們可以用 mknod 來重新建立 sudo /bin/mknod -m 0666 /dev/null c 1 3
IO流讀取資料檔案,將資料寫入資料庫,並記錄資料匯入日誌
流程分析: 資料型別: ROUTE_ID,LXBM,ROAD_NAME,SRC_LON,SRC_LAT,DEST_LON,DEST_LAT 10000,G50,滬渝高速,115.8605349,30.08934467,115.5437817,30.08898601 10001,G
伺服器誤刪除虛擬機器資料恢復成功
一、伺服器資料恢復描述 需要進行資料恢復的伺服器採用Linux作業系統、EXT4檔案系統。由於實習生操作失誤將伺服器上的KVM虛擬機器刪除了3臺。該伺服器上每臺虛擬機器包含一個qcow2格式的磁碟檔案,和一個大小約為1.2T的raw格式的磁碟檔案,主要需恢復raw格式的磁碟檔案。 二、
MongoDB匯入大的json、csv資料檔案,匯入不完全的解決方法
轉載文章:轉自:點選開啟“https://blog.csdn.net/qq_33206732/article/details/78788483#commentsedit” 昨天,做了一個東西,就是把生產上的mongodb資料使用mongoexport匯出了一個.json檔案用於本地做分析使用,裡
rac遷移ocr,votedisk,引數檔案,資料檔案,控制檔案,密碼檔案,redo,undo,temp,asm磁碟
概述:資料庫沒有開啟歸檔,當前環境12.1。votedg(normal)遷移到dg_vote(external),把votedg下的磁碟新增到dg_vote中,並幹掉votedg 因為只建立了votedg磁碟組,cdb,pdb也建立在上面,過程還是比較複雜,因為資料庫很多檔案都放在voted
誤清空回收站的檔案,也可以找回來嗎?
相信大家的windows系統的回收站都是放置於系統盤的吧,回收站的檔案過多會影響我們系統盤的使用的,所有大多是人都有清除回收站資料的習慣,但是總會遇到想要找回的時候呀。**superrecovery**的誤清空回收站資料恢復功能對資料進行恢復處理。【當然,超級資料恢復軟體的誤清空回收站資料恢
ZT:mysql資料庫誤刪除後的資料恢復操作說明
在日常運維工作中,對於mysql資料庫的備份是至關重要的!資料庫對於網站的重要性使得我們對mysql資料的管理不容有失! 然後,是人總難免會犯錯誤,說不定哪天大腦短路了來個誤操作把資料庫給刪除了,怎麼辦??? 下面,就mysql資料庫誤刪除後的恢復方案進行說明。
工作記錄:處理閃燈資料檔案,需要將10進位制轉為3位十六進位制
Vixen生成的.csv檔案,需要把裡面的資料轉為3位的16進位制。自己寫了一個程式來處理,在此記錄一下。 平臺:Qt Creator /*********************** * Name : main.cpp * Author : Lon * Date
linux誤刪資料檔案後恢復
--------------建立測試表 [[email protected] ~]$ sqlplus / as sysdba SQL>create user test identified by test default tablespace users;
linux平臺通過lsof命令恢復被誤刪的oracle資料檔案
背景:測試環境suse12作業系統,開發人員誤刪了/home/oracle下面的資料檔案 oracle狀態看起來一切正常,但資料檔案已經被rm掉。 恢復方法:通過lsof命令找到被刪除的資料檔案,拷貝出來
jdk8刪除非空資料夾,拷貝自StackOverflow
import java.io.File; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.Comparator
如何恢復DB2中誤刪除表的資料
1. 首先資料庫要可以前滾恢復(資料庫配置引數logretain或userexit開啟)。 db2 connect to dbname db2 update db cfg using logretain on db2 backup db dbname (當開啟歸檔日誌後,該資料庫會處於rollforward
使用logmnr方法找回被誤刪除Oracle的資料的指令碼
俗話說,常在河邊走,哪有不溼鞋的。作為一個經常與資料庫打交道的程式設計師,偶爾不小心誤刪除或誤操作的資料也是在所難免的。如果是Oracle資料庫,這裡給您介紹一種從日誌中找回資料的辦法,下面這個地址是我以前曾經做過的一個指令碼,在plsql的command中執行,供您參考
誤刪ORACLE的DBF檔案,導致無法啟動ORACLE。
微博:https://weibo.com/6274976536/profile?rightmod=1&wvr=6&mod=personinfo&is_all=1 錯誤:ORA-01033: ORACLE initialization or shutd
IMP非DBA使用者匯出的dmp資料檔案,提示需要DBA
【問題背景】: DMP資料庫檔案在匯入時,提示“IMP-00013只有 DBA 才能匯入由其他 DBA 匯出的檔案”,在跟資料提供方確認是用的非DBA使用者匯出的,而且fromuser,touser的設定正確。 雖然使用者可以通過DBA臨時授權能
Linux 平臺下 誤刪 oracle 資料檔案的恢復方法
1 問題描述 之前寫過一篇刪除oracle home目錄的blog,參考: 本篇是這邊的引深,本來應該是年前整理的,拖到年後了。 模擬現狀: 資料庫在正常執行,誤操作,直接rm 掉了資料檔案。 測試環境: [[email protec
c# 刪除程式佔用的檔案,強力刪除檔案,徹底刪除檔案,解除檔案佔用
c# 刪除程式佔用的檔案,清理刪除檔案,徹底刪除檔案,解除檔案佔用 檔案開啟時,以共享讀寫模式開啟 FileStream inputStream = new FileStream(name, FileMode.Open, FileAccess.Read, FileSha