在Unix中運行多個服務器最容易的方法是使用不同的TCP/IP端口s和Unix套接字文件編譯,因此每個實例在不同的網絡接口偵聽。另外,每個安裝應在不同的基礎目錄中編譯,那將自動為你的每個服務器產生使用不同的編譯進來的數據目錄、日志文件和PID文件位置。
假設一個現有的4.1.8版本服務器配置為默認TCP/IP端口號(3306)和Unix套接字文件(/tmp/mysql.sock)。要想配置一個新的5.1.2-alpha版的服務器來使用不同的操作參數,使用一個configure命令,大概象這樣使用:
shell> ./configure --with-tcp-port=port_number
--with-unix-socket-path=file_name
--prefix=/usr/local/mysql-5.1.2-alpha
這里,port_number和file_name必須不同于默認TCP/IP端口號和Unix套接字文件路徑名,并且--prefix值應指定一個不同于現有MySQL安裝目錄的安裝目錄。
如果你有一個MySQL服務器正偵聽一個給定的端口號,你可以使用下面的命令來找出針對一些重要配置變量它使用了那些操作參數,包括基礎目錄和Unix套接字文件名:
shell> mysqladmin --host=host_name --port=port_number variables
通過該命令顯示的信息,當配置其它服務器時,你可以告訴服務器該選項沒有使用的值。
請注意,如果你指定localhost作為一個主機名,mysqladmin默認使用Unix套接字文件連接,而不是TCP/IP。從 MySQL 4.1開始,通過--protocol= TCP | SOCKET | PIPE | MEMORY}選項,你可以顯示地指定連接協議。
如果只是用一個不同的Unix套接字文件和TCP/IP端口號啟動,不必編譯新的MySQL服務器。還可以在運行時指定這些值。這樣做的一個方法是使用命令行選項:
shell> mysqld_safe --socket=file_name --port=port_number
要啟動第二個服務器,提供不同的--socket和--port選項值,并且傳遞一個--datadir=path選項給mysqld_safe,以便服務器使用一個不同的數據目錄。
達到相似效果的另一個方法是使用環境變量來設置 Unix套接字文件名和TCP/IP端口號:
shell> MYSQL_UNIX_PORT=/tmp/mysqld-new.sock
shell> MYSQL_TCP_PORT=3307
shell> export MYSQL_UNIX_PORT MYSQL_TCP_PORT
shell> mysql_install_db --user=mysql
shell> mysqld_safe --datadir=/path/to/datadir &
這是一個快速啟動第二個服務器以用于測試的方法。該方法的最大好處是環境變量設定值適用于你從相同的shell調用的任何客戶端程序。因而,那些客戶端連接自動指向第二個服務器!
附錄F:環境變量包括你可以使用的影響mysqld的其它環境變量列表。
對于自動服務器啟動,對于每個服務器,機器引導時執行的啟動腳本應執行下面的命令,每個命令用一個相應的選項文件路徑:
mysqld_safe --defaults-file=path
每個選項文件應包含一個給定服務器特定的選項值。
在Unix中,mysqld_multi腳本是啟動多個服務器的另一個方法。參見5.1.5節,“mysqld_multi:管理多個MySQL服務器的程序”。