從概念上講,大多數關系數據庫系統是相似的:它們有一系列數據庫組成,每個數據庫包含一系列數據庫表,但每個系統有各自組織其管理的數據方式,MySQL也不例外。
缺省地,所有由MySQL服務器mysqld管理的數據存儲在一個稱為MySQL數據目錄的地方,所有數據庫都存放在哪兒,也包括提供服務器操作信息的狀態文件。如果你對一個MySQL安裝執行管理任務,你應該熟知數據目錄的布局及用途。
本文介紹下列專題:
如何確定數據目錄的位置。
服務器如何組織並提供對數據庫和它管理的表的訪問。
在哪裡找到由服務器生成的狀態文件記憶它們包含什麼內容。
如何改變缺省地點或數據目錄或單獨數據庫的組織結構。
1、數據目錄的位置
一個缺省數據目錄被編譯進了服務器,如果你從一個源代碼分發安裝MySQL,典型的缺省目錄為/usr/local/var,如果從RPM文件安裝則為/var/lib/mysql,如果從一個二進制分發安裝則是/usr/local/MySQL/data。
在你啟動服務器,通過使用一個--datadir=/path/to/dir選項可以明確指定數據目錄位置。如果你想把數據目錄置於其它缺省位置外的某處,這很有用。
作為一名MySQL管理員,你應該知道你的數據目錄在哪裡。如果你運行多個服務器,你應該是到所有數據目錄在哪裡,但是如果你不知道確切的位置,由多種方法找到它:
使用MySQLadmin variables從你的服務器直接獲得數據目錄路徑名。查找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 -