4 MySQL冷備份所需物理檔案

2021-10-24 19:07:14 字數 1574 閱讀 6390

冷備份主要通過複製相關資料檔案來實現,下面主要介紹 myisam 和 innodb 儲存引擎需要備份什麼物理檔案。

myisam 儲存引擎的所有資料預設存放在c:/programdata/mysql/mysql server 5.7/data路徑下,即配置檔案(my.ini或my.cnf)中 datadir 引數的值。

實際上不管我們使用的是 myisam 儲存引擎還是其他儲存引擎,每乙個資料庫都會在「datadir」目錄下有乙個資料夾(包括系統資訊的資料庫 mysql 也是一樣)。

在各個資料庫中每乙個 myisam 儲存引擎的表都會有 3 個檔案存在,即記錄表結構元資料的「.frm」檔案,儲存表資料的「.myd」檔案,儲存索引資料的「.myi」檔案。

myisam 屬於非事務性儲存引擎,它沒有自己的日誌檔案。所以 myisam 儲存引擎的物理備份除了需要備份 mysql 系統共有的物理檔案之外,還需要備份上面的 3 種檔案。

innodb 儲存引擎屬於事務性儲存引擎,存放資料的位置也可能與 myisam 儲存引擎有所不同,這主要取決於 innodb 的相關配置。

指定 innodb 存放資料和日誌檔案的位置引數為 innodb_data_home_dir、innodb_data_file_path 和 innodb_log_group_home_dir。以及決定 innodb 的表空間儲存方式引數 innodb_file_per_table,它決定 innodb 是以共享表空間存放資料還是以獨享表空間方式儲存資料。

如果使用的是共享表空間的儲存方式,那麼需要備份 innodb_data_home_dir 和 innodb_data_file_path 引數設定的所有資料檔案,以及 datadir 中相應資料庫目錄下的所有 innodb 儲存引擎表的 .frm 檔案。

而如果使用的是獨享表空間,那麼除了需要備份上面共享表空間方式所需要備份的所有檔案之外,我們還需要備份 datadir 中相應資料庫目錄下的所有 .idb 檔案,該檔案中存放的才是獨享表空間方式下 innodb 儲存引擎表的資料。

那麼既然是使用獨享表空間,為什麼還要備份共享表空間「才使用到」的資料檔案呢?其實這是很多人的乙個共性誤區,以為使用獨享表空間的時候 innodb 的所有資訊就都存放在「datadir」所設定資料庫目錄下的「.ibd」檔案中。實際上並不是這樣的,「.ibd」檔案中所存放的僅僅只是我們的表資料而已。

大家都很清楚,innodb 是事務性儲存引擎,它需要 undo 和 redo 資訊,而不管 innodb 使用的是共享還是獨享表空間的方式來儲存資料。與事務相關的 undo 資訊以及其他的一些元資料資訊,都是存放在 innodb_data_home_dir 和 innodb_data_file_path 這兩個引數所設定的資料檔案中的。所以要想 innodb 的物理備份有效,就必須備份 innodb_data_home_dir 和 innodb_data_file_path 引數所設定的資料檔案。

此外,除了上面所說的資料檔案之外,innodb 還有存放自己的 redo 資訊和相關事務資訊的日誌檔案在 innodb_log_group_home_dir 引數所設定的位置。所以要想 innodb 物理備份能夠有效使用,我們還必須要備份 innodb_log_group_home_dir 引數所設定的位置的所有日誌檔案。

4 MySQL儲存引擎

檢視當前mysql提供的儲存引擎 檢視當前mysql預設的儲存引擎 1 innodb儲存引擎 innodb是mysql的預設事務型引擎,它被設計用來處理大量的短期 short lived 事務。除非有非常特別的原因需要使用其他的儲存引擎,否則應該優先考慮innodb引擎。2 myisam儲存引擎 m...

mysql冷恢復的方法 MYSQL冷備份 恢復

mysql冷備份恢復 1.show variables like data 檢視datadir目錄,這就是所有資料的備份目錄,好像只有innodb的可以直接覆蓋備份 2.停掉mysql服務,然後整個目錄打包 3.到另一台win電腦上,同樣的,找到那台電腦的data目錄,停掉mysql服務,然後覆蓋,...

4 MySQL基礎之常用函式

測試字串函式 char length 得到字串的字元數 select char length abc length 返回字串的長度 select length abc concat s1,s2,s3 將字串合併成乙個字串 select concat a b c 如果字串中包含null,返回拼接結果就...