數(shù)據(jù)庫系統(tǒng)下的負(fù)載均衡功能配置
前面我們對(duì)負(fù)載均衡功能配置的系統(tǒng)方面配置,接下來我們就來具體介紹一下MySQL數(shù)據(jù)庫的負(fù)載均衡功能配置的問題。那么,分為幾個(gè)步驟來進(jìn)行講解,結(jié)構(gòu)比較清晰,望大家都能清楚了解配置過程。
MySQL數(shù)據(jù)庫系統(tǒng)負(fù)載均衡功能配置
為了能使上述系統(tǒng)實(shí)現(xiàn)一對(duì)多的主從復(fù)制(replication)和冗余機(jī)制,還需要對(duì)以上四個(gè)MySQL服務(wù)器進(jìn)行一些必要的配置。
(1). 配置主機(jī)名和IP地址
本實(shí)現(xiàn)方案中把MySQL服務(wù)器Master主機(jī)名設(shè)為FreebsdMaster,IP地址配置為192.168.1.100,其它三臺(tái)Slave依次設(shè)為FreebsdSlave1,192.168.1.101;FreebsdSlave2,192.168.1.102;FreebsdSlave3,IP地址192.168.1.103。
(2). 設(shè)置root用戶密碼
MySQL的root用戶初始密碼為空,為保證系統(tǒng)安全必須為root用戶設(shè)置密碼:
[root@FreebsdMaster /]# /app/mysql5/bin/mysql –uroot –p
Enter password:
mysql>SET PASSWORD=PASSWORD(‘secret');
同Unix系統(tǒng)一樣,輸入密碼時(shí)屏幕沒有任何回顯,進(jìn)入系統(tǒng)后執(zhí)行SET PASSWORD SQL語句設(shè)置或修改MySQL root用戶密碼。為使應(yīng)用系統(tǒng)服務(wù)器遠(yuǎn)程連接到MySQL數(shù)據(jù)庫服務(wù)器,除本地root用戶以外,還要設(shè)置一個(gè)能從用戶內(nèi)部網(wǎng)絡(luò)其它終端登錄的root用戶。具體操作如下:
mysql>USE mysql;
mysql>UPDATE user SET Host='%' WHERE Host='hostname.yourdomain' AND User='root';
mysql>flush privileges;
完成上述操作后應(yīng)用系統(tǒng)服務(wù)器就可以連接到MySQL數(shù)據(jù)庫服務(wù)器進(jìn)行各種操作了,這個(gè)遠(yuǎn)程root用戶的初始密碼為空,用戶需要從遠(yuǎn)程終端登錄,為其設(shè)置密碼。
(3). 負(fù)載均衡功能配置下一步:開啟MySQL服務(wù)器的二進(jìn)制更新日志功能
上述MySQL服務(wù)器安裝完成后,安裝程序沒有生成my.cnf配置文件,為此用戶需要手工添加/etc/my.cnf文件。MySQL服務(wù)是由/app/myql5/libexec/mysqld提供的,其尋找my.cnf配置文件的默認(rèn)順序?yàn)?etc/my.cnf,~/.my.cnf,/usr/local/mysql/etc/my.cnf。啟動(dòng)ee編輯器,# ee /etc/my.cnf,在Master機(jī)器的配置文件寫入如下內(nèi)容:
[mysqld]
log-bin=mysql-master-bin
server-id=1
在其它三臺(tái)Slave機(jī)器的配置文件/etc/my.cnf文件寫入如下內(nèi)容:
[mysqld]
server-id=int
其中,int為一大于1且互不相等的正整數(shù),如2,3,4等。若要完成負(fù)載均衡功能配置,務(wù)必要正確設(shè)置每個(gè)機(jī)器上的/etc/my.cnf配置文件,尤其是server-id不能有重復(fù),這是一對(duì)多數(shù)據(jù)庫復(fù)制能否成功的關(guān)鍵!
設(shè)定好上述/etc/my.cnf文件后啟動(dòng)Master上的MySQL數(shù)據(jù)庫服務(wù)時(shí)就自動(dòng)開啟了二進(jìn)制更新日志功能。在Slave上啟動(dòng)MySQL時(shí)要加上--log-bin參數(shù),即可開啟二進(jìn)制更新日志功能。在Slave機(jī)器上啟動(dòng)MySQL服務(wù)的命令如下:
# /app/mysql5/bin/mysqld_safe --user=mysql --log-bin &
這樣做的目的為了實(shí)現(xiàn)冗余容錯(cuò)功能。當(dāng)主服務(wù)器Master出現(xiàn)故障停止服務(wù)時(shí),在預(yù)轉(zhuǎn)換角色成為Master的Slave上執(zhí)行STOP SLAVE; RESET MASTER SQL語句,在其它兩臺(tái)Slave上執(zhí)行CHANGE MASTER TO SQL語句,執(zhí)行STOP SLAVE; RESET MASTER SQL語句的Slave服務(wù)器即轉(zhuǎn)換成新的Master,其余兩臺(tái)機(jī)器則從新的Master復(fù)制數(shù)據(jù)庫數(shù)據(jù)(在負(fù)載均衡功能配置操作中,復(fù)制的是更新UPDATE、INSERT等操作,并不是簡單的copy),從而實(shí)現(xiàn)冗余容錯(cuò)。