MYSQL 網頁設計 技巧
YAHOO呢排做乜成日upload日誌失敗架!!!!!!!!!!
通過鏡像機制可把數據從一個地方複製到另一個地方,並能實現同步兩個或多個地方既數據。
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啟動選項修改文件名。
留言列表