服務器在前段時間因為硬件問題徹底崩潰了,得到網絡中心的支持將服務器遷移到學校剛剛搭建起來的虛擬化平台上,系統和asp+access數據庫的網站因為保存在非系統盤所以在第一時間恢復,但是因為MySQL數據庫是安裝在系統裡面,所以數據就一直沒有空去弄它。今天花了一天時間,重裝了N次MySQL Server終於成功將數據庫恢復,但是權限問題尚未解決。先記下數據庫恢復過程,權限問題稍候再說。
一開始的做法是在原有系統中將原先保存Data的ibdata1覆蓋到新裝的MySQL Data目錄裡面,但是文件雖然變大,但是數據庫並沒有回來。參考了文章很多資料後,發現ibdata1只是保存了數據庫中是數據,但是數據庫的表結構是保存在另外的地方。
重新接上原來的硬盤,在C:\Documents and Settings\All Users\Application Data\MySQL\MySQL Server 5.1\data裡面終於找到了原來的數據庫結構和表結構文件,還是使用覆蓋數據庫文件的方式,先停用MySQL,再覆蓋,但是之後就再也啟動不了MySQL服務了。
然後嘗試重裝的時候將數據庫的保存目錄指定到拷貝出來的Date目錄,安裝後提示原來有數據文件,但是安裝最後的配置就在一直沒有成功,換了幾次MySQL的版本也不行。
最後采取安裝後選擇性覆蓋,將後期自己建立的表文件和ibdata1覆蓋後啟動成功,終於將數據庫文件恢復,但是權限部分沒有了。只能自己重建。比較麻煩···
最後介紹一下MySQL的備份與恢復
MySql的備份可用命令mysqldump ,使用方法很簡單,
mysqldump -u 用戶名 -p (密碼) -h 主機名 數據庫名 >路徑/備份名.bak;
mysqldump -u 用戶名 -p (密碼) -h 主機名 數據庫名 >路徑/備份名.bak;
同時也可以是用mysqldump到處數據結構(tablename.sql)和數據(tablename.txt)
mysqldump -u 用戶名 -p (密碼) -h 主機名 數據庫名 tablename1 tablename2 > back.sql
或
mysqldump -u 用戶名 -p (密碼) -h 主機名 數據庫名 --tab 路徑 --opt 數據庫名.
mysqldump -u 用戶名 -p (密碼) -h 主機名 數據庫名 tablename1 tablename2 > back.sql或mysqldump -u 用戶名 -p (密碼) -h 主機名 數據庫名 --tab 路徑 --opt 數據庫名.
例如:
mysqldump -u pivot -p pivot news > c:\news.sql
mysqldump -u pivot -p pivot news > c:\news.sql
那麼還原可以mysql命令:
mysql -u 用戶名 -p (密碼) -h 主機名 --one-database 還原數據庫名 < 路徑/備份名.bak,--one-database是指定要恢復的數據庫.
1
mysql -u 用戶名 -p (密碼) -h 主機名 --one-database 還原數據庫名 < 路徑/備份名.bak,--one-database是指定要恢復的數據庫.
例如:
mysql -u pivot -p pivot news < c:\news.sql
1
mysql -u pivot -p pivot news < c:\news.sql
(括號表示密碼不先輸入,在連接時在Enter password;若密碼為空可缺省-p參數)