本篇文章給大家帶來了關于mysql的相關知識,其中主要介紹了怎樣快速搭建主從復制架構的相關問題,mysql數據庫提供的主從復制功能可以方便的實現數據在多臺服務器自動備份,實現數據庫的拓展,極大的加強了數據的安全性,希望對大家有幫助。
推薦學習:mysql
1. 主從復制與讀寫分離
1.1 主從復制(數據層面)
主從復制是讀寫分離的前提。mysql數據庫提供的主從復制功能可以方便的實現數據在多臺服務器自動備份,實現數據庫的拓展,極大的加強了數據的安全性。同時,實現主從復制之后,可以通過實現讀寫分離進一步加強數據庫的負載性能。
如圖所示便是主從復制的大致實現流程。
1.2 讀寫分離(業務層面)
讀寫分離是建立在主從復制的基礎上,只有實現了數據庫的主從復制,才能進一步的實現讀寫分離。讀寫分離可以理解為所有的查詢操作在子數據庫進行,所有的寫操作在主數據庫進行。當數據寫入主數據庫后,通過主從復制將數據備份到子數據庫中,從而確保數據的一致性。
2. 實現
我們先來了解一下實現主從復制的原理:
- 首先當主數據庫的數據發生變化后,會將變化記錄寫入binlog日志中。
- slave數據庫會在一定時間內對master數據庫中的binlog日志進行探測,如果發生改變,則請求master日志文件信息。
了解其原理之后,我們需要知道開啟主從復制的前提:
-
master節點需要開啟binlog日志(mysql默認不開啟binlog)
-
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%';
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;
-
修改相關配置
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 statusG
推薦學習:mysql