MYSQL教程:運行多個MySQL伺服器

回覆文章
tony
文章: 585
註冊時間: 2012-02-26, 07:04
聯繫:

MYSQL教程:運行多個MySQL伺服器

未閱讀文章 tony »

需運行網頁設計網頁設計網頁設計多個伺服器的原因有很多,比如上面提到的可繞過最大文件描述符的限制,還有是進行版本測試和提供專用服務等。

運行多個伺服器比運行單個伺服器複雜很多,需注意以下問題:

在安裝不同版本的程式時,需分開目錄存放程式和數據目錄。如果同一版本的伺服器軟體,則程式目錄可一樣,但數據目錄則要不同。可用--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 #移除指定服務
回覆文章

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客