1 找個別的機器安裝個同版本的mysql或從已安裝同版本的其他機器上(非同版本的也可以試下):
成都創新互聯公司云計算的互聯網服務提供商,擁有超過13年的服務器租用、香港機房服務器托管、云服務器、虛擬主機、網站系統開發經驗,已先后獲得國家工業和信息化部頒發的互聯網數據中心業務許可證。專業提供云主機、虛擬主機、域名與空間、VPS主機、云服務器、香港云服務器、免備案服務器等。
拷貝 mysql/data/mysql 目錄到你的mysql/data/ 下吧
2 試著啟動mysql服務,如果能啟動了,理論上應該丟失的只有用戶、授權等一些系統信息,不影響你的使用的數據;
如果不能啟動,看錯誤日志,爭取啟動了。
3 趕緊把數據備份一份出來,重新把所有庫(只是你后來創建的業務相關的庫,不包括mysql庫)都刪了,重新導入一遍。理論上不這樣也可以,但只是非生產重要的環境下。
4 重新做用戶授權。
因為磁盤空間不足,我的一個虛擬機服務器崩潰了。結果數據庫服務器進程無法啟動,數據也就無法導出。只能想辦法從數據庫原始文件 ibdata 和 frm 文件中恢復數據庫。
因為沒有經驗,好不容易才找到了恢復方法。特此記錄,以備后用。
磁盤空間不足之后,mysqld 進程無法啟動,提示“Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)”。這真是讓人無比頭大,數據庫根本連接不上。
目錄 Contents
1. 保存原始數據庫文件
2. 恢復方法
3. 參考資料:
1. 保存原始數據庫文件?
好在數據庫原始文件還在。在我的系統環境和配置情況下,這些文件位于 /var/lib/mysql/ 文件夾下面。假設數據庫名是 test,則這些文件表現為:
--mysql
|--test
|--1.frm
|--2.frm
|...
|--mysql
|...
|--ib_logfile0
|--ib_logfile1
|--ibdata1
|...
這些就是原始數據庫文件,可以用來恢復數據庫。將這些文件額外保存一份,以防萬一。
2. 恢復方法?
我的原始虛擬機完全沒有磁盤空間而無法啟動數據庫服務器進程。雖然試著刪除一些不需要的文件,但是數據庫卻始終無法連接。于是我新建了一個幾乎一樣的虛擬機(當然磁盤加大了),試圖將這些數據庫文件導入并恢復數據庫。
在經歷了很多錯誤之后,終于找到了正確的方法:
安裝完成新服務器之后,通過命令行新建了與原來一樣的數據庫:數據庫名稱、用戶名、密碼都一樣。如果有多個數據庫需要恢復,就都給建好。(跟配置新服務器一樣,參見安裝和配置 MYSQL 數據庫服務器。)
停止 mysqld 進程
service mysqld stop
將備份的原始數據庫文件中的所有 .frm 文件(保持原來的目錄結構)和 ibdata1 文件復制到新服務器的數據庫文件目錄中(如果新服務器操作系統和配置環境一樣,那么目錄結構也一樣),其它文件不要。
使用 -innodb_force_recovery=6參數啟動數據庫服務器進程,這里是
/etc/init.d/mysqld start -defaults-file=/etc/my.cnf -standalone -console -innodb_force_recovery=6
OK,數據庫恢復完成。
1、控制面板里的增加刪除程序內進行刪除
2、刪除MySQL文件夾下的my.ini文件,如果備份好,可以直接將文件夾全部刪除
3、開始-運行- regedit 看看注冊表里這幾個地方刪除沒有
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Eventlog\Application\MySQL 目錄刪除
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\Eventlog\Application\MySQL 目錄刪除
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application\MySQL 目錄刪除(我卸載的時候沒有找到,略過后仍達到完全卸載的目的。)
4、這一條是很關鍵的
C:\Documents and Settings\All Users\Application Data\MySQL
這里還有MySQL的文件,必須要刪除
簡單情況下:進入原來mysql安裝路徑下的data文件夾下,找到相應的庫和ibdata1,進行copy,就可回復原來的數據。
復雜情況下:
從另一臺機上把MySQL數據庫的mysql文件夾拷貝到本地機上,目的是恢復本地機對數據的訪問和操作。經過如下幾種情況的操作。
1. 在本地重裝MySQL(安裝目錄D:\Program Files\MySQL\MySQL Server 5.0),直接把mysql文件夾拷貝至D:\Program Files\MySQL\MySQL Server 5.0\。結果,失敗:數據庫連接錯誤。
2. 卸載后重裝MySQL,將D:\Program Files\MySQL\MySQL Server 5.0\下的數據備份,只把mysql\data文件夾全部內容拷貝到D:\Program Files\MySQL\MySQL Server 5.0\data下。結果,失敗:數據庫連接錯誤。將備份的數據還完覆蓋。結果,失敗,還是連接不上數據庫。
3. 卸載后重裝MySQL,將mysql\data文件夾里的cf1,last文件夾(這兩個是原來MySQL里的數據庫)拷貝進D:\Program Files\MySQL\MySQL Server 5.0\data。連接成功,在Navicat for MySQL里看到數據庫cf1和last,但是不能訪問,因為數據全為零。明白了原來data里以數據庫命名的文件存儲的是數據庫的表結構,不是元數據。下一步,把data文件夾里的ibdata1文件(3.4G大,明顯存儲了元數據)拷貝到D:\Program Files\MySQL\MySQL Server 5.0\data里,代替原來的ibdata1文件。重啟電腦,打開Navicat for MySQL,連接成功,數據可以訪問操作。
至此,操作終于成功。其實當初在那臺機上把數據導出來,而不是現在直接把文件夾mysql復制過來會更容易恢復。但那臺機已經重裝了系統,也就是說MySQL失效了。
1、打開 MySQL 目錄下的 my.ini 文件(默認是在:C:\Program Files (x86)\MySQL\MySQL Server 5.5\my.ini),
在文件的 [mysqld] 下面添加一行“skip-grant-tables”(含義:跳過密碼驗證),保存并關閉文件。
1
1
2、重啟MySQL服務,執行下面命令。
停止命令:net stop mysql;
啟動命令:net start mysql;
1
2
3
1
2
3
(或者可以在我的電腦(右鍵)-管理-服務和應用程序-服務,找到mysql(右鍵)-重啟)
3、輸入命令:mysql -uroot -p;
提示輸入密碼不用管,直接Enter回車即可進入數據庫。
1
1
4、使用mysql數據庫,執行下面命令:
use mysql;
1
1
5、修改root的密碼為123456,執行下面命令:
update mysql.user set authentication_string=password('root') where user='root' ;
1
1
6、打開MySQL目錄下的my.ini文件,刪除里面的“skip-grant-tables”,保存并關閉文件。
7、重啟MySQL服務。
8、在命令行中輸入“mysql -u root -p 123456”,即可成功連接數據庫
如果你要恢復的數據庫是包含授權表的mysql數據庫,您將需要使用--skip贈款-tables選項來運行服務器恢復整個數據庫
- 首先,。否則,服務器會抱怨不能找到授權表。恢復表后,執行mysqladmin沖水privileges告訴服務器裝載授權表,并用它們來啟動。數據庫目錄到其他地方的原始內容
復制。例如,您可以使用它們在以后的事后分析檢查表(驗尸)的崩潰。
酒店與最新的數據庫備份文件重新加載。如果您打算使用mysqldump的所加載的文件,則需要輸入它們作為mysql的。如果您打算使用從數據庫文件直接拷貝(例如,使用tar或CP),它會復制他們直接回數據庫目錄中。然而,在這種情況下,你應該在關閉之前,該服務器復制這些文件,然后重新啟動它。在備份過程中
重做日志,然后查詢更新數據庫表中。對于所有可用的更新日志,你可以使用它作為mysql的輸入。指定--one-database選項,因此MySQL只是要還原的數據庫執行查詢。如果你意識到有必要使用所有的更新日志文件,可以使用包含以下命令日志的目錄:
%LS-TRL更新(0-9)* | xargs的貓| mysql--。一個數據庫DB_NAME
ls命令生成一個單獨的日志文件更新列表,更新日志文件根據服務器(你知道,如果你其中的任何文件,排序順序生成的順序進行排序會發生變化,這將導致在更新日志中以錯誤的順序使用)。有限公司您可能需要使用一些更新日志。例如,如果日志,因為命名update.392備份,pdate.393等產生的,可以在命令重新運行它們:
%的mysql - 一個數據庫DB_NAME 錄入。 392
%的mysql - 一個數據庫DB_NAME updata.393 ...
如果您正在運行的恢復,并打算使用更新日志恢復由于失誤降數據的基礎上,DROPTABLE或DELETE語句和丟失的信息時,一定要在開始更新日志刪除這些語句。
恢復單個表
恢復單個表是非常困難的。如果是的mysqldump備份文件生成的,它只是不包含數據,您需要一個表,你需要提取的相關線路,并利用它們作為mysql的輸入,這部分比較容易。困難的是,提取在該表的更新日志中使用的片段。你會發現:mysql_find_rows工具在這方面有所幫助,它可以提取多行從更新日志查詢。另一種可能性是使用另一臺服務器
恢復整個數據庫,然后將該文件復制到表的原始數據庫。這其實很容易!當文件被復制回數據庫目錄,確保原始數據庫服務器關閉。
分享標題:mysql目錄怎么恢復 mysql恢復命令
本文URL:http://vcdvsql.cn/article32/hehjpc.html
成都網站建設公司_創新互聯,為您提供App設計、電子商務、Google、營銷型網站建設、網站維護、關鍵詞優化
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯