所谓多数据的从主关系及读写分离,由于某种原因时,当主数据库不能访问或连接时,系统会认定为“故障转移”, 这些“故障转移”可以通过设置“故障转移”指定的数据库,从而使网站不会随数据库而挂掉。
打开/config/database.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,
),
);
你可以设置多个备用库来应付故障的处理,当然前提需要这些库的数据同步(一般数据库服务器有这种同步机制)。