資料檔案
在MySQL中每一個資料庫都會在定義好(或者預設)的資料目錄下存在一個以資料庫名字命名的檔案夾,用來存放該資料庫中各種表資料檔案。
不同的MySQL存儲引擎有各自不同的資料檔案,存放位置也有差別。
多數存儲引擎的資料檔案都存放在和MyISAM資料檔案位置相同的目錄下,但是每個資料檔案的擴充名卻各不一樣。如MyISAM用“.MYD”作為擴充名,Innodb用“.ibd”,Archive用“.arc”,CSV用“.csv”,等等。
1、“.frm”檔案 與表相關的中繼資料(meta)資訊都存放在“.frm”檔案中,包括表結構的定義資訊等。不論是什麼存儲引擎,每一個表都會有一個以表名命名的“.frm”檔案。所有的“.frm”檔案都存放在所屬資料庫的檔案夾下面。
2、“.MYD”檔案“ .MYD”檔案是MyISAM存儲引擎專用,存放MyISAM表的資料。
每一個MyISAM表都會有一個“.MYD”檔案與之對應,同樣存放于所屬資料庫的檔案夾下,和“.frm”檔案在一起。
3、“.MYI”檔案 “.MYI”檔案也是專屬于MyISAM存儲引擎的,主要存放MyISAM表的索引相關資訊。對于MyISAM存儲來說,可以被cache的内容主要就是來源于“.MYI”檔案中。每一個MyISAM表對應一個“.MYI”檔案,存放于位置和“.frm”以及“.MYD”一樣。
4、“.ibd”檔案和ibdata檔案 這兩種檔案都是存放Innodb資料的檔案,之是以有兩種檔案來存放Innodb的資料(包括索引),是因為 Innodb 的資料存儲方式能夠通過配置來決定是使用共享表空間存放存儲資料,還是獨享表空間存放存儲資料。
獨享表空間存儲方式
獨享表空間存儲方式使用“.ibd”檔案來存放資料,且每個表一個“.ibd”檔案,檔案存放在和MyISAM資料相同的位置。
共享存儲表空間方式
如果選用共享存儲表空間來存放資料,則會使用 ibdata 檔案來存放,所有表共同使用一個(或者多個,可自行配置)ibdata檔案。
ibdata檔案可以通過 innodb_data_home_dir 和 innodb_data_file_path 兩個參數共同配置組成,innodb_data_home_dir配置資料存放的總目錄,而innodb_data_file_path配置每一個檔案的名稱。
當然,也可以不配置 innodb_data_home_dir 而直接在 innodb_data_file_path 參數配置的時候使用絕對路徑來完成配置。
innodb_data_file_path 中可以一次配置多個 ibdata 檔案。檔案可以是指定大小,也可以是自動擴充的,但是Innodb限制了僅僅隻有最後一個ibdata檔案能夠配置成自動擴充類型。
當我們需要添加新的ibdata檔案的時候,隻能添加在innodb_data_file_path配置的最後,而且必須重新開機MySQL才能完成ibdata的添加工作。
Replication 主從複制的相關檔案
1、master.info檔案
master.info 檔案存在于 Slave(從機)端的資料目錄下,裡面存放了該Slave的Master端的相關資訊,包括Master的主機位址,連接配接使用者,連接配接密碼,連接配接端口,目前日志位置,已經讀取到的日志位置等資訊。
2、relaylog 和 relaylogindex
mysql-relay-bin.xxxxxn 檔案用于存放Slave 端的 I/O 線程從Master端所讀取到的BinaryLog資訊,
然後由Slave端的SQL線程從該relaylog中讀取并解析相應的日志資訊,轉化成Master所執行的SQL語句,然後在Slave端應用。
mysql-relay-bin.index檔案的功能類似于mysql-bin.index,同樣是記錄日志的存放位置的絕對路徑,隻不過他所記錄的不是BinaryLog,而是RelayLog。
3、relay-log.info檔案
類似于master.info,它存放通過 Slave 的I/O線程寫入到本地的relaylog的相關資訊。供Slave端的SQL線程以及某些管理操作随時能夠擷取目前複制的相關資訊。
其他檔案
1、system config file
MySQL的系統配置檔案一般都是“my.cnf”,Unix/Linux下預設存放在"/etc"目錄下,Windows環境一般存放在“c:/windows”目錄下面。
“my.cnf”檔案中包含多種參數選項組(group),每一種參數組都通過中括号給定了固定的組名,如“[mysqld]”組中包括了mysqld服務啟動時候的初始化參數,“[client]”組中包含着用戶端工具程式可以讀取的參數,此外還有其他針對于各個用戶端軟體的特定參數組,如mysql程式使用的“[mysql]”,mysqlchk使用的“[mysqlchk]”,等等。
2、pid file
pidfile是mysqld應用程式在Unix/Linux環境下的一個程序檔案,和許多其他Unix/Linux服務端程式一樣,存放着自己的程序id。
3、socket file
socket檔案也是在Unix/Linux環境下才有的,使用者在Unix/Linux環境下用戶端連接配接可以不通過TCP/IP網絡而直接使用Unix Socket來連接配接 MySQL。