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命令配置同步日誌的指向:(類似於redis的slaveof掛接主從)
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 測試,將其中任何一個宕機,在另外一臺伺服器寫入新的資料,觀察宕機啟動的資料庫中有沒有宕機期間的更新資料-->有,雙機熱備