MySQL數據目錄是MySQL數據庫的重要部分,如何確定MySQL數據目錄的位置是每一個DBA都需要掌握的知識,下面就讓我們來一起了解一下確定MySQL數據目錄的位置的方法。
一個缺省MySQL數據目錄被編譯進了服務器,如果你從一個源代碼分發安裝MySQL,典型的缺省目錄為/usr/local/var,如果從RPM文件安裝則為/var/lib/mysql,如果從一個二進制分發安裝則是/usr/local/mysql/data。
在你啟動服務器,通過使用一個--datadir=/path/to/dir選項可以明確指定MySQL數據目錄位置。如果你想把數據目錄置於其它缺省位置外的某處,這很有用。
作為一名MySQL管理員,你應該知道你的MySQL數據目錄在哪裡。如果你運行多個服務器,你應該是到所有數據目錄在哪裡,但是如果你不知道確切的位置,由多種方法找到它:
使用mysqladmin variables從你的服務器直接獲得MySQL數據目錄路徑名。查找datadir變量的值,在Unix上,其輸出類似於:
%mysqladmin variables
- +----------------------+----------------------+
- | variable_name | Value |
- +----------------------+----------------------+
- | back_log | 5 |
- | connect_timeout | 5 |
- | basedir | /var/local/ |
- | datadir | /usr/local/var/ |
- ....
在Windows上,輸出可能看上去像這樣:
- c:\mysqladmin variables
- +----------------------+----------------------+
- | variable_name | Value |
- +----------------------+----------------------+
- | back_log | 5 |
- | connect_timeout | 5 |
- | basedir | c:\mysql\ |
- | datadir | c:\mysql\data\ |
- ....
如果你有多個服務器在運行,它們將在不同的TCP/IP端口或套接字上監聽,通過提供連接服務器正在監聽的端口或套接字的--port或--socket選項,你可以輪流獲得它們每一個的數據目錄信息:
- %msqladmin --port=port_name variables
- %mysqladmin --socket=/path/to/socket variables
mysqladmin命令可運行在任何你能從其連接服務器的主機上,如果你想在一個遠程主機連接服務器,使用一個--host=host_name選項:
- %mysqladmin --host=host_name variables
在Windows上,你可以通過使用--pipe強制一個命令管道連接和--socket=pipe_name指定管道名來連接監聽一個命令管道的NT服務器:
- c:\mysqladmin --pipe --socket=pipe_name variables
你可以使用ps命令查看任何正在運行mysqld 進程的命令行。
試一下下列命令之一並尋找--datadir:
- %ps axww | grep mysql BSD風格
- %ps -ef | grep mysqld System V風格
如果你的系統運行多個服務器,ps命令可能特別有用,因為你能馬上發現多個MySQL數據目錄位置,缺點是必須在服務器上運行,而且可能沒有有用的信息產生,除非在mysqld命令行上明確指定了--datadir選項。
如果MySQL是從一個源代碼分發安裝的,你可以檢查其配置信息確定MySQL數據目錄位置。例如,位置可從頂級Makefile中獲得,但是注意,位置是Makefile中的localstatedir值,不是datadir,而且,如果分發位於一個NFS掛載的文件系統並用來為多個主機構建MySQL,配置信息反映了分發被最新構建的主機,這可能不能提供你感興趣的主機的數據目錄信息。
如果上述方式失敗,你可以用find尋找數據庫文件,下列命令尋找“.frm”文件,它是任何MySQL安裝的一部分:
- % find / -name ".frm" -print
在下文各例中,用DATADIR表示MySQL數據目錄位置。
檢查被破壞的MySQL數據文件的方法
MySQL修改表結構語句介紹
MySQL修改表結構中對索引的操作
10大常用MySQL命令行
通過索引優化MySQL語句的實例