**********************************************************
第一部分, 在一臺服務器構建多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]
新聞熱點
疑難解答