1. 程式人生 > >Mysql配置主從關係

Mysql配置主從關係

配置主伺服器(開啟二進位制日誌檔案)

編輯主master伺服器配置檔案/etc/my.cnf

在[mysqld]節點下加入兩句話

server-id=1

log-bin=mysql-bin        #啟用二進位制日誌;

重啟服務:service mysql restart

在啟動或者重啟mysql服務的過程中會有一些常見問題,可以參考附錄3--mysql常見問題解決(雲主機不太可能出現,待補充)

登入mysql:mysql –uroot -proot

檢視主節點的二進位制檔案(名稱),position的值,為從節點掛接主節點準備資料;

mysql>flush tables with read lock;   #資料庫鎖表,不讓寫資料;這步驟可不做

對於當前環境的mysql無需使用lock命令,因為沒有人操作,但是生產環境中必須這樣做

mysql>show master status;    #檢視MASTER狀態(這兩個值File和Position)其中的file就是二進位制檔案,position記錄當前操作sql的步驟數(注意一條sql包含多步,所以不是sql語句的條數)

mysql>unlock tables;        #從啟動好後,記得要解除鎖定

主資料庫到此配置完畢

配置從伺服器

修改/etc/my.cnf增加一行

server-id=2

:重啟服務

service mysql restart

通過mysql命令配置同步日誌的指向:(類似於redisslaveof掛接主從)

mysql>change master to master_host='106.75.74.254', master_port=3306,

master_user='root',master_password='root',

master_log_file='mysql-bin.000001',

master_log_pos=120;

master_host        主伺服器的IP地址

master_port        主伺服器的PORT埠

master_log_file    和主伺服器show master status中的File欄位值相同

master_log_pos        和主伺服器show master status中的Position欄位值相同

mysql>start slave;                #stop slave;停止服務,出錯時先停止,再重新配置

mysql>show slave status\G;        #檢視SLAVE狀態,\G結果縱向顯示。必須大寫,這個命令無法再sqlyog中使用

service mysql restart        #重啟服務

 

注意:如果出錯,可以看後面的錯誤資訊。觀察Slave_SQL_Running_State欄位,它會記錄詳細的錯誤資訊

 

測試同步狀態

案例1:在主中建立表格,插入資料

觀察從

案例2:將從節點中插入資料,然後在主裡繼續新增資料

觀察主,從狀態

案例3:對第二個案例的資料在主中進行變更,

觀察從

由於第二步操作主從結構失效

 

這是發現沒法同步,呼叫show slave status 發現已經報錯

sql執行緒已經不工作了

id為3的重複,在從中有資料了

 

重新掛接(不能夠輕易的在單機熱備的從節點中操作寫

錯誤資料必須清除或者調整正確否則繼續主從失效

檢視主節點中的二進位制檔名稱 pos

停止從節點的從狀態

stop slave

show master status;

在從節點中把查詢出來的最新資料放到命令裡掛接主節點

啟動從節點的slave

start slave

但是這個時候發現id為3的對應b1欄位的值沒有改

 

所以mysql雖然支援主從關係但是並沒有維護讀寫分離的狀態

Mysql的雙機熱備

      

搭建步驟

按照主從的關係將新的主從掛接

1 開啟主節點二進位制

2 檢視主節點的二進位制檔名稱和position

3 在從節點掛接

4 啟動從節點的執行緒

start slave

5 測試,將其中任何一個宕機,在另外一臺伺服器寫入新的資料,觀察宕機啟動的資料庫中有沒有宕機期間的更新資料-->有,雙機熱備