新聞中心
MySQL數(shù)據(jù)庫(kù)與PHP搭配是實(shí)現(xiàn)MySQL雙機(jī)熱備的最佳組合,其原理主要是通過(guò)對(duì)日志的更新,用MySQL數(shù)據(jù)庫(kù)(和PHP搭配之最佳組合)的SELECT的文件來(lái)操作相關(guān)功能,備機(jī)實(shí)時(shí)抓取主機(jī)的更新日志。

創(chuàng)新互聯(lián)公司專(zhuān)注于永定企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站設(shè)計(jì),商城網(wǎng)站定制開(kāi)發(fā)。永定網(wǎng)站建設(shè)公司,為永定等地區(qū)提供建站服務(wù)。全流程按需定制設(shè)計(jì),專(zhuān)業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)公司專(zhuān)業(yè)和態(tài)度為您提供的服務(wù)
當(dāng)然這只是其原理,實(shí)際上并不需要我們自己去處理日志,明白了原理,實(shí)施就比較容易理解了。
這樣,在主機(jī)端需要開(kāi)一個(gè)賬號(hào),這個(gè)賬號(hào)是備機(jī)用來(lái)抓取主機(jī)的更新日志。需要有文件訪問(wèn)權(quán)限,在早期,剛開(kāi)始實(shí)現(xiàn)MySQL雙機(jī)熱備時(shí),就是用的文件權(quán)限。
從MySQL(和PHP搭配之最佳組合)4 開(kāi)始,添加了一個(gè)專(zhuān)門(mén)的權(quán)限,用來(lái)做熱備,這個(gè)權(quán)限本質(zhì)應(yīng)該還是文件讀取權(quán)限,但是應(yīng)該只能用來(lái)讀取日志,防止一些漏洞。
對(duì)于客戶端來(lái)說(shuō),就是設(shè)置這個(gè)賬號(hào),密碼,主服務(wù)器地址,還有要同步的數(shù)據(jù)庫(kù)名。這只是單向的,再配置一個(gè)對(duì)等的同步通道,就支持雙向的熱備了。
通過(guò)熱備,還可以備端從主端load全部數(shù)據(jù)。這個(gè)在同步出錯(cuò)時(shí)可以使用。load權(quán)限是一個(gè)單獨(dú)的MySQL(和PHP搭配之最佳組合)權(quán)限,這樣跟熱備有關(guān)的MySQL(和PHP搭配之最佳組合)的權(quán)限有2個(gè),日志抓取和數(shù)據(jù)載入(REPLICATION SLAVE, REPLICATION CLIENT )
在服務(wù)器端開(kāi)備份賬號(hào)
GRANT REPLICATION SLAVE , REPLICATION CLIENT ON * . * TO "backup"@ "192.168.1.2"IDENTIFIED BY "*****"WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 ;
在服務(wù)器端打開(kāi)日志功能
/etc/MySQL(和PHP搭配之最佳組合)/my.cnf
[MySQL雙機(jī)熱備(和PHP搭配之最佳組合)d]
- server-id = 1
- log-bin
- binlog-do-db = pa
- max_binlog_size = 104857600
這樣,MySQL(和PHP搭配之最佳組合)會(huì)在數(shù)據(jù)目錄放置pa這個(gè)庫(kù)的更新日志。等待備機(jī)來(lái)抓取。
客戶端設(shè)置:
/etc/MySQL(和PHP搭配之最佳組合)/my.cnf
- master-host=192.168.1.1
- master-user=backup
- master-password=12345
- master-port=3306
- master-connect-retry=60
replicate-do-db=pa 客戶端會(huì)到服務(wù)器抓取pa庫(kù)的更新日志,來(lái)更新本地的pa庫(kù)。
幾個(gè)跟熱備有關(guān)的MySQL(和PHP搭配之最佳組合)命令:(需要在MySQL(和PHP搭配之最佳組合)命令行界面或query )
stop slave #停止同步
start slave #開(kāi)始同步,從日志終止的位置開(kāi)始更新。
SET SQL_LOG_BIN=0|1 #主機(jī)端運(yùn)行,需要super權(quán)限,用來(lái)開(kāi)停日志,隨意開(kāi)停,會(huì)造成主機(jī)從機(jī)數(shù)據(jù)不一致,造成錯(cuò)誤
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=n # 客戶端運(yùn)行,用來(lái)跳過(guò)幾個(gè)事件,只有當(dāng)同步進(jìn)程出現(xiàn)錯(cuò)誤而停止的時(shí)候才可以執(zhí)行。
RESET MASTER #主機(jī)端運(yùn)行,清除所有的日志,這條命令就是原來(lái)的FLUSH MASTER
RESET SLAVE #從機(jī)運(yùn)行,清除日志同步位置標(biāo)志,并重新生成master.info
雖然重新生成了master.info,但是并不起用,最好,將從機(jī)的MySQL(和PHP搭配之最佳組合)進(jìn)程重啟一下,
LOAD TABLE tblname FROM MASTER #從機(jī)運(yùn)行,從主機(jī)端重讀指定的表的數(shù)據(jù),每次只能讀取一個(gè),受timeout時(shí)間限制,需要調(diào)整timeout時(shí)間。執(zhí)行這個(gè)命令需要同步賬號(hào)有reload和super權(quán)限。以及對(duì)相應(yīng)的庫(kù)有select權(quán)限。如果表比較大,要增加net_read_timeout 和 net_write_timeout的值
LOAD DATA FROM MASTER #從機(jī)執(zhí)行,從主機(jī)端重新讀入所有的數(shù)據(jù)。執(zhí)行這個(gè)命令需要同步賬號(hào)有reload和super權(quán)限。以及對(duì)相應(yīng)的庫(kù)有select權(quán)限。如果表比較大,要增加net_read_timeout 和 net_write_timeout的值
CHANGE MASTER TO master_def_list #在線改變一些主機(jī)設(shè)置,多個(gè)用逗號(hào)間隔,比如
- CHANGE MASTER TO
- MASTER_HOST='master2.mycompany.com',
- MASTER_USER='replication',
- MASTER_PASSWORD='bigs3cret'
MASTER_POS_WAIT() #從機(jī)運(yùn)行
SHOW MASTER STATUS #主機(jī)運(yùn)行,看日志導(dǎo)出信息
SHOW SLAVE HOSTS #主機(jī)運(yùn)行,看連入的從機(jī)的情況。
- SHOW SLAVE STATUS (slave)
- SHOW MASTER LOGS (master)
- SHOW BINLOG EVENTS [ IN 'logname' ] [ FROM pos ] [ LIMIT [offset,] rows ]
- PURGE [MASTER] LOGS TO 'logname' ; PURGE [MASTER] LOGS BEFORE 'date'
下面是Q&A時(shí)間:
MySQL雙機(jī)熱備怎么配置?照上面再配置一個(gè)反向的更新就行了。
不用擔(dān)心本機(jī)的更改會(huì)回環(huán)回來(lái),因?yàn)閟erver_id就是識(shí)別這個(gè)用的.
多機(jī)熱備怎么做,幾臺(tái)MySQL(和PHP搭配之最佳組合)服務(wù)器就像首尾相連的蛇,組成一個(gè)環(huán)裝,就可以了,而且還可以作幾個(gè)單向的更新,用以分擔(dān)select這樣的讀取操作的壓力,因?yàn)镸ySQL(和PHP搭配之最佳組合)操作中大部分是
本文題目:實(shí)現(xiàn)MySQL雙機(jī)熱備的實(shí)際操作步驟
鏈接分享:http://www.5511xx.com/article/djjgehe.html


咨詢
建站咨詢
