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

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

讀寫分離概念
???????讀寫分離:讀寫分離是讓主數(shù)據(jù)庫處理事務性增、刪、改操作(INSERT、UPDATE、DELETE),而從數(shù)據(jù)庫處理查(SELECT) 操作。數(shù)據(jù)庫復制被用來把事務性操作導致的變更同步到集群中的從數(shù)據(jù)庫中。
讀寫分離原因與場景
???????讀寫分離原因:讀寫量很大,為了提升數(shù)據(jù)庫讀寫性能,將讀寫進行分離;多機房下如果寫少讀多,同時基于數(shù)據(jù)一致性考慮,只有一個主庫存入所有的數(shù)據(jù)寫入,本地再做從庫提供讀取,減少多機房間直接讀取帶來的時延。
???????讀寫分離使用場景:程序使用數(shù)據(jù)庫較多時,而更新少,查詢多的情況下會考慮使用。利用數(shù)據(jù)庫主從同步,再通過讀寫分離可以分擔數(shù)據(jù)庫壓力,提高性能。
總結
到此這篇關于MySQL數(shù)據(jù)庫主從復制與讀寫分離的文章就介紹到這了,更多相關MySQL主從復制與讀寫分離內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
MySQL拼接字符串函數(shù)GROUP_CONCAT詳解
本文給大家詳細講解了MySQL的拼接字符串函數(shù)GROUP_CONCAT的幾種使用方法以及詳細示例,有需要的小伙伴可以參考下2020-02-02
CentOS7版本安裝Mysql8.0.20版本數(shù)據(jù)庫的詳細教程
這篇文章主要介紹了CentOS7版本安裝Mysql8.0.20版本數(shù)據(jù)庫的教程,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-05-05
MYSQL的REPLACE和ON DUPLICATE KEY UPDATE語句介紹解決問題實例
這篇文章主要介紹了MYSQL的REPLACE和ON DUPLICATE KEY UPDATE語句介紹解決問題實例,需要的朋友可以參考下2014-04-04

