Oi Matheus, tudo bom?
Uma abordagem é você deixar duas configurações de banco disponiveis no seu arquivo application/config/database.php:
// primeira base, padrão
$db['default']['hostname'] = 'ip';
$db['default']['username'] = 'usuario';
$db['default']['db_debug'] = FALSE;
//outras configs da base, como senha, etc
// segunda base
$db['second']['hostname'] = 'outroIp';
$db['second']['username'] = 'outroUsuario';
//outras configs da base, como senha
A partir disso, você pode chamar criar uma classe responsavel por carregar a primeira base de dados, caso de algo errado, a gente carrega a segunda:
class CheckDatabase {
private $CI = '';
public $DB1 = '';
public $DB2 = '';
function __construct()
{
$this->CI = &get_instance();
// aqui a gente setta o segundo parametro como true para que haja o retorno da instancia
$this->DB1 = $this->CI->load->database('default',TRUE);
// caso essa instância não tenha id, a gente carrega a segunda no else
if(FALSE !== $this->DB1->conn_id)
{
return $this->DB1;
}
else
{
$this->DB2 = $this->CI->load->database('second',TRUE);
if(FALSE !== $this->DB2->conn_id)
{
return $this->DB2;
}
else
{
return FALSE;
}
}
}
}
Chamando essa classe você saberá em qual banco se conectar. A ideia pode ser expandida para mais de 2 bases.
Abraço