高效能MYSQL(複製)

2021-08-02 19:02:47 字數 2100 閱讀 8261

複製概述

複製解決的基本問題是讓乙個伺服器的資料與其他伺服器保持同步。一台主庫的資料可以同步到多台備庫上,備庫本身也可以被配置成另外一台伺服器的主庫。

複製方法:基於行的複製;基於語句的複製。

實現:在主庫上記錄二進位制日誌,在備庫重放日誌的方式來實現非同步資料複製。會出現資料不一致,並且無法保證主備之間的延遲。

複製解決的問題:

1)資料分布:mysql通常不會對頻寬造成較大的壓力。基於行的複製開銷大於語句。

2)複雜均衡:通過mysql複製可以將讀操作分布到多個伺服器上,實現對密集型應用的優化。

3)備份:不是備份操作,也不能取代備份

4)高可用和故障切換

5)mysql公升級測試

配置複製

步驟:1. 在每台伺服器上建立複製賬號

建立使用者賬號:

2. 配置主庫和備庫

3. 通知備庫連線到主庫並從主庫複製資料。

複製原理

基於語句的複製

優點:實現簡單靈活;二進位制日誌裡面的事件更加緊湊

缺點:資料庫執行會依賴於其他的一些因素;更新必須是序列的;可能不能正確複製(特別是儲存過程)

基於行的複製

將實際資料記錄在二進位制日誌檔案中。

好處:可以正確地複製每一行,高效;可以適應任何情況

缺點:查詢條件可能很高;語句沒在日誌裡記錄,因此無法判斷執行了哪些sql語句。

複製拓撲

可以在任意主庫和備庫中建立複製,只有乙個限制:每乙個備庫只能有乙個主庫。

複製原則:1)乙個mysql備庫例項只能有乙個主庫。2)每個備庫必須有乙個唯一的伺服器id。3)乙個主庫可以有多個備庫。4)如果開啟log_salve_updates選項,乙個備庫可以把其他主庫上的資料變化傳播到其他備庫。

一主庫多備庫

使用情況:少量寫大量讀。

用途:1)為不同角色使用不同的備庫

2)把一台備庫當作待用的主庫,粗略複製沒有其他資料傳輸

3)將一台備庫放到遠端資料中心,用作災難恢復。

4)延遲乙個或多個備庫,以備災難恢復

5)使用其中乙個備庫,作為備份。培訓、開發或者測試使用伺服器。

主動-主動模式下的主-主複製

主-主複製(雙主複製或者雙向複製)包含兩台伺服器,每乙個都被配置成對方的主庫和備庫。

使用情景:不同地理位置的辦公室。

問題:如何解決兩個伺服器的寫衝突,自動行插入衝突。

主動-被動模式下的主-主複製

主要區別:一台伺服器是唯讀的被動伺服器。反覆切換主動和被動伺服器非常方便。

擁有備庫的主-主結構

有點:增加了冗餘,對與不同地理位置的複雜拓撲,能夠消除站點單點失效的問題。

環形複製

三個或三個以上的主庫,每個伺服器都是在它之前的伺服器的備庫,是在它之後的伺服器的主庫。

缺點:相互依賴,移除某個節點會導致迴圈,結構脆弱,盡量避免。

主庫、分發主庫以及備庫

如果備庫過多,會對主庫造成壓力,導致大量負載。這時需要從主庫移除負載並使用分發主庫。

樹或金字塔形

優點:減輕主庫的負擔

缺點:中間層出現任何錯誤會影響到多個伺服器,中間層次越多,處理故障更困難、更複雜。

定製的複製方案

複製和容量規劃

寫操作是複製的瓶頸,很難使用複製來擴充套件寫操作。

複製的問題和解決方案

資料損壞或丟失的錯誤:主庫意外關閉:設定sync_binlog=1。

備庫意外關閉

高效能mysql 樹 高效能mysql精要

1 explain 中 extra using index 表示覆蓋索引,sql優化中最好能使用覆蓋索引,否則 二級索引 需要回表查詢。所謂覆蓋索引,是指要查詢的列正好是索引,而條件也是這個索引之一 2 where 語句中 條件等於主鍵的 在核心索引層完成,條件等於非索引的,在服務層完成 3 讀索引...

mysql高效能索引 mysql高效能索引( )

在開發中,我們知道大多數應用的瓶頸在於sql語句的執行時耗,在這裡並不討論sql語句的安全,僅僅討論高效能sql語句,而與高效能sql語句緊密相連的就是傳說中的 索引。索引 一種工作在儲存引擎端的用於快速找到記錄的一種資料結構。mysql使用索引的方式是 先找到索引的值,再根據索引的值找到資料行。索...

高效能MySQL讀書筆記(複製01)

資料分布 不同的地理位置來分布資料備份,例如不同的資料中心。負載均衡 對於讀密集型應用,可以將讀操作分布到多個伺服器上,實現讀寫分離,提高併發讀取能力。備份對於備份來說,複製是一項很有意義的技術補充,但複製既不是備份也不能夠取代備份。高可用和故障切換 避免單節點故障,設計良好的故障切換系統可以顯著縮...