锟斤拷锟斤拷谋锟斤拷锟� PHP MySQL 锟斤拷锟接的匡拷锟狡o拷锟铰斤拷锟斤拷锟接伙拷锟揭伙拷锟斤拷锟斤拷映锟斤拷谢锟饺★拷锟斤拷锟斤拷锟斤拷锟斤拷 client-server 锟侥碉拷一锟斤拷锟接凤拷式锟斤拷锟斤拷锟接池帮拷锟斤拷一锟斤拷 master 锟斤拷锟接o拷锟酵匡拷选锟斤拷目锟斤拷 slave 锟斤拷锟接★拷
锟斤拷锟接筹拷锟叫碉拷每一锟斤拷锟斤拷锟接讹拷锟斤拷锟皆硷拷锟斤拷状态锟斤拷锟斤拷锟界:SQL 锟矫伙拷锟斤拷锟斤拷锟斤拷锟斤拷时锟斤拷锟斤拷锟斤拷状态锟斤拷 锟斤拷锟叫碉拷锟斤拷锟斤拷状态锟斤拷锟皆参匡拷 锟斤拷锟接筹拷锟斤拷锟叫伙拷 说锟斤拷锟斤拷 锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷要为锟斤拷锟截撅拷锟斤拷锟叫伙拷锟斤拷锟接o拷应锟矫匡拷锟杰得碉拷一锟斤拷锟斤拷同状态锟斤拷锟斤拷锟接★拷 应锟矫憋拷锟斤拷锟杰癸拷锟斤拷锟斤拷锟斤拷些锟斤拷锟解。
Example #1 锟斤拷锟斤拷锟斤拷一锟斤拷 master 锟斤拷一锟斤拷 slave 锟侥诧拷锟�
{ "myapp": { "master": { "master_0": { "host": "localhost", "socket": "\/tmp\/mysql.sock" } }, "slave": { "slave_0": { "host": "192.168.2.27", "port": "3306" } } } }
Example #2 锟斤拷锟藉:锟斤拷锟斤拷状态锟斤拷 SQL 锟矫伙拷锟斤拷锟斤拷
<?php
$mysqli = new mysqli("myapp", "username", "password", "database");
if (!$mysqli)
/* Of course, your error handling is nicer... */
die(sprintf("[%d] %s\n", mysqli_connect_errno(), mysqli_connect_error()));
/* 锟斤拷锟斤拷 1锟斤拷锟斤拷 SQL 锟矫伙拷锟斤拷锟斤拷锟斤拷锟斤拷为没锟斤拷 SELECT 锟斤拷锟斤拷锟斤拷 master 锟斤拷执锟斤拷 */
if (!$mysqli->query("SET @myrole='master'")) {
printf("[%d] %s\n", $mysqli->errno, $mysqli->error);
}
/* 锟斤拷锟斤拷 2锟斤拷锟斤拷为锟斤拷 SELECT 锟斤拷锟斤拷锟斤拷 slave 锟斤拷执锟斤拷 */
if (!($res = $mysqli->query("SELECT @myrole AS _role"))) {
printf("[%d] %s\n", $mysqli->errno, $mysqli->error);
} else {
$row = $res->fetch_assoc();
$res->close();
printf("@myrole = '%s'\n", $row['_role']);
}
$mysqli->close();
?>
锟斤拷锟斤拷锟斤拷锟教伙拷锟斤拷锟斤拷锟�
@myrole = ''
锟斤拷锟斤拷锟斤拷锟剿革拷锟截撅拷锟斤拷锟斤拷锟接o拷锟斤拷锟斤拷执锟斤拷锟斤拷锟斤拷锟斤拷询锟斤拷 锟斤拷一锟斤拷锟斤拷询 SET @myrole='master' 没锟斤拷锟斤拷 SELECT 锟斤拷头锟斤拷然锟斤拷锟斤拷锟斤拷锟斤拷识锟斤拷锟斤拷锟斤拷一锟斤拷应锟斤拷锟斤拷 slave 锟斤拷执锟叫的诧拷询锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷 master 锟斤拷执锟叫★拷 锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟� master 锟斤拷锟斤拷锟叫o拷master 锟斤拷锟斤拷锟借定锟斤拷锟侥憋拷锟剿★拷
然锟斤拷执锟斤拷 SELECT @myrole AS _role 锟斤拷询锟斤拷锟筋将锟斤拷锟斤拷识锟斤拷为只锟斤拷锟斤拷询锟斤拷 锟斤拷锟揭凤拷锟酵革拷 slave 锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟窖拷锟斤拷锟斤拷锟斤拷魏锟斤拷丫锟斤拷瓒拷锟� SQL 锟矫伙拷锟斤拷锟斤拷锟斤拷 锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷瓒拷锟斤拷说锟揭伙拷锟绞癸拷玫锟� master 锟斤拷锟斤拷锟斤拷锟芥。锟斤拷锟皆凤拷锟斤拷锟斤拷锟斤拷印 @myrole = ''锟斤拷
锟斤拷锟角匡拷锟斤拷锟斤拷员锟斤拷锟斤拷注锟斤拷锟斤拷锟斤拷猓拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟接的变化锟斤拷锟斤拷锟� 锟斤拷要锟斤拷锟斤拷锟斤拷械谋浠拷锟斤拷锟斤拷锟斤拷拇锟斤拷锟斤拷锟� CPU 锟斤拷源锟斤拷
锟斤拷然锟斤拷锟斤拷锟斤拷锟藉,锟斤拷锟斤拷通锟斤拷 SQL hints 锟斤拷锟斤拷锟�