锟斤拷锟斤拷锟酵凤拷片

锟斤拷锟捷匡拷群锟斤拷锟斤拷锟斤拷锟节革拷锟街革拷锟斤拷锟斤拷原锟斤拷锟斤拷锟侥o拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟教达拷锟襟,诧拷锟斤拷 锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷同时锟斤拷锟斤拷锟侥碉拷锟斤拷锟杰★拷群锟斤拷锟斤拷时锟斤拷锟斤拷戏锟斤拷锟斤拷凸锟斤拷锟斤拷埽锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷拥锟斤拷锟斤拷锟� 锟街诧拷筛锟斤拷蛹虻サ锟斤拷锟斤拷瘢锟斤拷涌煽氐牡锟皆拷锟�

锟斤拷锟斤拷锟斤拷锟街э拷指锟斤拷指锟斤拷锟斤拷锟� MySQL 群锟介,一些群锟斤拷锟斤拷锟斤拷锟揭恍╋拷锟斤拷锟斤拷凸锟斤拷锟侥凤拷锟斤拷锟斤拷锟斤拷锟角匡拷锟斤拷 锟斤拷透锟斤拷锟斤拷使锟矫★拷锟斤拷锟街э拷锟斤拷畛o拷玫锟� MySQL 锟斤拷锟斤拷同锟斤拷锟斤拷锟斤拷撕凸锟斤拷锟� (应锟矫硷拷锟斤拷锟斤拷)锟斤拷

MySQL 锟斤拷锟斤拷同锟斤拷支锟街癸拷锟剿凤拷式锟侥凤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟姐创锟斤拷锟斤拷锟斤拷锟斤拷锟捷匡拷同锟斤拷锟斤拷锟斤拷锟竭诧拷锟斤拷锟斤拷锟捷匡拷同锟斤拷锟斤拷 锟斤拷锟斤拷锟斤拷要锟斤拷应锟斤拷锟杰癸拷拥锟斤拷同锟斤拷锟侥诧拷锟皆o拷锟斤拷锟斤拷锟酵拷锟� node_groups 锟街讹拷锟斤拷支锟斤拷锟斤拷锟斤拷锟斤拷裕锟斤拷锟斤拷锟绞癸拷锟绞碉拷锟斤拷锟斤拷实谋锟斤拷锟斤拷锟斤拷锟斤拷

锟斤拷 1.5.0 锟芥本锟斤拷始锟斤拷锟斤拷锟斤拷通锟斤拷锟节碉拷锟斤拷锟斤拷撕锟� SQL hints 锟斤拷锟斤拷侄锟斤拷姆锟斤拷锟斤拷凸锟斤拷锟� 锟节碉拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷憬� master 锟斤拷 slave 锟斤拷锟斤拷锟斤拷一锟斤拷锟斤拷锟脚★拷 锟斤拷锟斤拷锟叫o拷 master_0 锟斤拷 slave_0 锟斤拷锟斤拷锟斤拷一锟斤拷锟斤拷锟斤拷为 Partition_A 锟斤拷锟斤拷锟叫★拷锟斤拷锟斤拷锟杰癸拷锟斤拷全锟斤拷锟斤拷锟揭伙拷锟饺猴拷椤� 锟斤拷锟界,锟斤拷锟斤拷锟绞癸拷锟揭伙拷锟斤拷诘锟饺猴拷锟斤拷锟斤拷诠锟斤拷锟斤拷锟斤拷锟绞癸拷锟绞癸拷锟饺猴拷锟斤拷锟斤拷锟斤拷锟轿伙拷锟斤拷锟街凤拷锟斤拷锟� 锟斤拷锟斤拷 Shard_A_Range_0_100

Example #1 Cluster node groups

{
  "myapp": {
       "master": {
            "master_0": {
                "host": "localhost",
                "socket": "\/tmp\/mysql.sock"
            }
        },
        "slave": {
            "slave_0": {
                "host": "simulate_slave_failure",
                "port": "0"
            },
            "slave_1": {
                "host": "127.0.0.1",
                "port": 3311
            }
        },
        "filters": {
            "node_groups": {
                "Partition_A" : {
                    "master": ["master_0"],
                    "slave": ["slave_0"]
                }
            },
           "roundrobin": []
        }
    }
}

Example #2 通锟斤拷 SQL hints 锟斤拷锟斤拷侄锟斤拷锟斤拷锟�

<?php
function select($mysqli$msg$hint '') {
  
/* Note: weak test, two connections to two servers may have the same thread id */
  
$sql sprintf("SELECT CONNECTION_ID() AS _thread, '%s' AS _hint FROM DUAL"$msg);
  if (
$hint) {
    
$sql $hint $sql;
  }
  if (!(
$res $mysqli->query($sql))) {
    
printf("[%d] %s"$mysqli->errno$mysqli->error);
    return 
false;
  }
  
$row =  $res->fetch_assoc();
  
printf("%d - %s - %s\n"$row['_thread'], $row['_hint'], $sql);
  return 
true;
}

$mysqli = new mysqli("myapp""user""password""database");
if (!
$mysqli)
  
/* Of course, your error handling is nicer... */
  
die(sprintf("[%d] %s\n"mysqli_connect_errno(), mysqli_connect_error()));

/* All slaves allowed */
select($mysqli"slave_0");
select($mysqli"slave_1");

/* only servers of node group "Partition_A" allowed */
select($mysqli"slave_1""/*Partition_A*/");
select($mysqli"slave_1""/*Partition_A*/");
?>
6804 - slave_0 - SELECT CONNECTION_ID() AS _thread, 'slave1' AS _hint FROM DUAL
2442 - slave_1 - SELECT CONNECTION_ID() AS _thread, 'slave2' AS _hint FROM DUAL
6804 - slave_0 - /*Partition_A*/SELECT CONNECTION_ID() AS _thread, 'slave1' AS _hint FROM DUAL
6804 - slave_0 - /*Partition_A*/SELECT CONNECTION_ID() AS _thread, 'slave1' AS _hint FROM DUAL

默锟较的o拷锟斤拷锟绞癸拷锟斤拷锟斤拷锟斤拷锟斤拷玫锟� master 锟斤拷 slave 锟斤拷锟叫诧拷询锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟揭伙拷锟斤拷锟窖拷锟绞癸拷锟� /*node_group*/ 锟斤拷 SQL hint锟斤拷锟斤拷么锟斤拷锟斤拷锟街皇癸拷锟斤拷锟� node_group 锟叫筹拷锟侥凤拷锟斤拷锟斤拷锟斤拷锟叫诧拷询锟斤拷锟斤拷锟斤拷锟斤拷锟皆o拷SELECT 锟斤拷询锟斤拷锟斤拷锟斤拷只锟斤拷锟斤拷 /*Partition_A*/ 锟叫筹拷锟斤拷 slave_0 锟叫斤拷锟叫★拷