當前位置:首頁 » 數據倉庫 » mysql找回資料庫
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

mysql找回資料庫

發布時間: 2022-12-23 04:43:50

Ⅰ mysql卸載後怎麼找回原來建的資料庫

每個 DBA 是不是都有過刪庫的經歷?刪庫了沒有備份怎麼辦?備份恢復後無法啟動服務什麼情況?表定義損壞數據無法讀取怎麼辦?

我曾遇到某初創互聯網企業,因維護人員不規范的備份恢復操作,導致系統表空間文件被初始化,上萬張表無法讀取,花了數小時才搶救回來。

當你發現數據無法讀取時,也許並非數據丟失了,可能是 DBMS 找不到描述數據的信息。


背景

先來了解下幾張關鍵的 InnoDB 數據字典表,它們保存了部分表定義信息,在我們恢復表結構時需要用到。

SYS_TABLES 描述 InnoDB 表信息CREATE TABLE `SYS_TABLES` (`NAME` varchar(255) NOT NULL DEFAULT '', 表名`ID` bigint(20) unsigned NOT NULL DEFAULT '0', 表id`N_COLS` int(10) DEFAULT NULL,`TYPE` int(10) unsigned DEFAULT NULL,`MIX_ID` bigint(20) unsigned DEFAULT NULL,`MIX_LEN` int(10) unsigned DEFAULT NULL,`CLUSTER_NAME` varchar(255) DEFAULT NULL,`SPACE` int(10) unsigned DEFAULT NULL, 表空間idPRIMARY KEY (`NAME`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;SYS_INDEXES 描述 InnoDB 索引信息CREATE TABLE `SYS_INDEXES` ( `TABLE_ID` bigint(20) unsigned NOT NULL DEFAULT '0', 與sys_tables的id對應 `ID` bigint(20) unsigned NOT NULL DEFAULT '0', 索引id `NAME` varchar(120) DEFAULT NULL, 索引名稱 `N_FIELDS` int(10) unsigned DEFAULT NULL, 索引包含欄位的個數 `TYPE` int(10) unsigned DEFAULT NULL, `SPACE` int(10) unsigned DEFAULT NULL, 存儲索引的表空間id `PAGE_NO` int(10) unsigned DEFAULT NULL, 索引的root page id PRIMARY KEY (`TABLE_ID`,`ID`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;SYS_COLUMNS 描述 InnoDB 表的欄位信息CREATE TABLE `SYS_COLUMNS` ( `TABLE_ID` bigint(20) unsigned NOT NULL, 與sys_tables的id對應 `POS` int(10) unsigned NOT NULL, 欄位相對位置 `NAME` varchar(255) DEFAULT NULL, 欄位名稱 `MTYPE` int(10) unsigned DEFAULT NULL, 欄位編碼 `PRTYPE` int(10) unsigned DEFAULT NULL, 欄位校驗類型 `LEN` int(10) unsigned DEFAULT NULL, 欄位位元組長度 `PREC` int(10) unsigned DEFAULT NULL, 欄位精度 PRIMARY KEY (`TABLE_ID`,`POS`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;SYS_FIELDS 描述全部索引的欄位列CREATE TABLE `SYS_FIELDS` ( `INDEX_ID` bigint(20) unsigned NOT NULL, `POS` int(10) unsigned NOT NULL, `COL_NAME` varchar(255) DEFAULT NULL, PRIMARY KEY (`INDEX_ID`,`POS`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;./storage/innobase/include/dict0boot.h 文件定義了每個字典表的 index id,對應 id 的 page 中存儲著字典表的數據。

Ⅱ mysql資料庫不小心還原了怎麼辦

mysql資料庫不小心還原了需要按照以下步驟恢復。

1、先確認MYSQL有沒有啟用bin日誌,就是看下mysql.ini(my.cnf)里的log-bin=mysql-bin,可以自定義一個目錄和前綴名,比如/data/log/mylog這樣。

2、然後在資料庫文件存放的data目錄就能看到mysql-bin.00000x這樣的文件,這就是二進制日誌了,可以導出成txt格式的,裡面其實就是對資料庫的各種操作SQL語句。

3、導出txt文件:

E:wampinmysqlmysql5.6.12in>mysqlbinlog --database=testdatabase E:wampinmysqlmysql5.6.12datamysql-bin.000312 > C:\test1.txt

這是WINDOWS下的導出,linux也是類似的。

  • database=資料庫名

  • 從最早的日誌還始還原

  • linux下可以很方便的mysql-bin.000*

  • 可以加參數開始時間和結束時間,就是你執行那條SQL語句的時間

  • start-datetime="2014-12-04 11:25:56" --stop-datetime="2014-12-04 13:23:50"

4、恢復數據:

E:wampinmysqlmysql5.6.12in>mysqlbinlog --database=yundongchao E:wampinmysqlmysql5.6.12datamysql-bin.000179 | mysql -u root -p

------------------------------------------------

Ⅲ mysql資料庫刪除了怎麼恢復

常見的情況:
1、如完全丟失資料庫文件,用一般數據恢復方式不能恢復2、表被刪除,甚至被重寫,錶行被刪除3、索引錯誤,或者IAM斷裂4、資料庫大面損壞,可以指定任意表或者欄位提取數據5、系統表損壞甚至完全損壞,可以提取指定數據

Oracle資料庫恢復


1、undo,systen表空間損壞的恢復2、誤delete數據的恢復,誤刪除表空間drop,truncate表的恢復3、各種ora-錯誤的恢
復4、DMP文件不能導入資料庫以及LOB數據恢復等情況5、oracle資料庫中數據文件出現現壞塊情況下的恢復6、oracle資料庫無資料庫文件但
有有日誌的情況下的恢復7、能夠在系統表和空間文件丟失,變成0位元組下完整的恢復數據8、只要沒有覆蓋表空間件,都有信心恢復數據。無論你是什麼系統
(Windows,UNIX)等,無論什麼存儲設備(硬碟,磁碟陣列)


環乙木數據恢復是一家專門做手機數據恢復業務的公司,擁有先進的數據恢復認證設備,使用的幾乎全部是自有技術,對於數據恢復,採用最先進的數據分析和處理
方法,對手機數據丟失的數據恢復成功率在95%以上。如果您已經多方咨詢,別的手機數據恢復公司都告訴您,數據恢復無法實現。我們可以很自信地告訴您,這塊工作是我們的強項。我們可以手機、硬碟、伺服器、U盤、資料庫數據恢復等所有手機數據,且我
們可以為大家提供大量的成功案例以供參考,讓你對我們更具信心。

Ⅳ MYSQL資料庫丟失了數據怎麼恢復

資料庫丟失了最好的恢復方法是從備份中還原文件,資料庫的文件一般都會有備份。如果備份也損壞了,無法進行還原,那就需要使用數據恢復軟體來恢復了。從網上找恢復軟體,然後掃描一下,看是否可以搜索到需要的文件。

Ⅳ 怎麼恢復mysql資料庫怎麼恢復數據

簡單情況下:進入原來mysql安裝路徑下的data文件夾下,找到相應的庫和ibdata1,進行,就可回復原來的數據。
復雜情況下:
從另一台機上把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失效了。

Ⅵ 怎麼通過data來恢復mysql數據

可以嘗試:
1、新建一個一樣名字的資料庫;
2、關掉mysql,把備份的data數據覆蓋進現在mysql的data中
3、啟動mysql進去看看

Ⅶ 怎麼恢復mysql資料庫

簡單情況下:進入原來mysql安裝路徑下的data文件夾下,找到相應的庫和ibdata1,進行,就可回復原來的數據。
復雜情況下:
從另一台機上把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失效了。

Ⅷ 電腦重裝系統後如何恢復Mysql資料庫

1、把原來mysql安裝目錄下的data文件夾拷出來;
2、卸載掉原來的mysql;
3、重新安裝mysql;

4、拷出來的data文件夾里,除了mysql、test子文件夾外的子文件夾,全部都是資料庫