上一篇 <<<MySQL如何性能優(yōu)化面試題完美解答
下一篇 >>>MyCat實(shí)現(xiàn)讀寫分離與動(dòng)態(tài)數(shù)據(jù)源切換
主從復(fù)制是MySQL本身自帶的一個(gè)功能栽燕,不需要額外的第三方軟件就可以實(shí)現(xiàn)。
可實(shí)現(xiàn):數(shù)據(jù)備份捞蚂、故障轉(zhuǎn)移奄妨、MySQL集群嫉鲸、高可用、讀寫分離等功能
主從復(fù)制的好處
(1)數(shù)據(jù)更安全:做了數(shù)據(jù)冗余,不會(huì)因?yàn)閱闻_(tái)服務(wù)器的宕機(jī)而丟失數(shù)據(jù)
(2)性能大大提升:一主多從次慢,不同用戶從不同數(shù)據(jù)庫讀取,性能提升
(3)擴(kuò)展性更優(yōu):流量增大時(shí)翔曲,可以方便的增加從服務(wù)器迫像,不影響系統(tǒng)使用
(4)負(fù)載均衡:一主多從相當(dāng)于分擔(dān)了主機(jī)任務(wù),做了負(fù)載均衡瞳遍。
主從復(fù)制實(shí)現(xiàn)原理
把主服務(wù)器上的binLog日志(記錄數(shù)據(jù)的增刪改和授權(quán)等寫操作行為)復(fù)制到從服務(wù)器上執(zhí)行一遍闻妓,這樣從服務(wù)器上的數(shù)據(jù)就和主服務(wù)器上的數(shù)據(jù)相同了。
步驟:
a掠械、主庫有寫操作時(shí)由缆,會(huì)將日志信息寫到binlog中
b、主庫啟用新線程log dump線程猾蒂,從庫啟用新的io線程均唉,這兩個(gè)線程保持著長(zhǎng)連接
c、當(dāng)binlog有變動(dòng)時(shí)肚菠,log dump線程會(huì)將數(shù)據(jù)推給從數(shù)據(jù)庫的io線程
d舔箭、io線程獲得binlog后寫到relay log(中繼日志)中,由sql獨(dú)立線程完成數(shù)據(jù)庫的寫操作蚊逢。
主從復(fù)制的類型
類型 | 說明 |
---|---|
基于SQL語句的復(fù)制 【STATEMENT模式(SBR)】 |
在主服務(wù)器上執(zhí)行sql語句层扶,在從服務(wù)器上執(zhí)行同樣的語句。 優(yōu)點(diǎn)是并不需要記錄每一條sql語句和每一行的數(shù)據(jù)變化烙荷,減少了binlog日志量镜会,節(jié)約IO,提高性能奢讨。 缺點(diǎn)是在某些情況下會(huì)導(dǎo)致master-slave中的數(shù)據(jù)不一致(如sleep()函數(shù)稚叹, last_insert_id(),以及user-defined functions(udf)等會(huì)出現(xiàn)問題)拿诸。 mysql默認(rèn)采用基于語句的復(fù)制扒袖,執(zhí)行效率高。 |
基于行的復(fù)制 【ROW模式(RBR)】 |
把改變的內(nèi)容復(fù)制過去亩码,而不是把命令在從服務(wù)器上執(zhí)行一遍季率。 缺點(diǎn)是會(huì)產(chǎn)生大量的日志,尤其是alter table的時(shí)候會(huì)讓日志暴漲描沟。 |
混合類型的復(fù)制 【MIXED模式(MBR)】 |
默認(rèn)采用基于語句的復(fù)制飒泻,一旦發(fā)現(xiàn)基于語句無法精確復(fù)制時(shí)鞭光,就會(huì)采用基于行的復(fù)制 |
主從復(fù)制的配置
1.主節(jié)點(diǎn)
vi /etc/my.cnf 新增以下內(nèi)容
server_id=177 ###服務(wù)器id
log-bin=mysql-bin ###開啟日志文件
2.從節(jié)點(diǎn)
vi /etc/my.cnf
server_id=178 ###從服務(wù)器server_id
log-bin=mysql-bin ###日志文件同步方式
binlog_do_db=test ###同步數(shù)據(jù)庫(貌似沒啥用處,建立其他庫也會(huì)同步)
3.建立關(guān)聯(lián)關(guān)系
#參數(shù)順序:主節(jié)點(diǎn)IP 用戶名 密碼 主binLog文件名稱 同步的主節(jié)點(diǎn)行數(shù)泞遗,后兩個(gè)參數(shù)可以通過show master status;
change master to master_host='10.211.55.26',master_user='root',master_password='root', master_log_file='mysql-bin.000003',master_log_pos=120;
4.開始同步
start slave
5惰许、從節(jié)點(diǎn)同步狀態(tài)查詢:SHOW SLAVE STATUS
推薦閱讀:
<<<MyCat實(shí)現(xiàn)讀寫分離與動(dòng)態(tài)數(shù)據(jù)源切換
<<<分表分庫與分區(qū)的區(qū)別及拆分策略
<<<MyCat的分片查詢?cè)?/a>
<<<Sharding-Jdbc實(shí)現(xiàn)讀寫分離
<<<Sharding-Jdbc的分片算法及分表分庫
<<<Sharding-Jdbc與MyCat區(qū)別