萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MySQL 物理文件架構全景圖:從紅綠燈日誌到 IBD 表空間的完整清單

日誌文件體系

文件啟用參數作用位置/命名
錯誤日誌--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 Log5.6+ innodb_undo_tablespacesMVCC 版本鏈、事務回滾獨立表空間或系統表空間

更新日誌:MySQL 5.0 已廢棄,完全由 Binlog 替代。

數據文件體系

後綴引擎內容備註
.frm所有表結構元數據(列定義、索引、約束)8.0 合併至數據字典,文件消失
.MYDMyISAM數據文件
.MYIMyISAM索引文件
.ibdInnoDB獨享表空間:數據 + 索引innodb_file_per_table=ON 時生成
ibdata*InnoDB共享表空間:系統表空間、Undo、臨時表等innodb_file_per_table=OFF 時表數據也在這裡
.sdiInnoDB 8.0+序列化字典信息(Serialised Dictionary Information)每表一個,用於無 .frm 環境下的元數據讀取

復制相關文件(Slave 端)

文件內容關鍵字段
master.infoMaster 連接信息、當前讀取 Binlog 位點Master_Host, Master_User, Master_Log_File, Read_Master_Log_Pos
relay-log.infoSQL 線程已執行到的 Master 位點Relay_Master_Log_File, Exec_Master_Log_Pos
mysql-relay-bin.* + .indexIO 線程從 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 Logmysqlbinlog --read-from-remote-servercp增量備份核心
配置/權限/元數據mysqldump --no-data / SHOW CREATEcp版本控制管理

總結

MySQL 物理文件分為「日誌系」(順序寫、崩潰恢復核心)、「數據系」(隨機讀寫、存儲引擎差異大)、「復制系」(Slave 端狀態持久化)。熟悉每類文件的角色、命名規則、備份方式,是 DBA 從「會用」進階到「懂原理、能架構」的必修課。

copyright © 萬盛學電腦網 all rights reserved