gnumake-3.81),源碼編譯 MySQL 5.1.30/etc/my.cnf:Master log-bin + server-id=1;Slave server-id=2/3/4 + --log-bin 啟動repl,GRANT REPLICATION SLAVEFLUSH TABLES WITH READ LOCK → SHOW MASTER STATUS → tar 備份數據 → UNLOCK TABLESCHANGE MASTER TO → START SLAVE → SHOW SLAVE STATUS\G 驗證sqlslave IN CNAME sqlslave1 sqlslave IN CNAME sqlslave2 sqlslave IN CNAME sqlslave3
客戶端查詢 sqlslave.yourdomain 隨機解析到 3 台 Slave。
// mysql_connect_master.php
$link = @mysql_connect("sqlmaster.yourdomain", "user", "pass");
@mysql_select_db("repl_db");
// mysql_connect_slave.php
$link = @mysql_connect("sqlslave.yourdomain", "user", "pass");
@mysql_select_db("repl_db");
// 業務邏輯
if (stripos($sql, "SELECT")) {
include_once("./mysql_connect_slave.php");
} else {
include_once("./mysql_connect_master.php");
}
mysql_query($sql);
mysql_close();
STOP SLAVE; GRANT REPLICATION SLAVE ...; RESET MASTER;CHANGE MASTER TO 指向新 Master假設寫 10%、讀 90%、寫耗時 2× 讀,3 Slave 理論吞吐提升 2.2 倍(11:5),扣除應用層開銷仍提升 ~1 倍。
FLUSH PRIVILEGES 不復制,需手動同步權限變更slave-skip-errors=all 防複製中斷