日誌文件體系
| 文件 | 啟用參數 | 作用 | 位置/命名 |
| 錯誤日誌 | --log-error[=file] | 啟動/關閉、嚴重錯誤、警告 | 數據目錄 hostname.err |
| 二進制日誌 | --log-bin[=base_name] | 記錄所有數據變更,用於復制、PITR | 數據目錄 mysql-bin.000001 + .index |
| 通用查詢日誌 | --log[=file] | 記錄所有連接/查詢(含 SELECT),量大影響性能 | 數據目錄 hostname.log |
| 慢查詢日誌 | --slow-query-log[=file] --long_query_time=N | 記錄超時查詢,調優核心依據 | 數據目錄 hostname-slow.log |
| InnoDB Redo Log | 固有(innodb_log_file_*) | WAL 機制,保證事務持久化、崩潰恢復 | 數據目錄 ib_logfile0, ib_logfile1... |
| InnoDB Undo Log | 5.6+ innodb_undo_tablespaces | MVCC 版本鏈、事務回滾 | 獨立表空間或系統表空間 |
更新日誌:MySQL 5.0 已廢棄,完全由 Binlog 替代。
數據文件體系
| 後綴 | 引擎 | 內容 | 備註 |
.frm | 所有 | 表結構元數據(列定義、索引、約束) | 8.0 合併至數據字典,文件消失 |
.MYD | MyISAM | 數據文件 | |
.MYI | MyISAM | 索引文件 | |
.ibd | InnoDB | 獨享表空間:數據 + 索引 | innodb_file_per_table=ON 時生成 |
ibdata* | InnoDB | 共享表空間:系統表空間、Undo、臨時表等 | innodb_file_per_table=OFF 時表數據也在這裡 |
.sdi | InnoDB 8.0+ | 序列化字典信息(Serialised Dictionary Information) | 每表一個,用於無 .frm 環境下的元數據讀取 |
復制相關文件(Slave 端)
| 文件 | 內容 | 關鍵字段 |
master.info | Master 連接信息、當前讀取 Binlog 位點 | Master_Host, Master_User, Master_Log_File, Read_Master_Log_Pos |
relay-log.info | SQL 線程已執行到的 Master 位點 | Relay_Master_Log_File, Exec_Master_Log_Pos |
mysql-relay-bin.* + .index | IO 線程從 Master 拉取的 Binlog 本地副本 | SQL 線程由此讀取並重放 |
Crash-Safe 關鍵:master_info_repository=TABLE、relay_log_info_repository=TABLE、relay_log_recovery=ON,將上述文件遷移到 InnoDB 表,獲得事務性保護。
其他核心文件
my.cnf / my.ini:全局配置,Linux 典型路徑 /etc/my.cnf、/etc/mysql/my.cnf、~/.my.cnf。
pid-file:進程 ID,datadir/hostname.pid,用於啟停腳本識別進程。
socket:Unix Domain Socket 文件,/tmp/mysql.sock 或 /var/lib/mysql/mysql.sock,本地連接優先使用。
auto.cnf:server_uuid 持久化存儲,GTID 必備。
文件級備份策略對照
| 文件類型 | 熱備份工具 | 冷備份 | 備註 |
InnoDB 數據/索引 (.ibd/ibdata) | xtrabackup, mariabackup | 停庫 tar | 需保留 Redo Log 配合 Prepare 階段 |
MyISAM (.MYD/.MYI) | mysqlhotcopy (舊) | 停庫 tar / cp | 表級鎖,熱備困難 |
| Binlog / Relay Log | mysqlbinlog --read-from-remote-server | cp | 增量備份核心 |
| 配置/權限/元數據 | mysqldump --no-data / SHOW CREATE | cp | 版本控制管理 |
總結
MySQL 物理文件分為「日誌系」(順序寫、崩潰恢復核心)、「數據系」(隨機讀寫、存儲引擎差異大)、「復制系」(Slave 端狀態持久化)。熟悉每類文件的角色、命名規則、備份方式,是 DBA 從「會用」進階到「懂原理、能架構」的必修課。