4、MySQL冷备份所需物理文件
冷備份主要通過復制相關數據文件來實現,下面主要介紹 MyISAM 和 InnoDB 存儲引擎需要備份什么物理文件。
MyISAM存儲引擎
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 存儲引擎
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冷备份所需物理文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 10、查看索引(SHOW INDEX)
- 下一篇: 4、MySQL修改存储过程(ALTER