程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> MySQL服務器鏡像配置

MySQL服務器鏡像配置

編輯:關於MYSQL數據庫

    通過鏡像機制可把數據從一個地方復制到另一個地方,並能實現同步兩個或多個地方的數據。

MySQL服務器也支持鏡像,大提高數據的安全性和穩定性。下面介紹一下MySQL數據中的鏡像機制:

在鏡像關系中,一個MySQL服務器扮演主服務器角色,另外一個或多個服務器扮演從服務器角色,從服務器中的數據和主服務器中的數據完全一樣。

在鏡像建立之前,主服務器和從服務器必須進行一次完全同步。同步之後,在主服務器上所做的操作將會在從服務器上再實現,主服務器上的操作不是直接作用於從服務器上的。

負責在主、從服務器上傳輸各種修改動作的媒介是主服務器上的二進制變更日志,該日志記錄著主服務器上所有的操作動作。因此,主服務器必須激活二進制日志功能。

從服務器必須有足夠的權限從主服務器上接收二進制日志文件。鏡像協調信息記錄從服務器的進展情況,包括,從服務器正在讀取的二進制變更日志文件名和它在該文件裡的當前讀寫位置。

每個主服務器可以有多個從服務器,但每個從服務器只能有一個主服務器。但MySQL服務器允許把一個從服務器作為另一個從服務器的主服務器,這樣就可創建一個鏡像服務器鏈。

鏡像機制在MySQL中還是一個新生事物,最早實現於3.23.15版。各版本間的鏡像能力有差異,一般來說,建議大家盡量使用最新的版本,下面列舉了不同版本的MySQL服務器在鏡像機制方面的兼容規則:

3.23.x系統版本的從服務器不能與4.x系統版本的主服務器通信。

4.0.0版本的從服務器只能與4.0.0版本的主服務器通信。

4.0.1或更高版本的從服務器既能與3.23.x系統版本的主服務器通信,也能與4.x系統版本的主服務器通信。但後一種情況要求主服務器的版本號等於或大於從服務器的版本號。

一般來說,建議遵循以下原則:

要盡可能地讓主服務器和從服務器都使用同一版本系統。

在選定系統後,盡量使用該系統的最新版本。

建立主從鏡像服務器的步驟:

確定主從服務器的鏡像ID號,主從服務器的ID號不能相同。在啟動主從服務器時,用--server_id啟動選項給出其ID。

從服務器必須在主服務器上有一個具備足夠的權限的帳戶,從服務器將使用該帳戶去連接主服務器並請求主服務器把二進制變更日志發送給它。可用以下命令創建這個帳戶:

MySQL> GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'slave_host' IDENTIFIED BY 'slave_pass';
#REPLICATION權限只MySQL4.0.2後版本,之前的版本請用FILE權限。
把主服務器上的數據庫文件拷貝到從服務器上完成最初同步工作。也可用備份後再加載的方法。在MySQL 4.0.0及以後版本裡,還可用在主服務器上運行LOAD DATA FROM MASTER語句來建立從服務器。但有約束條件:

數據表要全部是MyISAM表

為發出這條指令而在連接從服務器時使用的帳戶必須有SUPER權限。

從服務器用來連接主服務器的帳戶必須具備RELOAD和SUPER權限。注意,這是一個主服務器上的帳戶,而用來發出LOAD DATA FROM MASTER語句的帳戶是一個從服務器上的帳戶。

LOAD DATA FROM MASTER語句在執行時需申請一個全局性的讀操作鎖,這個鎖在語句執行期間阻塞主服務器上一切的寫操作。

無論用哪種方法同步數據,都要確保在開始制作備份到給主服務器重新配置好二進制日志功能這段時間,不能在主服務器上發生修改操作。

關閉服務器。

對主服務器的配置進行修改--把它的鏡像ID告訴它並激活其二進制日志功能。在主服務器要讀取的選項文件內增加以下內容:

[MySQLd]
server-id=master_server_id
log-bin=binlog_name
重新啟動主服務器,從現在開始,它將把客戶對數據庫的修改操作記錄到二進制變更日志裡。如果在此之前已經激活了二進制日志功能,則要在重啟前把二進制變更日志備份下來,在重啟後再發一條RESET MASTER語句去清除現有的二進制變更日志。

關閉從服務器。

對從服務器進行配置,使它知道自已的鏡像ID,到哪裡去找主服務器以及如何去連接主服務器。配置內容如下:

[MySQLd]
server-id=slave_server_id
master-host=master_host
master-user=slave_user          #在主服務器上為從服務器建立的帳戶
msater-passWord=slave_pass      #在主服務器上為從服務器建立的帳戶的密碼
master-connet-retry=30         #設置連接重試間隔,默認為60秒
master-retry-count=100000       #設置重試次數,默認為86400次
注:最後兩個選項在網絡連接不可靠時設置
重新啟動從服務器。從服務器用兩個信息源來確定它自已在鏡像工作中的進度位置:一個是數據目錄中的master.info文件,另一個是啟動選項所給定的配置信息。第一次啟動從服務器時,master.info文件不存在,從服務器會根據選項文件中給出的各種master-xxx選項值去連接主服務器。一旦連接成功,從服務器會創建一個master.info文件以保存各種連接參數和它自已的鏡像工作狀態。如果以後再重啟從服務器,從服務器會優先讀取該文件,而不是選項文件。所以如果你修改了選項文件的內容,想該選項生效就要刪除master.info文件並重啟從服務器。

以上步驟是鏡像所有數據庫的操作過程,如果我們想把mysql權限數據保留在主服務器上,排除在鏡像機制外的話,可用在選項文件的[mysqld]中加入--binlog-ignore-db=mysql選項,這樣,MySQL數據庫上的操作就不會記錄在二進制變更日志裡。如要排除其它數據庫,只要增加多幾個該選項即可。

通過以下幾個命令可監控和管理主從服務器:

SLAVE STOP,SLAVE START用於掛起來恢復從服務器上鏡像,如當備份時,可用該語句讓從服務器暫時停止鏡像活動。

SHOW SLAVE STATUS,在從服務器上查看其鏡像協調信息,這些信息可以用來判斷哪些二進制變更日志已經不再使用。

PURGE MASTER,在主服務器上對二進制變更日志進行失效處理。刪除所有從服務器都不再使用的二進制變更日志。

CHANGE MASTER,在從服務器上修改鏡像參數。如正在讀取主服務器上哪個二進制變更日志,正在寫哪個中繼日志文件等。

在MySQL4.0.2之後版本中,鏡像機制中的從服務器由兩個內部線程組成:

一個叫“I/O線程”,負責與主服務器通信,請求主服務器發送二進制變更日志,並把接收到的數據修改命令寫入某個中繼日志文件;用SLAVE STOP IO_THREAD或SLAVE START IO_THREAD可掛起或恢復該線程。

另一個叫“SQL線程”,負責從中繼日志中讀取數據修改命令並執行。同理,用SLAVE STOP SQL_THREAD或SLAVE START SQL_THREAD可掛起或恢復該線程。

中繼日志文件默認的文件為hostname-relay-bin.nnn和hostname-relay-bin.index。可用從服務器的--relay-log和--relay-log-index選項修改。在從服務器中還有一個relay-log.info中繼信息文件,可用--relay-log-info-file啟動選項修改文件名。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved