MySQL主從復(fù)制怎樣實(shí)現(xiàn)高可用,相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。
十多年的沙灣網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。營(yíng)銷型網(wǎng)站的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整沙灣建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)從事“沙灣網(wǎng)站設(shè)計(jì)”,“沙灣網(wǎng)站推廣”以來(lái),每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
80%都是查詢
緩存來(lái)保護(hù)數(shù)據(jù)庫(kù):redis、ElasticSearch
數(shù)據(jù)庫(kù)系統(tǒng)要有一定的容災(zāi)能力
數(shù)據(jù)狀態(tài)化明顯
MTTF:平均無(wú)故障時(shí)間
MTTR:平均維護(hù)時(shí)間
HA=MTTF/(MTTF+MTTR)* 100% (這就是常說(shuō)的99.95%)
主從(非對(duì)稱)
master-slave,熱數(shù)據(jù)備份,從庫(kù)一般是用來(lái)實(shí)時(shí)備份,從機(jī)可以快速切換為主庫(kù),讀寫(xiě)分離(數(shù)據(jù)的一致性),從庫(kù)一般設(shè)置為只讀
前端應(yīng)用走緩存,后端應(yīng)用Report走從庫(kù)查
對(duì)稱方式
兩個(gè)節(jié)點(diǎn),互為主從,雙主模式(兩個(gè)數(shù)據(jù)庫(kù)的主鍵如果是自動(dòng)生成需要初始設(shè)置成不一樣的)
A-1001,1003,1005,B-1002,1004,1006
雙主下數(shù)據(jù)同步一定要實(shí)時(shí)
多機(jī)方式
MHA
MMM
MyCat(可以實(shí)現(xiàn)雙主機(jī)熱切)
資源:兩臺(tái)數(shù)據(jù)庫(kù)
Master會(huì)將修改記錄進(jìn)binlog
Slave從主庫(kù)binlog讀取數(shù)據(jù)寫(xiě)入relaylog
relaylog和binlog的格式一樣,可以用mysqlbinlog讀取relaylog
mysql> show relaylog events in 'relay-bin.000001';
binlog的postition方式
GTID方式:MySQL版本>=5.7
Master服務(wù)器配置
# 慢查詢開(kāi)關(guān) slow_query_log=ON slow_query_log_file=/usr/local/slowlog/slow.log slow_launch_time=4 long_query_time=3 # chown -R mysql:mysql /usr/local/slowlog/
binlog設(shè)置
server_id=213 log_bin=/usr/local/binlog/mysql-bin # 只需要給名字前綴 binlog_format=row expire_logs_days=3 max_binlog_size=200m
Slave服務(wù)器配置
# 慢查詢開(kāi)關(guān) slow_query_log=ON slow_query_log_file=/usr/local/slowlog/slow.log slow_launch_time=4 long_query_time=3 # chown -R mysql:mysql /usr/local/slowlog/
從庫(kù)的主從設(shè)置
server_id=214 relay_log=/usr/local/relaylog/relay-bin relay_log_recovery=1 #確保完整性 read_only=on #從服務(wù)器只讀 skip_slave_start=on #slave重啟后不會(huì)自己?jiǎn)?dòng)復(fù)制鏈路,需要手動(dòng)啟動(dòng),建議手動(dòng)啟動(dòng),好處是檢查無(wú)誤后啟動(dòng) master_info_repository=TABLE # 將主從服務(wù)的信息保存進(jìn)表 relay_log_info_repository=TABLE # 將主從服務(wù)的信息保存進(jìn)表
主從指明不同步的數(shù)據(jù)庫(kù)
# Master # 不同步數(shù)據(jù)庫(kù) binlog-ignore-db=mysql binlog-ignore-db=information_schema # 只同步某一些數(shù)據(jù)庫(kù) binlog-do-db=icoding_admin # Slave # 復(fù)制哪些數(shù)據(jù)庫(kù) replicate-do-db=icoding_admin replicate-do-db=game # 不復(fù)制哪些數(shù)據(jù)庫(kù) replicate-ignore-db=mysql replicate-ignore-db=information_schema
先Master上建立授權(quán)賬號(hào)
# Master授權(quán)給slave mysql> use mysql; mysql> grant replication slave on *.* to 'synuser'@'192.168.0.214' identified by '123456'; mysql> flush privileges;
初始化Slave數(shù)據(jù)
# Master和Slave的數(shù)據(jù)庫(kù)版本要一致,Master<=Slave mysqldump -uroot -p123456 -h227.0.0.1 --flush-logs --master-data=2 --routines --triggers --events --single-transaction --databases icoding_admin > mydb.sql #CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000004', MASTER_LOG_POS=154; 就用導(dǎo)出的日志pos
啟動(dòng)復(fù)制鏈路
# 在slave上執(zhí)行 mysql> change master to master_host='192.168.0.213', master_port=3306, master_user='synuser', master_password='123456', master_log_file='mysql-bin.000004', master_log_pos=154;
注意事項(xiàng)
主從復(fù)制的時(shí)候主從數(shù)據(jù)庫(kù)的UUID不能一樣,如果是鏡像方式,啟動(dòng)前將UUID文件刪除,會(huì)重新創(chuàng)建 cd /var/lib/mysql cat auto.cnf # 將他刪除 server-uuid=890980d9-b072-11ea-8ab8-00163e03668d
啟動(dòng)主從復(fù)制
# show slave status \G 可以查看主從復(fù)制的狀態(tài)和日志錯(cuò)誤 # 啟動(dòng)slave mysql> start slave; # 停止slave mysql> stop slave;
作業(yè)1:搭建一個(gè)雙主的結(jié)構(gòu)
使用GTID方式進(jìn)行復(fù)制鏈路
# 默認(rèn)GTID是不開(kāi)啟的 # 如果開(kāi)啟以下操作不可用 # create table ..... select * from xxx; 不可用 # 在一個(gè)事務(wù)里不能創(chuàng)建和刪除表 # 在一個(gè)事務(wù)里更新innodb引擎和myisam不可用
無(wú)意中刪除了一個(gè)數(shù)據(jù),可以做延時(shí)從庫(kù)
# 從庫(kù)做備份就無(wú)法做到數(shù)據(jù)的及時(shí)恢復(fù) # 讓我的從庫(kù)做到延時(shí)同步 mysql> stop slave; mysql> change master to master_delay=10; # 延時(shí)10秒 mysql> start slave; mysql> show slave status \G;
master(實(shí)時(shí)slave,延時(shí)slave)
看完上述內(nèi)容,你們掌握MySQL主從復(fù)制怎樣實(shí)現(xiàn)高可用的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!
標(biāo)題名稱:MySQL主從復(fù)制怎樣實(shí)現(xiàn)高可用
網(wǎng)站鏈接:http://www.rwnh.cn/article4/ipceoe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、域名注冊(cè)、App設(shè)計(jì)、手機(jī)網(wǎng)站建設(shè)、網(wǎng)站內(nèi)鏈、網(wǎng)站改版
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)