程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> 在UNIX系統下安裝MySQL

在UNIX系統下安裝MySQL

編輯:關於MYSQL數據庫

在Soundbreak我們每天24小時不間斷地播放實況音頻和視頻,所以對於MySQL的新增的復制特性,我們不能做出很令人信服的測試。通過測試我們發現,可以使用這個特性來與備份數據庫服務器保持數據同步,這樣當主服務器因為某種原因處理失效時,能夠使用備份機處理所有的查詢。對於這樣的要求,配置兩台服務器並不困難。我將詳細討論整個處理過程,同時討論一下當主服務器失效時,如何使用PHP來重定向查詢。

MySQL內部復制功能是建立在兩個或兩個以上服務器之間,通過設定它們之間的主-從關系來實現的。其中一個作為主服務器,其它的作為從服務器。我將詳細討論如何配置兩台服務器,將一個設為主服務器,另一個設為從服務器。並且描述一下在它們之間進行切換的處理過程。我是在MySQL的3.23.23版本上進行的配置設置過程,並且也是在這個版本上進行的測試。MySQL開發人員建議最好使用最新版本,並且主-從服務器均使用相同的版本。同時MySQL 3.23版本仍然是beta測試版,而且這個版本可能不能向下兼容。所以因為這個原因,在實際的網站中,我現在還沒有使用這個版本。擁有容錯能力具有一個好處是,在不需中斷任何查詢的情況下,對服務器進行升級。

第一步:配置主服務器

在這篇文章的剩下篇幅中,我將指定兩台服務器。A(IP為10.1.1.1)作為主服務器(簡稱為主機)。B(IP為10.1.1.2)作為後備服務器(簡稱為備機)。

MySQL的復制功能的實現過程為:備機(B)與主機(A)連接,然後讀出主機的二進制更新日志,再將發生的變化合並到自已的數據庫中。備機需要一個用戶帳號來與主機連接,所以在主機上創建一個帳號,並只給它FILE權限,如下操作:

GRANT FILE ON *.* TO [email protected] IDENTIFIED BY 'passWord';

為了備機能夠與主機連接,要在主機上運行'FLUSH PRIVILEGES',不過不要擔心,因為我們將在下面的步驟中停掉服務器。

現在我們需要主機數據庫的一個快照,並且對主機進行配置,允許生成二進制的更新日志。首先編輯'my.cnf'文件,以便允許二進制更新日志,所以在[mysqld]部分的下面某個地方增加一行:'log-bin'。在下一次服務器啟動時,主機將生成二進制更新日志(名為:<主機名>-bin.<增量序號#>)。為了讓二進制更新日志有效,關閉MySQL服務程序,然後將主機上的所有數據庫目錄到另一個目錄中,接著重新啟動MySQLd。

請確定得到了所有數據庫,否則在進行復制時,如果一個表在主機上存在但在備機上不存在,將因為出錯而退出。現在你已經得到了數據的快照,和一個從建立快照以來的二進制日志,上面記錄著任何對數據庫的修改。請注意MySQL數據文件(*.MYD,*.MYI和*.frm)是依賴於文件系統的,所以你不能僅僅進行文件傳輸,如從Solaris到Linux。如果你處於一個異種的服務器環境,你將不得不使用MySQLdump實用程序或其它的定制腳本來得到數據快照。

第二步:配置備機

讓我們繼續。停掉備機上的MySQL服務程序,並且把從主機上拷貝來的數據庫目錄移到備機上的data目錄下。請確認將目錄的擁有者和屬組改變為MySQL用戶相應值,並且修改文件模式為660(只對擁有者和屬組可讀、可寫),目錄本身為770(只對擁有者和屬組可讀、可寫和可執行)。

繼續。在備機上啟動MySQL服務程序,確認MySQL工作正常。運行幾個select查詢(不要update或insert查詢),看一看在第一步中得到的數據快照是否成功。接著,在測試成功後關掉MySQL服務程序。

在備機上配置需要訪問的主機,以便接收主機的更改。所以需要編輯務機上的'my.cnf'文件,在[MySQLd]部分中增加下面幾行:

master-host=10.1.1.1

master-user=replicate

master-password=passWord

在啟動備機服務程序後,備機服務程序將查看在'my.cnf'文件中所指定的主機,查看是否有改變,並且將這些改變合並到自已的數據庫中。備機保持了主機的更新記錄,這些記錄是從主機的'master.info'文件中接收下來的。備機線程的狀態可以通過sql命令'SHOW SLAVE-STATUS'看到。在備機上處理二進制日志中如果

發生錯誤,都將導致備機線程的退出,並且在*.err的日志文件中生成一條信息。然後錯誤可以被改正,接著可以使用sql語句'SLAVE START'來重新啟動備機線程。線程將從主機二進制日志處理中斷的地方繼續處理。

至此,在主機上所發生的數據改變應該已經復制到備機上了,要測試它,你可以在主機上插入或更新一條記錄,而在備機上選擇這條記錄。

現在我們擁有了從A機到B機的這種主-從關系,這樣當A機可能當機的時候,允許我們將所有的查詢重定向到B機上去,但是當A機恢復時,我們沒有辦法將發生的改變恢復到A機中去。

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