MySQL數(shù)據(jù)目錄的位置
MySQL數(shù)據(jù)目錄是MySQL數(shù)據(jù)庫的重要部分,如何確定MySQL數(shù)據(jù)目錄的位置是每一個DBA都需要掌握的知識,下面就讓我們來一起了解一下確定MySQL數(shù)據(jù)目錄的位置的方法。
一個缺省MySQL數(shù)據(jù)目錄被編譯進(jìn)了服務(wù)器,如果你從一個源代碼分發(fā)安裝MySQL,典型的缺省目錄為/usr/local/var,如果從RPM文件安裝則為/var/lib/mysql,如果從一個二進(jìn)制分發(fā)安裝則是/usr/local/mysql/data。
在你啟動服務(wù)器,通過使用一個--datadir=/path/to/dir選項可以明確指定MySQL數(shù)據(jù)目錄位置。如果你想把數(shù)據(jù)目錄置于其它缺省位置外的某處,這很有用。
作為一名MySQL管理員,你應(yīng)該知道你的MySQL數(shù)據(jù)目錄在哪里。如果你運行多個服務(wù)器,你應(yīng)該是到所有數(shù)據(jù)目錄在哪里,但是如果你不知道確切的位置,由多種方法找到它:
使用mysqladmin variables從你的服務(wù)器直接獲得MySQL數(shù)據(jù)目錄路徑名。查找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\ |
- ....
如果你有多個服務(wù)器在運行,它們將在不同的TCP/IP端口或套接字上監(jiān)聽,通過提供連接服務(wù)器正在監(jiān)聽的端口或套接字的--port或--socket選項,你可以輪流獲得它們每一個的數(shù)據(jù)目錄信息:
- %msqladmin --port=port_name variables
- %mysqladmin --socket=/path/to/socket variables
mysqladmin命令可運行在任何你能從其連接服務(wù)器的主機(jī)上,如果你想在一個遠(yuǎn)程主機(jī)連接服務(wù)器,使用一個--host=host_name選項:
- %mysqladmin --host=host_name variables
在Windows上,你可以通過使用--pipe強(qiáng)制一個命令管道連接和--socket=pipe_name指定管道名來連接監(jiān)聽一個命令管道的NT服務(wù)器:
- c:\mysqladmin --pipe --socket=pipe_name variables
你可以使用ps命令查看任何正在運行mysqld 進(jìn)程的命令行。
試一下下列命令之一并尋找--datadir:
- %ps axww | grep mysql BSD風(fēng)格
- %ps -ef | grep mysqld System V風(fēng)格
如果你的系統(tǒng)運行多個服務(wù)器,ps命令可能特別有用,因為你能馬上發(fā)現(xiàn)多個MySQL數(shù)據(jù)目錄位置,缺點是必須在服務(wù)器上運行,而且可能沒有有用的信息產(chǎn)生,除非在mysqld命令行上明確指定了--datadir選項。
如果MySQL是從一個源代碼分發(fā)安裝的,你可以檢查其配置信息確定MySQL數(shù)據(jù)目錄位置。例如,位置可從***Makefile中獲得,但是注意,位置是Makefile中的localstatedir值,不是datadir,而且,如果分發(fā)位于一個NFS掛載的文件系統(tǒng)并用來為多個主機(jī)構(gòu)建MySQL,配置信息反映了分發(fā)被***構(gòu)建的主機(jī),這可能不能提供你感興趣的主機(jī)的數(shù)據(jù)目錄信息。
如果上述方式失敗,你可以用find尋找數(shù)據(jù)庫文件,下列命令尋找“.frm”文件,它是任何MySQL安裝的一部分:
- % find / -name ".frm" -print
在下文各例中,用DATADIR表示MySQL數(shù)據(jù)目錄位置。
【編輯推薦】