需運行網頁設計網頁設計網頁設計多個伺服器的原因有很多,比如上面提到的可繞過最大文件描述符的限制,還有是進行版本測試和提供專用服務等。
運行多個伺服器比運行單個伺服器複雜很多,需注意以下問題:
-
在安裝不同版本的程式時,需分開目錄存放程式和數據目錄。如果同一版本的伺服器軟體,則程式目錄可一樣,但數據目錄則要不同。可用--basedir=dir_name和--datadir=dir_name兩個啟動選項指時這兩個目錄。
-
要為不同的伺服器指定不時的--port=port_name(TCP/IP監聽端口),--socket=file_name(套接字文件名)和--pid-file=file_name(進程ID文件)值。
-
如果激活了日誌功能,就要為不同的伺服器指定不同的日誌文件名。
-
在Windows平台上,被安裝為服務的多個MySQL伺服器必須有不同的服務名。
多伺服器環境下選項文件的配置方法:
-
使用--defaults-file選項指定每個選項文件,這樣,每個伺服器就不會去讀/etc/my.cnf這些配置文件,而會使用你所指定的配置文件。
-
可把一些公共的選項放到/etc/my.cnf文件裡,再用--defaults-extra-file選項指出特定伺服器的特定選項文件。這樣就不用在所有的配置文件時重複公共的選項。
-
用mysql_multi腳本啟動伺服器,它允許我們把所有的選項放到同一個選項文件裡。每一個伺服器對應該文件中的一個選項組。
下面介紹用mysql_multi腳本啟動多伺服器的方法。
-
為每個伺服器編一個編號xxx,對應選項文件的[mysqldxxx]選項組。mysql_multi本身要用到的選項可放到[mysqld_multi]裡。這樣/etc/my.cnf選項配置文件看起來就象下面這樣:
[mysqld001] basedir=/usr/local/mysql/001 datadir=/usr/local/mysql/001/data mysqld=/usr/local/mysql/001/bin/mysqld_safe socket=/usr/local/mysql/001/mysql.sock port=3306 local-infile=1 user=mysqladm log=log log-update=update-log innodb_data_file_path=ibdata1:10M [mysqld002] basedir=/usr/local/mysql/002 datadir=/usr/local/mysql/002/data mysqld=/usr/local/mysql/002/bin/mysqld_safe socket=/usr/local/mysql/002/mysql.sock port=3307 local-infile=1 user=mysqladm log=log log-update=update-log innodb_data_file_path=ibdata1:10M ...
-
配置好選項文件後,就可用以下命令啟動伺服器:
% mysqld_multi --no-log start 001,002 #啟動001和002兩個伺服器,並把啟動資訊發送到控制台,也可用區間的形式給出伺服器編號
用以下命令可查看伺服器狀態:
% mysqld_multi --no-log --user=root --password=password report 001
可用以下命令停止MySQL伺服器:
% mysqld_multi --no-log --user=root --password=password stop 001
-
-
在windows平台下運行多個MySQL伺服器的方式有兩種,一種是運行同一個MySQL程式的兩個實例,一種是運行多個windows服務,下面分別介紹:
-
第一種情況需設置兩個選項文件,指定不同的數據目錄,如:
c:\mysql\my.cnf1 [mysqld] basedir=c:/mysql datedir=c:/mysql/data1 port=3306 c:\mysql\my.cnf2 [mysqld] basedir=c:/mysql datadir=c:/mysql/data2 port=3307
在啟動伺服器時,用--defaults-file選項指出選項文件即可。如:
c:\> mysqld --defaults-file=c:\mysql\my.cnf1 c:\> mysqld --defaults-file=c:\mysql\my.cnf2
-
在MySQL 4.0.2版本開始,可以把MySQL安裝為一個服務,並可指定一個服務名,如:
c:\> mysql-nt --install service_name 在MySQL 4.0.3開始,安裝服務還支持--defaults-file=file_name選項
這樣,我們就可把MySQL安裝為一系列不同的服務,如果不指定service_name,則安裝的服務名默認為MySql,如果指定service_name,則安裝的服務名為指定的service_name,並對應選項文件中的[service_name]選項組。以默認服務名運行的伺服器還支持一個名為MySql的命名管道,而明確給出服務名的伺服器將只監聽TCP/IP連接而不支持命名管道--除非還用socket選項明確指定一個套接字文件。
移除服務需先用mysqladmin shutdown命令停掉伺服器,再執行以下命令:
c:\> mysql-nt --remove #移除默認的服務 c:\> mysql-nt --remove service_name #移除指定服務
-
留言列表