Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Redundancia com banco de dados mysql

Boa tarde. Estou com uma duvida, vamos iniciar em um sistema a questão de redundância da base de dados, mas, como o codeigniter ira saber que existe outra base caso a principal fique inativa?

Existe algo próprio para o codeigniter identificar essa segunda base?

Obrigado.

2 respostas
solução!

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

Boa tarde. Muito obrigado pelo retorno.