用MySQL內建復制來最佳化可用性(五)

第四步:修改你的數據庫連接程序
  既然你已經在A機和B機之間建立瞭一個相互的關系,你需要修改數據庫連接程序,以便從這種方式中得到好處。下面的函數首先試圖與A機連接,如果不能建立連接則與B機連接。
$#@60;?php
/********************************************************
function db_connect()
returns a link identifier on success, or false on error
********************************************************/
function db_connect(){
$username = “replUser”;
$password = “password”;
$primary = “10.1.1.1”;
$backup = “10.1.1.2”;
# attempt connection to primary
if(!$link_id = @mysql_connect($primary, $username, $password))
# attempt connection to secondary
$link_id = @mysql_connect($secondary, $username, $password)
return $link_id;
}
?$#@62;
  我在兩種情況下對使用瞭上面技術的數據庫連接建立過程進行瞭測試,一種是主MySQL服務程序關閉瞭,但是服務器還在運行,另一種情況是主服務器關閉瞭。如果隻是mysqld關閉瞭,連接會馬上轉向備機;但是如果整個服務器關閉瞭,就出現瞭無限地等待(兩分鐘後我放棄瞭跟蹤 — 很短的註意跨度),因為PHP在查找一個不存在的服務器。不幸地是,不象fsockopen函數,mysql_connect函數沒有一個超時參數,然而我們可以使用fsockopen來模擬一個超時處理。

You May Also Like