91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL誤刪物理文件的恢復(Linux)

發布時間:2020-08-15 17:59:46 來源:ITPUB博客 閱讀:190 作者:pooldb 欄目:MySQL數據庫
以前拜讀過一位Oracle大大的文章,結果自己在測試環境也遇到了,順手記下來
Oracle大大的文章鏈接http://blog.itpub.net/17203031/viewspace-1077770/
-------------------------------------------------------------------------------------正文------------------------------------------------------------------------------------
背景:DB的測試環境誤刪MySQL日志文件ib_logfile1
環境:MySQL5.6.27
問題原因的分析:手滑了_(:з」∠)_
總體思路:
最重要的是冷靜,不要亂搞...
Linux下的文件描述符的介紹,直接摘錄Oracle大大的描述
MySQL誤刪物理文件的恢復(Linux)

所以最重要的一點:冷靜,不要去隨便重啟數據庫,保持當時候的操作現場;

現場還原:測試環境中模擬誤刪ib_logfile1
MySQL誤刪物理文件的恢復(Linux)

然后發現數據依然在正常運行,可以插入新的數據
MySQL誤刪物理文件的恢復(Linux)
結合之前對Linux的文件描述符的介紹,可以確定這個文件還是存在的~
那么動手找一下,先確定MySQL的進程ID:ps -ef | grep mysql
然后在/proc/fd里面找到這個PID對應的文件夾(文件名=pid)看一下里面的內容
MySQL誤刪物理文件的恢復(Linux)
可以看到文件還在,但是被標記成了deleted,既然文件還在,那就好辦了~
趕緊把文件拷貝回去?  No!
由于日志也有buffer(innodb_log_buffer_size),拷回去之前,要確認這些日志都刷新到了磁盤,同時也要確認在拷貝的時候,沒有新的事務在操作MySQL數據庫;
所以先執行flush tables with readlock;再執行flush logs;
MySQL誤刪物理文件的恢復(Linux)
然后看一下新生成的幾個binlog,舊一點的binlog里面能看到“誤刪”ib_logfile1之后執行的語句
MySQL誤刪物理文件的恢復(Linux)
在新生成的binlog里面則什么都沒有
MySQL誤刪物理文件的恢復(Linux)
確認了舊的redo log已經寫入到磁盤,也沒有新的事務在執行,那么再把“誤刪”的文件拷貝回去;
MySQL誤刪物理文件的恢復(Linux)

錯誤的場景:
假設最初出現問題的時候,關閉了數據庫,最終這個log沒了,那么在啟動MySQL的時候就會有如下的報錯
MySQL誤刪物理文件的恢復(Linux)
或者是內容有問題,(這里偷懶了,忘了在刷buffer前拷貝一個錯誤的logfile1,姑且就拿logfile0來湊數了,當成一個錯誤的logfile....._(:з」∠)_...本質上應該是一樣的效果)
MySQL誤刪物理文件的恢復(Linux)
那么把之前處理好以后拷貝出來的logfile拷回去看看,修改文件的所有者和權限,啟動MySQL之后,噫!報錯了~ MySQL誤刪物理文件的恢復(Linux)
對比下之前拷貝一個內容有問題的logfile的錯誤信息(模擬操作:沒有把log buffer的數據刷新到磁盤,結果拷貝出來的logfile不對)
MySQL誤刪物理文件的恢復(Linux)
數據文件和正確處理的logfile的LSN是恰好對應上的;
為什么明明這個ib_logfile明明有問題,mysql還啟動了?
看看兩次替換日志文件后, mysql輸出的信息(上面是沒有刷新buffer的logfile,下面是刷新過buff的)
MySQL誤刪物理文件的恢復(Linux)

MySQL誤刪物理文件的恢復(Linux)
可以看到數據庫根據刷新到磁盤的數據文件的為準,截斷了這些有問題的logfile,然后重新生成了新的logfile的LSN
推測:生成新的logfile的LSN之后,數據文件中的標記位也發生了變更,從3117292814變成了3117292824,這也是為什么第二次拷貝正確的logfile進去之后,還是打印出了錯誤日志;
-------------------------------------------------------------------------------------結束------------------------------------------------------------------------------------
PS:不管是誤刪了數據文件還是日志文件,切記不要關掉數據庫,且恢復的時候一定要確認緩存數據全部刷新到了磁盤~
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宁武县| 兰溪市| 固阳县| 南澳县| 民县| 承德市| 丰原市| 榆林市| 衡东县| 故城县| 来凤县| 容城县| 云梦县| 天全县| 苗栗县| 新河县| 休宁县| 芜湖县| 大悟县| 安陆市| 潢川县| 西昌市| 汕尾市| 汝城县| 长岭县| 永定县| 肃北| 曲麻莱县| 娱乐| 昌吉市| 罗田县| 东港市| 普陀区| 西藏| 焦作市| 台东县| 南漳县| 崇文区| 广昌县| 永寿县| 江华|