CONECTAR BASE DE DATOS DE RESERVA EN CASO DE FALLA DE LA BD PRINCIPAL

Un problema común cuando trabajamos con servidores gratuitos es que la base de datos “se caiga” dejando nuestra página web fuera de línea, a veces por varias horas, he visto caerse una base de datos hasta por una semana, trayendo grabes problemas a la página que depende de dicha base. Por esto, en un momento pensé en una forma de conectar una segunda base de datos de reserva, que permita a los visitantes ver algún contenido en nuestra web aunque la BD principal esté caída, y bueno, para eso sirve el código que muestro a continuación:

<?php 

//Datos de la BBDD principal
$Servidor01 = "servidor_de_la_BD_01";
$usuario01 = "usuario_de_la_BD_01";
$clave01 = "pass_de_la_BD_01";
$bbdd01 = "nombre_de_la_BD_01";

//Datos de la BBDD de reserva
$Servidor02 = "servidor_de_la_BD_02";
$usuario02 = "usuario_de_la_BD_02";
$clave02 = "pass_de_la_BD_02";
$bbdd02 = "nombre_de_la_BD_02";

$conexion = @mysql_connect($Servidor01, $usuario01, $clave01);
@mysql_select_db($bbdd01);
if(!$conexion||!@mysql_select_db($bbdd01)) {$conexion = @mysql_connect($Servidor02, $usuario02, $clave02);
@mysql_select_db($bbdd02);
}
if(!$conexion||(!@mysql_select_db($bbdd01) && !@mysql_select_db($bbdd02))) {

//Acción a realizarse en caso de fallar ambas BBDD
header('HTTP/1.1 503 Service Temporarily Unavailable');
header('Retry-After: 3600');
}
?>

El código se explica por sí mismo, cabe destacar que lo estoy usando (no en este blog) por lo que puedo asegurar que funciona. Solo hay que crear una segunda base de datos en otro servidor, que por supuesto permita conexión remota, y allí creamos una copia de nuestra BD principal, la cual deberíamos tratar de actualizar cada semana al menos.

Hay métodos para hacer que BD se sincronicen automáticamente pero por lo general necesitas tener privilegios absolutos sobre ellas, es decir, ser dueño de los servidores, asi que la opción es hacer el trabajo manualmente creando una copia en .sql de tu BD principal cada semana y copiándola a la BD de reserva.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.