4、MySQL冷备份所需物理文件
冷備份主要通過復(fù)制相關(guān)數(shù)據(jù)文件來實現(xiàn),下面主要介紹 MyISAM 和 InnoDB 存儲引擎需要備份什么物理文件。
MyISAM存儲引擎
MyISAM 存儲引擎的所有數(shù)據(jù)默認存放在 C:/ProgramData/MySQL/MySQL Server 5.7/Data 路徑下,即配置文件(my.ini或my.cnf)中 datadir 參數(shù)的值。
實際上不管我們使用的是 MyISAM 存儲引擎還是其他存儲引擎,每一個數(shù)據(jù)庫都會在“datadir”目錄下有一個文件夾(包括系統(tǒng)信息的數(shù)據(jù)庫 mysql 也是一樣)。
在各個數(shù)據(jù)庫中每一個 MyISAM 存儲引擎的表都會有 3 個文件存在,即記錄表結(jié)構(gòu)元數(shù)據(jù)的“.frm”文件,存儲表數(shù)據(jù)的“.MYD”文件,存儲索引數(shù)據(jù)的“.MYI”文件。
MyISAM 屬于非事務(wù)性存儲引擎,它沒有自己的日志文件。所以 MyISAM 存儲引擎的物理備份除了需要備份 MySQL 系統(tǒng)共有的物理文件之外,還需要備份上面的 3 種文件。
Innodb 存儲引擎
Innodb 存儲引擎屬于事務(wù)性存儲引擎,存放數(shù)據(jù)的位置也可能與 MyISAM 存儲引擎有所不同,這主要取決于 Innodb 的相關(guān)配置。
指定 Innodb 存放數(shù)據(jù)和日志文件的位置參數(shù)為 innodb_data_home_dir、innodb_data_file_path 和 innodb_log_group_home_dir。以及決定 Innodb 的表空間存儲方式參數(shù) innodb_file_per_table,它決定 Innodb 是以共享表空間存放數(shù)據(jù)還是以獨享表空間方式存儲數(shù)據(jù)。
如果使用的是共享表空間的存儲方式,那么需要備份 innodb_data_home_dir 和 innodb_data_file_path 參數(shù)設(shè)定的所有數(shù)據(jù)文件,以及 datadir 中相應(yīng)數(shù)據(jù)庫目錄下的所有 Innodb 存儲引擎表的 .frm 文件。
而如果使用的是獨享表空間,那么除了需要備份上面共享表空間方式所需要備份的所有文件之外,我們還需要備份 datadir 中相應(yīng)數(shù)據(jù)庫目錄下的所有 .idb 文件,該文件中存放的才是獨享表空間方式下 Innodb 存儲引擎表的數(shù)據(jù)。
那么既然是使用獨享表空間,為什么還要備份共享表空間“才使用到”的數(shù)據(jù)文件呢?其實這是很多人的一個共性誤區(qū),以為使用獨享表空間的時候 Innodb 的所有信息就都存放在“datadir”所設(shè)定數(shù)據(jù)庫目錄下的“.ibd”文件中。實際上并不是這樣的,“.ibd”文件中所存放的僅僅只是我們的表數(shù)據(jù)而已。
大家都很清楚,Innodb 是事務(wù)性存儲引擎,它需要 undo 和 redo 信息,而不管 Innodb 使用的是共享還是獨享表空間的方式來存儲數(shù)據(jù)。與事務(wù)相關(guān)的 undo 信息以及其他的一些元數(shù)據(jù)信息,都是存放在 innodb_data_home_dir 和 innodb_data_file_path 這兩個參數(shù)所設(shè)定的數(shù)據(jù)文件中的。所以要想 Innodb 的物理備份有效,就必須備份 innodb_data_home_dir 和 innodb_data_file_path 參數(shù)所設(shè)定的數(shù)據(jù)文件。
此外,除了上面所說的數(shù)據(jù)文件之外,Innodb 還有存放自己的 redo 信息和相關(guān)事務(wù)信息的日志文件在 innodb_log_group_home_dir 參數(shù)所設(shè)定的位置。所以要想 Innodb 物理備份能夠有效使用,我們還必須要備份 innodb_log_group_home_dir 參數(shù)所設(shè)定的位置的所有日志文件。
總結(jié)
以上是生活随笔為你收集整理的4、MySQL冷备份所需物理文件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 10、查看索引(SHOW INDEX)
- 下一篇: 4、MySQL修改存储过程(ALTER