innodb結構數據庫損壞恢復方法

發佈時間:2017-03-07

通過備份盤數據恢複數據庫,適合普通人員操作

先按https://www.west.cn/faq/list.asp?unid=753 掛載備份盤

一.windows系統

    找到mysql安裝目錄,

    如果是我司建站助手安裝,則在D:\soft_php_package\mysql\,將data目錄改名,然後將備份盤中相同路徑下data複製回來,

    再啓動,如果仍無法啓動,可嘗試備份一份整個mysql目錄以後,覆蓋整個mysql目錄;

    如果是自己安裝的mysql,則找到安裝目錄下my.ini文件,用記事本打開該文件,如

    basedir="D:/phpStudy/MySQL/"   #這裡是mysql安裝路徑

    datadir="D:/phpStudy/MySQL/data/" #這裡是mysql數據存放路徑

    將data目錄改名,然後將備份盤中相同路徑下data複製回來,如果仍無法啓動,可嘗試覆蓋整個mysql目錄;

    如果仍無法啓動恢復,可備份數據,重裝mysql

二.linux系統   

    如果是我司默認安裝wdcp環境,則在/home/wddata/var,將var目錄改名,然後將備份盤中相同路徑下var複製回來,

    cd /home/wddata/

    mv var  var.bak

    cp -rfpu /home1/wddata/var /home/wddata/

    service mysqld start

    如果是自己安裝的mysql,則找到my.cnf文件,如

    basedir="/etc/mysql/"   #這裡是mysql安裝路徑

    datadir="/etc/mysql/var/" #這裡是mysql數據存放路徑

    將var目錄改名,然後將備份盤中相同路徑下var複製回來,如果仍無法啓動,可嘗試覆蓋整個mysql目錄

    如果仍無法啓動恢復,備份好現有mysqldata目錄,再重裝mysql

強烈推薦按以上方案恢復









以下是專業技術人員重建innodb數據庫過程參考,非專業人士請勿嘗試,可能會造成數據丟失!!!

跳過恢復模式,導出數據重建數據庫

    找到mysql安裝目錄下的my.ini文件,在[mysqld]下一行中添加

    innodb_force_recovery = 6

    innodb_purge_threads = 0

    保存後再啓動mysql

在D:\mysql\建立一個文件,命名db.txt,用記事本打開

將使用innodb結構的數據庫名寫入,一行一個

再在桌面新建立一個文件,命名dump.bat,用記事本打開複製以下代碼

echo off

cls

md D:\deleted\sql

for /f %%i in (D:\mysql\db.txt) do (

echo %%i

mysqldump -uroot -p密碼 -Q -a --opt --default-character-set=gbk %%i>D:\deleted\sql\%%i-gbk.sql

mysqldump -uroot -p密碼 -Q -a --opt --default-character-set=utf8 %%i>D:\deleted\sql\%%i-utf8.sql

)

其中'密碼'改為實際的mysql密碼

停止服務,去掉my.ini的innodb_force_recovery參數,將data目錄下的ibdata和ib_logfile剪切到其他位置,啓動服務

導入數據

新建im.bat

echo off

cls

md D:\deleted\bkup

for /f %%i in (D:\mysql\db.txt) do (

echo %%i

move /y d:\mysql\data\%%i D:\deleted\bkup\

mysql -uroot -p密碼 -e "create database %%i;"

mysql -uroot -p密碼 --default-character-set=utf8 %%i<D:\deleted\sql\%%i-utf8.sql

)

其中'密碼'改為實際的mysql密碼

linux同理修改my.cnf參數後,導出數據,將var目錄下的ibdata和ib_logfile剪切到其他位置,啓動服務

導入數據