程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> MySQL 新功能測試(3)

MySQL 新功能測試(3)

編輯:關於MYSQL數據庫
    提示:MySQL內部復制功能是建立在兩個或兩個以上服務器之間,通過設定它們之間的主-從關系來實現的。其中一個作為主服務器,其它的作為從服務器。我將詳細討論如何配置兩台服務器,將一個設為主服務器,另一個設為從服務器。並且描述一下在它們之間進行切換的處理過程。我是

 

 第五步:一個改進的數據庫連接程序

        /********************************************************
  function db_connect_plus()

  returns a link identifIEr on success, or false on error

  ********************************************************/

  function db_connect_plus(){

  ?$username = "username";

  ?$password = "passWord";

  ?$primary = "10.1.1.1";

  ?$backup = "10.1.1.2";

  ?$timeout = 15; // timeout in seconds

  if(?$fp = fsockopen(?$primary, 3306, &?$errno, &?$errstr,

  ?$timeout)){

  fclose(?$fp);

  return ?$link = MySQL_connect(?$primary, ?$username, ?$passWord);

  }

  if(?$fp = fsockopen(?$secondary, 3306, &?$errno, &?$errstr,

  ?$timeout)){

  fclose(?$fp);

  return ?$link = MySQL_connect(?$secondary, ?$username, ?$passWord);

  }

  return 0;

  }

  ?>
 
  這個新改進的函數向我們提供了一個可調的超時特性,這正是mysql_connect函數所缺少的。如果連接立即失敗,這種情況如機器"活"著,但MySQLd"當"掉了,函數立即移到第二個服務器。上面的函數相當健壯,在試圖進行連接之前先測試一下,查看服務程序是否在指定端口進行監聽,讓你的腳本在一段可接受的時間段後超時,允許你適當地對出錯情況進行處理。如果你修改了缺省端口3306,請保證對端口號進行修改。

  結論和意見

  首先,要確定得到了一個完整的數據快照。如果忘記拷貝一個表或數據庫將導致備機線程序停止。生成快照的時刻是很關健的。你應該確保在拷貝數據文件之前二進制日志功能是無效的。如果在得到快照之前就允許了二進制日志功能,備機的線程可能會停止,原因就是當線程試圖導入重要的記錄時,可能會由於主鍵重復而停止。最好就是接照第二部分所討論的處理辦法來做:關閉-拷貝-允許二進制日志功能重啟。

  你可能想要按照最初的一種方式來配制復制處理,並且在合適的時間關注備機,確保備機與主機保持同步。

  我沒有測試過一個使用了復制特性的系統的負載平衡處理性能,但是我會靈活地使用這樣系統來平衡插入和更新。例如,如果在兩台服務器上兩條記錄都給出了同一個auto_increment值,這種情況備機線程會在哪一條記錄上停掉呢?象這樣的問題將會讓負載平衡作為只讀的處理,一台服務器處理所有的插入和更新,同時一組備機(是的,你可以有多個與主機分離的備機)處理所有的選擇。

  我非常高興,MySQL已經具備了復制系統的某些功能,並且配置很簡單。使用它,你就可以開始針對失控的事件提供額外的安全措施了。我僅僅涉及了復制特性,這個我已經測試並且使用了,但是在MySQL的在線文檔中的第11部分有中更詳細的說明。

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