1. 程式人生 > >mysql模式 master/slave

mysql模式 master/slave

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!

                author:skate
time:2012/03/08


MySQL高可用解決方案
1.主備模式:master/slave
2.級聯主備模式:A->B->C
3.mysql雙主MMM模式
4.hearbeat/san,hearbeat/BRBD模式
5.NDB cluster模式

 

參考:http://ourmysql.com/archives/758

 

這裡只講配置,具體的適合應用場景稍後在詳述

1.主備模式:master/slave

A.master可以停機配置slave
B.master不允許停機配置slave
C.新增/刪除slave
D.常用的維護與診斷手冊


A.master可以停機(停止更新)配置slave
通過"load data from master"語句把master主伺服器的資料copy到slave從伺服器上,但是這個語句使用是有前提條件的;
一個是隻對myisam表起作用,第二是該語句將會獲得全域性的讀鎖,禁止master主庫的任何更新,當然熱備份就不會有全域性
讀鎖了。


mysql的複製基本原理是master對資料庫的更新存入master的二進位制日誌檔案裡,slave通過讀master的二進位制日誌來完成master和slave的主從同步的。整個同步過程需要三個執行緒來完成

master有一個io執行緒:負責將master的二進位制日誌傳送到slave
slave有一個io執行緒和一個sql執行緒:slave的I/O執行緒讀取master的Binlog Dump執行緒傳送的內容並將該資料拷貝到slave的
資料目錄中的本地檔案中,即中繼日誌。slave的sql執行緒用於讀取中繼日誌並執行日誌中包含的更新。

 

在複製的環境中用到的檔案
master的檔案:

1.二進位制檔案
二進位制檔案最好放在單獨的目錄下,這不但對方便優化、更方便維護。重新命名二進位制日誌很簡單,只需要修改[mysqld]裡的
log_bin選項,這裡有一點需要注意,如下例子:

log_bin=/home/mysql/binlog/binlog.log

[[email protected] ~]# ll /home/mysql/binlog
total 8
-rw-rw---- 1 mysql mysql 98 Mar  7 17:24 binlog.000001
-rw-rw---- 1 mysql mysql 33 Mar  7 17:24 binlog.index
[[email protected] ~]#

從上面的例子可以看到,我要重新調整logbin的路徑為“/home/mysql/binlog”,但我log_bin的設定卻有些不同


這裡需要注意兩點
1).目錄的資料夾命名不能有空格
2).指定目錄時候一定要以*.log結尾,即不能僅僅指定到資料夾的級別,否則在重啟mysql時會報錯。

2.錯誤日誌
錯誤日誌對於診斷問題非常重要,第一個要看的就應該是這個檔案,類似oracle的alertlog檔案。
它的預設路徑是“log-error=/var/log/mysqld.log”。

 

slave檔案
1.中繼日誌檔案(包括中繼日誌索引檔案)
中繼日誌檔案和master的二進位制檔案格式一樣,也應該單獨維護它,把它單獨放在一個目錄下,可以通過如下兩個引數修改
--relay-log=file_name
--relay-log-index=file_name

和中繼日誌有關的幾個引數
--max-relay-logs-size=size
定義中繼日誌的大小

--relay-log-info-file=file_name
從伺服器用於記錄中繼日誌相關資訊的檔名。預設名為資料目錄中的relay-log.info。

--relay-log-purge={0|1}
是否自動清空不再需要中繼日誌時。預設值為1(啟用)。這是一個全域性變數,可以用SET GLOBAL Relay_log_purge動態更改。

3.master.info和relay-log.info兩個狀態檔案
這兩個檔案都是儲存在硬碟上的,伺服器異常不會丟失的
master.info:
在slave重啟時,讀取這個檔案以確定它已經從主伺服器讀取了多少二進位制日誌,預設名字是資料目錄下master.info,若要修改其檔名,通過引數 “--master-info-file=file_name”

relay-log.info:
在slave重啟時,讀取這個檔案以確定它已經處理了多少二進位制日誌,預設名字是資料目錄下relay-log.info,若要修改其檔名,通過引數“--relay-log-info-file=file_name”

4.錯誤日誌
這個和master一樣,參考上面,這裡就不說了

5.二進位制日誌
當做級聯複製時,二進位制檔案也會啟用,和master類似。

 

停機master複製配置的步驟
1)確定主從伺服器的版本,最好版本一樣
2)在master伺服器上建立一個複製使用者並授權,使用者slave伺服器連線取log用。
3)配置主master,併為slave伺服器準備master的備份資料
4)配置slave伺服器
5)嚴重配置是否正確

 

1)確定主從伺服器的版本,最好版本一樣
在主從庫上執行如下語句,檢查版本是否一致
mysql> select version();

2)在master伺服器上建立一個複製使用者並授權,使用者slave伺服器連線取log用。

建立複製使用者:
mysql> grant replication slave on *.* to