詳細解析MySQL快速搭建主從複製架構

2022-03-11 19:00:49
本篇文章給大家帶來了關於的相關知識,其中主要介紹了怎樣快速搭建主從複製架構的相關問題,MySQL資料庫提供的主從複製功能可以方便的實現資料在多臺伺服器自動備份,實現資料庫的拓展,極大的加強了資料的安全性,希望對大家有幫助。

推薦學習:

1. 主從複製與讀寫分離

1.1 主從複製(資料層面)

主從複製是讀寫分離的前提。MySQL資料庫提供的主從複製功能可以方便的實現資料在多臺伺服器自動備份,實現資料庫的拓展,極大的加強了資料的安全性。同時,實現主從複製之後,可以通過實現讀寫分離進一步加強資料庫的負載效能。

如圖所示便是主從複製的大致實現流程。

image-20220106214242459

1.2 讀寫分離(業務層面)

讀寫分離是建立在主從複製的基礎上,只有實現了資料庫的主從複製,才能進一步的實現讀寫分離。讀寫分離可以理解為所有的查詢操作在子資料庫進行,所有的寫操作在主資料庫進行。當資料寫入主資料庫後,通過主從複製將資料備份到子資料庫中,從而確保資料的一致性。

image-20220106214321793

2. 實現

我們先來了解一下實現主從複製的原理:

  1. 首先當主資料庫的資料發生變化後,會將變化記錄寫入binlog紀錄檔中。
  2. slave資料庫會在一定時間內對master資料庫中的binlog紀錄檔進行探測,如果發生改變,則請求master紀錄檔檔案資訊。

瞭解其原理之後,我們需要知道開啟主從複製的前提:

  1. master節點需要開啟binlog紀錄檔(mysql預設不開啟binlog)

  2. slave節點 ,指定某個binlog檔案,以及同步的offset

    • 指定master節點的ip

    • 執行master節點的使用者名稱和密碼

現在大致我們都瞭解了,接下來我們搭建一個一主一從的資料庫模式,演示一下資料庫主從搭建的設定過程。

準備兩臺CentOS伺服器,並提前安裝好mysql5.7。

2.1 開啟master伺服器的binlog紀錄檔

編輯mysql的my.cnf檔案:(安裝方式不同,可能檔案位置不同,具體問題具體分析~)

vim /etc/my.cnf

原本檔案是沒有以下內容的,需要我們自行新增。我這邊是值對myslave庫進行資料的主從複製

server-id = 1 #server-id 伺服器唯一標識log_bin = master-bin 
#log_bin 啟動MySQL二進位制紀錄檔log_bin_index = master-bin.index
binlog_do_db = myslave #binlog_do_db 指定記錄二進位制紀錄檔的資料庫 這兩個指定可以不新增binlog_ignore_db = mysql 
#binlog_ignore_db 指定不記錄二進位制紀錄檔的資料庫

使用如下命令重新啟動mysql。linux版本不一樣可能命令不同。

service mysql restart

啟動成功後,我們可以通過下面的語句看到bin-log開啟情況:(直接在Navicat中查詢即可)

show variables like 'log_bin%';

image-20220106220603153

2.2 遠端存取

#允許遠端使用者存取
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.221.131' IDENTIFIED BY '123456' WITH GRANT OPTION;
#重新整理
FLUSH PRIVILEGES;

2.3 slave節點設定

  • 首先在master節點,通過下面的命令瞭解master節點的狀態,得到如下圖所示的資訊。
show master status;

image-20220106221216826

  • 修改相關設定

    vim /etc/my.cnf

    新增相關資訊:

    server-id = 2  #唯一標識relay-log = slave-relay-bin
    relay-log-index = slave-relay-bin.index
    replicate-do-db=myslave #備份資料庫 對應master中設定的,可以不設定replicate-ignore-db=mysql #忽略資料庫

    記得重新啟動服務;

    service mysql restart
  • 在slave節點執行如下命令。

    change master to master_host='192.168.221.128',master_user='root',master_password='123456',master_log_file='binlog.000009',master_log_pos=2339;

    master_log_file是第一步得到的file名稱;

    master_log_pos是第一步得到的同步位置點;

  • 啟動slave同步

    start slave;
  • 檢視同步狀態,得到下圖所示的狀態,表示主從同步搭建成功。可以在主庫中建立表測試。

    show slave status\G

    image-20220106230736192

推薦學習:

以上就是詳細解析MySQL快速搭建主從複製架構的詳細內容,更多請關注TW511.COM其它相關文章!