標籤:告訴 誤刪除 -- 誤刪 hang 存在 分享 alt 方便
【windows】環境下mysql的資料備份以及恢複
無論是剛剛入行的‘猿友’還是入行很久的‘老猿’,我相信都會遇到過因為各種原因(很多情況下是自己誤刪了資料庫)的操作.drop databases xxxxx
而誤刪了線上項目的資料庫是一件很恐怖的事情,那麼如果大家遇到這種情況怎麼辦呢?首先不要著急(我感覺說了也白說-,-),先看一看自己的mysql是否開啟了binlog日誌功能,如果沒有???game over !!!
關於查看binlog日誌有沒有開啟,請到自己的Mysql檔案下找my.ini中的[mysqld],裡面是否有log-bin=mysql-bin,有則表示開啟了(沒有開啟的趕緊開啟,不然都沒後悔藥吃!!!)
為了方便新手閱讀,在此我從資料備份開始講。
【資料備份】
- 首先我們先建一個測試用的資料庫drop_test
- 並在drop_test中建立一張test表,表內容隨意(反正是測試用的)
- 資料內容如下
在確保了binlog開啟了之後,在mysql檔案夾中的bin檔案夾中有一個mysqldump.exe,這個就是常用的Database Backup工具之一,我們執行此程式,備份我們的drop_test資料庫
執行語句:mysqldump -uroot -p -B -F -R -x --master-data=2 drop_test > d:\backups\drop_test_bac.sql;這是完全備份,用於備份此語句執行時(到這時刻為止)的資料庫資料
輸入密碼後,即可在D:\backups目錄下看到檔案drop_test_bac.sql
我們可以開啟看看,發現裡面存了資料庫drop_test的表資訊以及表內容
假如我們在備份之後,又操作了資料庫(往drop_test資料庫中增加了內容)
而這個時候,我們誤刪除了資料庫drop_test(悲劇的執行了drop database drop_test),導致資料庫drop_test沒了!!!
這個時候不要慌,首先我們先從備份的資料庫檔案中還原資料
執行語句:mysql -uroot -p > d:\backups\drop_test_bac.sql
執行結束後我們將發現drop_test資料庫又回來了,並且裡面的表還在,資料.....嗯?怎麼只恢複了一部分資料?還有一部分呢?????
我們在做備份資料庫之後,又新增了一些資料,假如在新增之後我們刪除了資料庫,那麼新增的那部分怎麼辦?不要急,首先我們開啟drop_test_bac.sql,找到類似-- CHANGE MASTER TO MASTER_LOG_FILE=‘mysql-bin.000009‘, MASTER_LOG_POS=107;這句話,這句話告訴我們,將那些新增的資料儲存在了mysql-bin.000009的第107節點裡,接下來我們就要考慮從這裡恢複我們的資料。
這個mysql-bin.000009在我們的mysql檔案夾中的data檔案夾裡(我的是phpstudy環境,預設在這裡),我們先拷貝到d:\backups檔案夾裡
通過mysqlbinlog命令將mysql-bin.000009二進位檔案轉成sql檔案(剛開始我的mysql的bin檔案夾裡沒有mysqlbinlog工具,我是到網上下了一個,如果沒有的同學可以問我要,也可以自己網上找)
執行語句:mysqlbinlog -d drop_test d:\backups\mysql-bin.000009 > d:\backups\009bac_bin.sql
執行結束後我們在d:\backups檔案夾裡會產生009bac_bin.sql檔案
將此檔案裡的drop操作刪除(不然恢複了又直接刪除了-,-)
接下來就是恢複此檔案資料了
執行語句:mysql -uroot -p > d:\backups\009bac_bin.sql
資料恢複完成!!!
PS:第一次發微博,有些地方寫得不好的地方歡迎大家指出!!!
【windows】環境下mysql的資料備份以及恢複