詳細講解mysql主從同步原理、配置以及延遲
本文介紹了mysql的主從同步原理、主從同步配置、主從同步延遲,首先我們先來了解什麼是主從同步,主從同步,顧名思義也稱為主從複製,用來建立一個和主資料庫完全一樣的資料庫環境。主從同步使得資料可以從一個資料庫伺服器複製到其他伺服器上,實現主資料庫的資料和從資料庫的資料保持一致。
叢集是共用儲存的,是data-sharing . 主從複製中沒有任何共用. 每台機器都是獨立且完整的系統,是nothing-sharing.
主從同步的原理
-
#從mysql5.6之後主從複製的實作方式主要有3種:
1. 非同步複製
2. 全同步複製
3. 半同步複製
##3. 半同步複製
#主從同步原理圖
2.從庫創建一個I/O線程,該線程連接到主庫並請求主庫發送binlog裡面的更新記錄到從庫上.主庫創建一個binlog dump thread線程,把binlog的內容發送到從庫,從庫的I/O線程讀取主庫的輸出線程發送的更新並拷貝這些更新到本地relay log文件中.
##3.從庫建立一個SQL線程,這個線程讀取從庫I/O線程寫到relay log的更新事件並執行.主從同步的實作(異步複製,資料庫在不同伺服器)1.設定主資料庫開啟binary-log
vim /etc/my.cnf 在[mysqld]下添加 server-id=1(用来标识不同的数据库)log-bin=master-bin(打开bin-log并配置文件名为master-bin)log-bin-index=master-bin.index(区分不同的log-bin文件)
vim /etc/my.cnf 在[mysqld]下添加 server-id=2relay-log=slave-relay-bin(打开relay-log并配置文件名为slave-relay-bin) relay-log-index=slave-relay-bin.index
3.連接兩個資料庫
在主資料庫:建立使用者repl ,每一個從伺服器都需要用到主資料庫一個帳號名稱和密碼來連接主伺服器.
CREATE USER 'repl'@'114.116.77.213' IDENTIFIED BY '12312';GRANT REPLICATION SLAVE ON *.* TO 'repl'@'114.116.77.213' IDENTIFIED BY '12312';
在從資料庫中
:change master to master_host='47.106.78.106',master_user='repl',master_password='12312',master_log_file='master-bin.000001',master_log_pos=0;
在主資料庫建立一個資料庫,然後在從資料庫中查看
##主從同步的作用
#1. 做資料的熱備,作為後備資料庫,主資料庫伺服器故障後,可切換到從資料庫繼續運作,避免資料遺失.- 2. 讀寫分離,使資料庫能支撐更大的並發. 主從同步的注意事項
- 主庫可以讀寫資料,而從庫只能讀取資料,因為當從庫寫了資料positon會變化,但是主庫的position是不會變的,當主庫寫資料變化position的時候就可能會有衝突.
-
當主庫的binatylog檔案儲存的資料很多,也就是position很大的時候,會再分裂一個新的binarylog檔,position置為0;
因為mysql是向後兼容的,也就是說低版本的語句在高版本裡面是支援的,但是高版本的有些語句在低版本是不支援的.
面試相關
(如果問到資料庫主從問題,必問以下問題):- 主從的好處是?
- 主從的原理是?
- 從資料庫的讀取的延遲問題了解嗎?如何解決?
- 做主從後主伺服器掛了怎麼辦?
-
主從同步的延遲的原因
#主從同步的延遲的原因
##1. 主從同步的延遲的原因
我們知道, 一個伺服器開放N個連結給客戶端來連接的, 這樣有會有大並發的更新操作, 但是從伺服器的里面讀取binlog 的線程僅有一個, 當某個SQL在從伺服器上執行的時間稍長或者由於某個SQL要進行鎖表就會導致,主伺服器的SQL大量積壓,未被同步到從伺服器。這就導致了主從不一致, 也就是主從延遲。 ######2. 主從同步延遲的解決方法###### 其實主從同步延遲根本沒有什麼一招制敵的辦法, 因為所有的SQL必須都要在從伺服器裡面執行一遍,但是主伺服器如果不斷的有更新操作源源不絕的寫入, 那麼一旦有延遲產生, 那麼延遲加重的可能性就會原來越大。當然我們可以做一些緩解的措施。 ###a. 我們知道因為主伺服器要負責更新操作, 他對安全性的要求比從伺服器高, 所有有些設定可以修改,例如sync_binlog=1,innodb_flush_log_at_trx_commit = 1 之類的設置,而slave則不需要這麼高的資料安全,完全可以講sync_binlog設定為0或關閉binlog,innodb_flushlog, innodb_flush_log_at_trx_commit 也可以設定為0來提升sql的執行效率這個能大幅提高效率。另外就是使用比主庫更好的硬體設備作為slave。
b. 就是把,一台從伺服器當度當作備份使用, 而不提供查詢, 那邊他的負載下來了, 執行relay log 裡面的SQL效率自然就高了。
c. 增加從伺服器嘍,這個目的還是分散讀取的壓力, 從而降低伺服器負載。
相關推薦:
以上是詳細講解mysql主從同步原理、配置以及延遲的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

本文討論了使用MySQL的Alter Table語句修改表,包括添加/刪除列,重命名表/列以及更改列數據類型。

InnoDB的全文搜索功能非常强大,能够显著提高数据库查询效率和处理大量文本数据的能力。1)InnoDB通过倒排索引实现全文搜索,支持基本和高级搜索查询。2)使用MATCH和AGAINST关键字进行搜索,支持布尔模式和短语搜索。3)优化方法包括使用分词技术、定期重建索引和调整缓存大小,以提升性能和准确性。

文章討論了為MySQL配置SSL/TLS加密,包括證書生成和驗證。主要問題是使用自簽名證書的安全含義。[角色計數:159]

文章討論了流行的MySQL GUI工具,例如MySQL Workbench和PhpMyAdmin,比較了它們對初學者和高級用戶的功能和適合性。[159個字符]

本文討論了使用Drop Table語句在MySQL中放下表,並強調了預防措施和風險。它強調,沒有備份,該動作是不可逆轉的,詳細介紹了恢復方法和潛在的生產環境危害。

聚集索引和非聚集索引的區別在於:1.聚集索引將數據行存儲在索引結構中,適合按主鍵查詢和範圍查詢。 2.非聚集索引存儲索引鍵值和數據行的指針,適用於非主鍵列查詢。

MySQL支持四種索引類型:B-Tree、Hash、Full-text和Spatial。 1.B-Tree索引適用於等值查找、範圍查詢和排序。 2.Hash索引適用於等值查找,但不支持範圍查詢和排序。 3.Full-text索引用於全文搜索,適合處理大量文本數據。 4.Spatial索引用於地理空間數據查詢,適用於GIS應用。
