mysql主從複製

mysql主從複製

1. 主從複製的主要功能

  • 1)數據分佈

在不同的數據中心實現數據的複製。

  • 2)讀取的負載均衡

建立多個從服務器,將讀取操作分散到從服務器,降低主服務器壓力。

  • 3)數據庫備份

複製對備份很有幫助,但是從服務器不是備份,不能完全替代備份。

  • 4)高可用性和故障轉移

通過複製建立的從服務器有助於故障轉移,減少故障的停機時間和恢復時間。

2. 複製的工作原理

  • 1) 主服務器將更改記錄到二進制日誌(binlog)中
  • 2) 從服務器把主服務器的二進制日誌複製到自己的中繼日誌(relay log)中
  • 3) 從服務器重做中繼日誌中日誌,把更改應用到自己的數據庫上,以達到數據的最終一致性

注意複製是異步實時的,存在主從執行延遲。複製的工作原理如下圖所示:
在這裏插入圖片描述

從服務器有兩個線程:

  1. 一個是I/O線程,負責讀取主服務器的二進制日誌
  2. 一個是sql線程,複製執行中繼日誌

主從同步並非完全同步,可通過show salve status和show master status命令查看同步狀況。
下面是show salve status的主要變量:

Master_Log_File:                      SLAVE中的I/O線程當前正在讀取的主服務器二進制日誌文件的名稱
Read_Master_Log_Pos:        在當前的主服務器二進制日誌中,SLAVE中的I/O線程已經同步的偏移量位置
Relay_Log_File:                        SQL線程當前正在讀取和執行的中繼日誌文件的名稱
Relay_Log_Pos:                        在當前的中繼日誌中,SQL線程已讀取和執行的位置
Relay_Master_Log_File:      由SQL線程執行的包含多數近期事件的主服務器二進制日誌文件的名稱
Slave_IO_Running:                 I/O線程是否被啓動併成功地連接到主服務器上
Slave_SQL_Running:              SQL線程是否被啓動
Seconds_Behind_Master:     從屬服務器SQL線程和從屬服務器I/O線程之間的時間差距,單位以秒計。

延遲的判斷:

  1. 通過主服務器上面的Position-Read_Master_Log_Pos 就可得知I/O線程的延遲。
  2. Seconds_Behind_Master
    其值有這麼幾種:
    NULL - 表示io_thread或是sql_thread有任何一個發生故障,也就是該線程的Running狀態是No,而非Yes.
    0 - 該值爲零,是我們極爲渴望看到的情況,表示主從複製良好,可以認爲lag不存在。
    正值 - 表示主從已經出現延時,數字越大表示從庫落後主庫越多。
    負值 - 幾乎很少見,只是聽一些資深的DBA說見過,其實,這是一個BUG值,該參數是不支持負值的,也就是不應該出現。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章