mysql
**********************************************************
第一部分, 在一台伺服器構建多mysql 服務.
**********************************************************
一,緒言
在Mysql中有一mysqld_multi命令,可用於在一台物理伺服器運行多個Mysql服務,今天參考一些文檔,親自測試並通過,真高興,現將操作過程共用給大家!
作業系統:Linux 2.6.13 (Slackware),其它版的Linux應該也差不多.
資料庫:Mysql 4.0.17 來源程式安裝(相信最新的5.1.*也差不多,過些天再試試)
規劃:運行4個mysql服務:
假設伺服器名:db-app (IP為192.168.0.100),
假設伺服器名:db-app2 (IP為192.168.0.101),
下文直到第二部分,均為講述db-app中的mysql,
二,準備
用mysql來源程式安裝,假設在安裝時用的configura選擇項氯?
./configure --prefix=/usr/local/mysql --datadir=/usr/local/mysql/data1 --sysconfdir=/etc
備忘:--prefix將MYSQL安裝到/usr/local/mysql,
--datadir將資料庫產生/usr/local/mysql/data1
sysconfdir是指定mysql使用到的my.cnf設定檔的搜尋路徑為/etc
其他mysql安裝過程略.
根據Mysql管理手冊中提到:每個Mysql的服務都可為獨立的,所以它都調用一個my.cnf中各自不同的啟動選項--就是下文中將提到的GNR值,使用不同的連接埠,產生各自的套接檔案,服務的資料庫都是獨立的(更多可查閱mysql官方網站的英文管理手冊).
mysqld_multi是管理多個mysqld的服務進程,這些服務進程程式不同的unix socket或是監聽於不同的連接埠。他可以啟動、停止和監控當前的服務狀態。
----程式在my.cnf(或是在--config-file自訂的設定檔)中搜尋[mysqld#]段,"#"可以是任意的正整數。這個正整數就是在下面提及的段序列,即GNR。段的序號做為mysqld_multi的參數,來區別不同的段,這樣你就可以控制特定mysqld進程的啟動、停止或得到他的報告資訊。這些組裡的參數就像啟動一個mysqld所需要的組的參數一樣。但是,如果使用多服務,必須為每個服務指定一個unix socket或連接埠(摘自http://mifor.4dian.org中的使用mysqld_multi程式管理多個MySQL服務 )。
從上述文字可看到多Mysql服務中最重要的就是my.cnf設定檔了.
現我貼出我的my.cnf檔案.-----------------------
[mysqld_multi]
mysqld = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin
user = mysql (用一個帳號來啟動所有的mysql伺服器,因為是用一相同的帳號。那個麼這帳號必須都是每個mysql服務都要用的帳號,最好是管理帳號,下面的口令與相同)
password = mypaswd
[mysqld1]
port = 3306
socket = /tmp/mysql.sock1
pid-file=/usr/local/mysql/data1/db-app1.pid
log=/usr/local/mysql/data1/db-app.log
datadir = /usr/local/mysql/data
user = mysql
[mysqld2]
port = 3307
socket = /tmp/mysql.sock2
pid-file = /usr/local/mysql/data2/db-app2.pid
datadir = /usr/local/mysql/data2
log=/usr/local/mysql/data2/db-app.log
user = mysql
[mysqld3]
port = 3308
socket = /tmp/mysql.sock3
pid-file = /usr/local/mysql/data3/db-app3.pid3
datadir = /usr/local/mysql/data3
log=/usr/local/mysql/data3/db-app.log
user = mysql
[mysqld4]
port = 3309
socket = /tmp/mysql.sock4
pid-file = /usr/local/mysql/data3/db-app4.pid
datadir = /usr/local/mysql/data4
log=/usr/local/mysql/data4/db-app.log
user = mysql
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
[isamchk]
key_buffer = 128M
sort_buffer_size = 128M
read_buffer = 2M
write_buffer = 2M
[myisamchk]
key_buffer = 128M
sort_buffer_size = 128M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]interactive-timeout