MySQL數(shù)據(jù)庫(kù)主從復(fù)制與讀寫分離
一.主從復(fù)制
???????主從復(fù)制:在實(shí)際的生產(chǎn)中,為了解決Mysql的單點(diǎn)故障以及提高M(jìn)ySQL的整體服務(wù)性能,一般都會(huì)采用主從復(fù)制。即:對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)、語(yǔ)句做備份。

主從復(fù)制三線程
???????Mysql的主從復(fù)制中主要有三個(gè)線程:master(binlog dump thread)、slave(I/O thread 、SQL thread),Master一條線程和Slave中的兩條線程。
主從復(fù)制過程
主從復(fù)制的過程:
master主要負(fù)責(zé)Master庫(kù)中有數(shù)據(jù)更新的時(shí)候,會(huì)按照binlog格式,將更新的事件類型寫入到主庫(kù)的binlog文件中。Master會(huì)創(chuàng)建log dump線程通知Slave主庫(kù)中存在數(shù)據(jù)更新。
I/O thread線程在Slave中創(chuàng)建,該線程用于請(qǐng)求Master,Master會(huì)返回binlog的名稱以及當(dāng)前數(shù)據(jù)更新的位置、binlog文件位置的副本。然后,將binlog保存在 relay log(中繼日志) 中,中繼日志也是記錄數(shù)據(jù)更新的信息。
SQL線程也是在Slave中創(chuàng)建的,當(dāng)Slave檢測(cè)到中繼日志有更新,會(huì)將更新的內(nèi)容同步到Slave數(shù)據(jù)庫(kù)中,保證了主從的數(shù)據(jù)的同步。
主從復(fù)制策略
主從復(fù)制的策略:
同步策略:Master會(huì)等待所有的Slave都回應(yīng)后才會(huì)提交,這個(gè)主從的同步 的性能會(huì)嚴(yán)重的影響。
半同步策略:Master至少會(huì)等待一個(gè)Slave回應(yīng)后提交。
異步策略:Master不用等待Slave回應(yīng)就可以提交。
延遲策略:Slave要落后于Master指定的時(shí)間。
對(duì)于不同的業(yè)務(wù)需求,有不同的策略方案,但是一般都會(huì)采用最終一致性,不會(huì)要求強(qiáng)一致性,強(qiáng)一致性會(huì)嚴(yán)重影響性能。
主從復(fù)制高延遲
???????主從復(fù)制高延遲的原因
master 服務(wù)器高并發(fā),形成大量事務(wù)
網(wǎng)絡(luò)延遲
主從硬件設(shè)備導(dǎo)致(cpu 主頻、內(nèi)存 io、硬盤 io)
本來(lái)就不是同步復(fù)制、而是異步復(fù)制
???????主從復(fù)制高延遲的解決辦法
從庫(kù)優(yōu)化 Mysql 參數(shù)。比如增大 innodb_buffer_pool_size,讓更多操作在 - mysql 內(nèi)存中完成,減少磁盤操作
從庫(kù)使用高性能主機(jī)(高性能 cpu、大內(nèi)存),避免使用虛擬云主機(jī),使用物理主機(jī),提升 I/O 吞吐量
從庫(kù)使用 SSD 磁盤
網(wǎng)絡(luò)優(yōu)化,避免跨機(jī)房實(shí)現(xiàn)同步
二.讀寫分離

讀寫分離概念
???????讀寫分離:讀寫分離是讓主數(shù)據(jù)庫(kù)處理事務(wù)性增、刪、改操作(INSERT、UPDATE、DELETE),而從數(shù)據(jù)庫(kù)處理查(SELECT) 操作。數(shù)據(jù)庫(kù)復(fù)制被用來(lái)把事務(wù)性操作導(dǎo)致的變更同步到集群中的從數(shù)據(jù)庫(kù)中。
讀寫分離原因與場(chǎng)景
???????讀寫分離原因:讀寫量很大,為了提升數(shù)據(jù)庫(kù)讀寫性能,將讀寫進(jìn)行分離;多機(jī)房下如果寫少讀多,同時(shí)基于數(shù)據(jù)一致性考慮,只有一個(gè)主庫(kù)存入所有的數(shù)據(jù)寫入,本地再做從庫(kù)提供讀取,減少多機(jī)房間直接讀取帶來(lái)的時(shí)延。
???????讀寫分離使用場(chǎng)景:程序使用數(shù)據(jù)庫(kù)較多時(shí),而更新少,查詢多的情況下會(huì)考慮使用。利用數(shù)據(jù)庫(kù)主從同步,再通過讀寫分離可以分擔(dān)數(shù)據(jù)庫(kù)壓力,提高性能。
總結(jié)
到此這篇關(guān)于MySQL數(shù)據(jù)庫(kù)主從復(fù)制與讀寫分離的文章就介紹到這了,更多相關(guān)MySQL主從復(fù)制與讀寫分離內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL 事務(wù)autocommit自動(dòng)提交操作
這篇文章主要介紹了MySQL 事務(wù)autocommit自動(dòng)提交操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2021-01-01
mysql插入中文數(shù)據(jù)變成問號(hào)的解決方案
這篇文章主要介紹了mysql插入中文數(shù)據(jù)變成問號(hào)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04
MySQL拼接字符串函數(shù)GROUP_CONCAT詳解
本文給大家詳細(xì)講解了MySQL的拼接字符串函數(shù)GROUP_CONCAT的幾種使用方法以及詳細(xì)示例,有需要的小伙伴可以參考下2020-02-02
CentOS7版本安裝Mysql8.0.20版本數(shù)據(jù)庫(kù)的詳細(xì)教程
這篇文章主要介紹了CentOS7版本安裝Mysql8.0.20版本數(shù)據(jù)庫(kù)的教程,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05
MYSQL的REPLACE和ON DUPLICATE KEY UPDATE語(yǔ)句介紹解決問題實(shí)例
這篇文章主要介紹了MYSQL的REPLACE和ON DUPLICATE KEY UPDATE語(yǔ)句介紹解決問題實(shí)例,需要的朋友可以參考下2014-04-04

