推薦學習:
主從複製是讀寫分離的前提。MySQL資料庫提供的主從複製功能可以方便的實現資料在多臺伺服器自動備份,實現資料庫的拓展,極大的加強了資料的安全性。同時,實現主從複製之後,可以通過實現讀寫分離進一步加強資料庫的負載效能。
如圖所示便是主從複製的大致實現流程。
讀寫分離是建立在主從複製的基礎上,只有實現了資料庫的主從複製,才能進一步的實現讀寫分離。讀寫分離可以理解為所有的查詢操作在子資料庫進行,所有的寫操作在主資料庫進行。當資料寫入主資料庫後,通過主從複製將資料備份到子資料庫中,從而確保資料的一致性。
我們先來了解一下實現主從複製的原理:
瞭解其原理之後,我們需要知道開啟主從複製的前提:
master節點需要開啟binlog紀錄檔(mysql預設不開啟binlog)
slave節點 ,指定某個binlog檔案,以及同步的offset
指定master節點的ip
執行master節點的使用者名稱和密碼
現在大致我們都瞭解了,接下來我們搭建一個一主一從的資料庫模式,演示一下資料庫主從搭建的設定過程。
準備兩臺CentOS伺服器,並提前安裝好mysql5.7。
編輯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%';
#允許遠端使用者存取 GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.221.131' IDENTIFIED BY '123456' WITH GRANT OPTION; #重新整理 FLUSH PRIVILEGES;
show master status;
修改相關設定
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
推薦學習:
以上就是詳細解析MySQL快速搭建主從複製架構的詳細內容,更多請關注TW511.COM其它相關文章!