需運行多個服務器的原因有很多,比如上面提到的可繞過最大文件描述符的限制,還有是進行版本測試和提供專用服務等。
本文由網頁教學網(http://www.webjx.com)整理發布!轉載請注明出處!
運行多個服務器比運行單個服務器復雜很多,需注意以下問題:
在安裝不同版本的程序時,需分開目錄存放程序和數據目錄。如果同一版本的服務器軟件,則程序目錄可一樣,但數據目錄則要不同。可用--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 #移除指定服務