===== MySQLレプリケーション環境対応 =====
==== 動作概要  ====
通常はスレーブに接続
↓
更新クエリ実行前にマスターに接続
↓
更新クエリ実行
↓
更新クエリ実行後、スレーブに接続を戻す
↓
通常スレーブに接続
==== app/config/database.php  ====
class DATABASE_CONFIG {
   var $default = array( // as MySQL slave server
       'driver'        => 'mysql',
       'persistent'    => false,
       'host'          => 'スレイブのホスト',
       'login'         => 'ユーザー名',
       'password'      => 'パスワード',
       'database'      => 'DB名',
       'encoding'      => 'utf8'
   );
   var $master = array( // as MySQL master server
       'driver'        => 'mysql',
       'persistent'    => false,
       'host'          => 'マスターのホスト',
       'login'         => 'ユーザー名',
       'password'      => 'パスワード',
       'database'      => 'DB名',
       'encoding'      => 'utf8'
   );
}
==== app/app_model.php  ====
useDbConfig;
        $this->setDataSource('master');
        $val = parent::save($data, $validate, $fieldList);
        $this->setDataSource($oldDb);
        return $val;
    }
    function updateAll($fields, $conditions = true) {
        $oldDb = $this->useDbConfig;
        $this->setDataSource('master');
        $val = parent::updateAll($fields, $conditions);
        $this->setDataSource($oldDb);
        return $val;
    } 
    function delete($id = null, $cascade = true) {
        $oldDb = $this->useDbConfig;
        $this->setDataSource('master');
        $val = parent::delete($id, $cascade);
        $this->setDataSource($oldDb);
        return $val;
    } 
    function deleteAll($conditions, $cascade = true, $callbacks = false) {
        $oldDb = $this->useDbConfig;
        $this->setDataSource('master');
        $val = parent::deleteAll($conditions, $cascade, $callbacks);
        $this->setDataSource($oldDb);
        return $val;
    }
}
==== query べた書きのとき(ORM通さない)  ====
$sql = 'upate users ...';
$oldDb = $this->useDbConfig;
$this->setDataSource('master');
if(!$this->query($sql)) {
    $this->setDataSource($oldDb);
    return false;
}
$this->setDataSource($oldDb);