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

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

  • 在安裝不同版本的程式時,需分開目錄存放程式和數據目錄。如果同一版本的伺服器軟體,則程式目錄可一樣,但數據目錄則要不同。可用--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腳本啟動多伺服器的方法。

    1. 為每個伺服器編一個編號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
      
      ...
      
    2. 配置好選項文件後,就可用以下命令啟動伺服器:

      % 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    #移除指定服務
arrow
arrow
    全站熱搜

    dettori 發表在 痞客邦 留言(0) 人氣()