DBA 必須精確掌握 datadir 位置。本文提供 6 種確定方法:mysqladmin variables、ps 進程檢視、Makefile 配置、find 搜尋 .frm、Windows 管道連線、多實例區分技巧。
mysqladmin variables | grep datadir
# 或指定連線參數
mysqladmin -h host -u root -p variables
mysqladmin --port=3306 --socket=/tmp/mysql.sock variables
輸出範例:datadir = /usr/local/var/ (Linux) / c:\mysql\data\ (Windows)。
# BSD 風格
ps axww | grep mysql
# System V 風格
ps -ef | grep mysqld
# 尋找 --datadir=/path 參數
優點:多實例一眼看清各自 datadir;缺點:需登入主機、啟動參數未明確指定時無輸出。
localstatedir (非 datadir) 為編譯時預設資料目錄。注意:NFS 共享原始碼跨主機編譯時,反映的是**最後編譯主機**路徑,不一定是當前主機。
find / -name "*.frm" -print
任何 MySQL 安裝必有 .frm,反向追蹤可定位 datadir。
mysqladmin --pipe --socket=pipe_name variables
適用於啟用 Named Pipe 的 Windows 服務。
mysqladmin --host=remote_host -u root -p variables
| 安裝方式 | 預設 datadir |
|---|---|
| 原始碼編譯 | /usr/local/var |
| RPM 套件 | /var/lib/mysql |
| 二進位套件 | /usr/local/mysql/data |
| Windows 安裝包 | C:\ProgramData\MySQL\MySQL Server X.Y\Data |