所谓多数据的从主关系及读写分离,由于某种原因时,当主数据库不能访问或连接时,系统会认定为“故障转移”, 这些“故障转移”可以通过设置“故障转移”指定的数据库,从而使网站不会随数据库而挂掉。

打开/config/database.php文件:

<?php
if (!defined('BASEPATH')) exit('No direct script access allowed');
$active_group	= 'default';
$query_builder	= TRUE;
$db['default']	= array(
	... 以上是默认内容 ...
);
	... 以上是默认内容 ...
#以下是我为“default”设置故障处理库

$db['default']['failover'] = array(
    array(
    	'dsn'		=> '',
	'hostname'	=> '127.0.0.1', // 备用数据1
	'username'	=> 'root',
	'password'	=> '',
	'port'		=> '3306',
	'database'	=> 'vip',
	'dbdriver'	=> 'mysqli',
	'dbprefix'	=> 'dr_',
	'pconnect'	=> FALSE,
	'db_debug'	=> TRUE,
	'cache_on'	=> FALSE,
	'cachedir'	=> 'cache/sql/',
	'char_set'	=> 'utf8',
	'dbcollat'	=> 'utf8_general_ci',
	'swap_pre'	=> '',
	'autoinit'	=> FALSE,
	'encrypt'	=> FALSE,
	'compress'	=> FALSE,
	'stricton'	=> FALSE,
    ),
    array(
    	'dsn'		=> '',
	'hostname'	=> '127.0.0.1', // 备用数据2
	'username'	=> 'root',
	'password'	=> '',
	'port'		=> '3306',
	'database'	=> 'vip2',
	'dbdriver'	=> 'mysqli',
	'dbprefix'	=> 'dr_',
	'pconnect'	=> FALSE,
	'db_debug'	=> TRUE,
	'cache_on'	=> FALSE,
	'cachedir'	=> 'cache/sql/',
	'char_set'	=> 'utf8',
	'dbcollat'	=> 'utf8_general_ci',
	'swap_pre'	=> '',
	'autoinit'	=> FALSE,
	'encrypt'	=> FALSE,
	'compress'	=> FALSE,
	'stricton'	=> FALSE,
    ),
);

你可以设置多个备用库来应付故障的处理,当然前提需要这些库的数据同步(一般数据库服务器有这种同步机制)。

文档最后更新时间:2015-02-26 11:07:30