1. 程式人生 > >一步一圖搭建-分散式伺服器部署之mysql叢集-主從複製與讀寫分離

一步一圖搭建-分散式伺服器部署之mysql叢集-主從複製與讀寫分離

傳統專案模型:

這裡寫圖片描述
1.傳統的裝置搭建時,如果採用單臺伺服器.則會出現很多的問題.如果伺服器出現宕機/斷電/硬體裝置的損壞,都會直接影響使用者體驗.
2.如果傳統專案中遇到了高併發的情況.單臺伺服器不足以支援

分散式的處理:

這裡寫圖片描述

傳統資料庫中存在的問題:

1.傳統資料庫設計時,如果伺服器宕機,將不能為使用者提供服務導致整個系統崩潰.
2.如果資料庫突然宕機.會導致資料丟失.
3.為了防止資料丟失,要進行實時備份
冷備份:通過資料庫工具進行人為的匯出sql.但是手動匯出資料可能在中間節點宕機時也會造成資料庫的丟失.
熱備份:通過程式進行控制,定時轉儲.儘可能的保證資料的完整性.但是還有大量的問題.

資料庫的主從複製:

主從複製原理:

這裡寫圖片描述

角色劃分:

主庫Master:主要進行的是資料的”更新操作”

從庫Slave: 實時備份主庫的更新資訊

二進位制日誌: 實時記錄主庫的更新操作,並且形式二進位制碼.

中繼日誌: 儲存主庫的更新信

##### 呼叫原理

1.當主庫更新資料後,會實時的寫入到二進位制日誌檔案中

2.從庫的IO執行緒,實時的監聽主庫的二進位制檔案,如果二進位制檔案傳送了改變則啟動執行緒進行讀取修改後的內容.

3.通過IO執行緒將讀取的二進位制檔案寫入到中繼日誌中.

4.日誌中的訊息,進行
資料庫的”更新操建”

實戰搭建

  • 環境準備:三臺centos6以上的伺服器(可以使用虛擬機器代替)
  • 軟體準備:mysql角色資料庫(使用者構建主從伺服器叢集)

將軟體通過工具上傳到linux上

這裡寫圖片描述
使用解壓命令解壓
這裡寫圖片描述
檢查系統外掛是否安裝:
這裡寫圖片描述
這裡寫圖片描述
開始安裝軟體:(需要按順序安裝 各個包之間有順序依賴關係)
debuginfo->share->client->server
這裡寫圖片描述
安裝shared:
這裡寫圖片描述
安裝client:
這裡寫圖片描述
安裝Server:(注意有坑! 如果之前兩個外掛沒有安裝這是server就會安裝不上)
這裡寫圖片描述
還有個坑就是 有些系統會自帶一個數據庫安裝包 我這個就是安裝的時候兩個包衝突啦 導致一直都安裝不上;
最新的centOS7會自帶瑪利亞資料庫;必須要先把這個解除安裝才能安裝我們的資料庫:
這裡寫圖片描述


使用rpm -ev 命令解除安裝mariadb資料庫:
這裡寫圖片描述
重新安裝server包:
這裡寫圖片描述
兩個百分之百同時出現才說明安裝成功!

接下來配置資料庫:
這裡寫圖片描述
配置可遠端訪問的使用者:
這裡寫圖片描述
使用連線工具測試一下:
這裡寫圖片描述
主從資料庫的基本配置都是相同的,兩個可以同樣的配置:
這裡寫圖片描述
接下來配置主從同步關係:
找到my.cnf檔案
這裡寫圖片描述
因為我們使用rpm命令安裝,在etc目錄下可能會找不到my.cnf檔案
這時我們需要新建一個my.cnf檔案,一般情況下路徑是不用修改可以直接拿來用的:


[mysqld]
#skip-name-resolve
#skip-grant-tables
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql

symbolic-links=0
server-id=1
log-bin=mysql-bin


[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

注意主從伺服器server-id不能相同:一般把master選為1 其他的依次遞增
這裡寫圖片描述

這裡寫圖片描述

檢視主服務狀態:

這裡寫圖片描述

從伺服器連線主伺服器:
這裡寫圖片描述
這裡出啦個錯誤;因為從伺服器新增my.cnf配置檔案時沒有重啟資料庫:
這裡寫圖片描述

如何配置出錯可以清除操作:

這裡寫圖片描述
按步驟配置:

這裡寫圖片描述
測試結果:

這裡寫圖片描述

這裡寫圖片描述

實現主從複製的mysql資料庫已經搭建完成啦 以後的資料實時備份,備份實時更新再也不擔心資料丟失啦。但要想實現資料庫抗住高併發,高可用,還需要配置資料庫的讀寫分離。由於這篇部落格太長啦 我準備把資料庫的讀寫分離單獨出來。歡迎大家繼續關注!