domingo, 28 de abril de 2013

Espejeo


Se conoce como copia espejo (en inglés data mirroring) al procedimiento  de protección de datos y de acceso a los mismos en los equipos  informáticos implementado en la tecnología de RAID.

RAID.- conjunto redundante de discos independientes, hace referencia a un sistema de almacenamiento que usan múltiples discos duros o SSD entre los que se distribuyen o replican los datos.

Base de Datos Espejo (Database Mirroring).- es una configuración donde dos o tres servidores de dase de datos, ejecutándose en equipos independientes, cooperan para  mantener copias de la base de datos y archivo de registro de transacciones (log).

Tanto el servidor primario como el servidor espejo mantienen una copia de la base de datos y el registro de transacciones, mientras que el tercer servidor, llamado el servidor árbitro, es usado cuando es necesario determinar cuál de los los otros dos servidores puede tomar la propiedad de la base de datos. El árbitro no mantiene una copia de la base de datos. La configuración de los tres servidores de base de datos (el primario, el espejo y el árbitro) es llamado Sistema Espejo (Mirroring System), y el servidor primarioy espejo juntos son llamados Servidores Operacionales (Operational Servers) o Compañeros (Partners).

Beneficios
·         Este método permite hacer una réplica exacta de una base de datos de un servidor a otro. La gran ventaja de este método es que permite el failover automático sin intervención humana
·         Con este modo, se logra tener una copia exacta (un espejo de nuestra base de datos) de una instancia en otra.

·         Cualquier cambio hecho en la base de datos de la primera instancia, es replicado inmediatamente en la base de datos de la segunda instancia (la instancia y base de datos reflejada).

Hacer un mirror
Para hacer el mirror, es necesario como mínimo 2 instancia y como máximo 3. Si utilizamos 2 instancias, una de ellas contiene la base de datos y la otra la espejo. La pega de esta configuración es que el failover no es automático y se necesita intervención humana. Si utilizamos 3 instancias, entonces utilizamos una de ellas como witness server y permite que el failover sea automático, osea que cuando una caiga, la otra se ponga en marcha.

Sentencia en MySQL
mysqldump.exe --opt --password=123 --user=root mi_db  > c:\replica_db.sql

·         mysqldump opera en cooperación con el servidor MySQL. Los métodos de copia directa son externos al servidor, de manera que usted debe tomar las medidas oportunas para asegurar que ningún cliente modifique las tablas mientras usted las copia genera archivos de texto transportables a otras máquinas (aún cuando presenten distintas arquitecturas hardware). Los archivos de copia directa no lo son, a no ser que las tablas que esté copiando usen el formato de almacenamiento MyISAM.

Creación
Prepare una cuenta en el maestro que pueda usar el esclavo para conectar. Este cuenta debe tener el privilegioREPLICATION SLAVE . Si la cuenta se usa sólo para replicación (lo que se recomienda), no necesita dar ningún privilegio adicional.

mysql> GRANT REPLICATION SLAVE ON *.*  TO 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';

Si usa sólo tablas MyISAM , vuelque todas las tablas y bloquee los comandos de escritura ejecutando un comandoFLUSH TABLES WITH READ LOCK :
mysql> FLUSH TABLES WITH READ LOCK;

Para usar tar para crear un archivo que incluya todas las bases de datos, cambie la localización en el directorio de datos del maestro, luego ejecute el comando:
shell> tar -cvf /tmp/mysql-snapshot.tar .

Si quiere que el archivo sólo incluya una base de datos llamada this_db, use este comando:
shell> tar -cvf /tmp/mysql-snapshot.tar ./this_db

Luego copie el archivo en el directorio /tmp del servidor esclavo. En esa máquina, cambie la localización al directorio de datos del esclavo, y desempaquete el fichero usando este comando:

shell> tar -xvf /tmp/mysql-snapshot.tar

Mientras el bloqueo de FLUSH TABLES WITH READ LOCK está en efecto, lee el valor del nombre y el desplazamiento del log binario actual en el maestro:
mysql > SHOW MASTER STATUS;

Una vez que tiene los datos y ha guardado el nombre y desplazamiento del log, puede reanudar la actividad de escritura en el maestro:
mysql> UNLOCK TABLES;

Para guardar los nombres de ficheros actual y desplazamientos, debe ejecutar el siguiente comando antes de parar el servidor:
mysql> FLUSH TABLES WITH READ LOCK;
mysql> SHOW MASTER STATUS;


Bibliografia
http://www.techdays.com.ar/2009/08/21/tutorial-creando-backup-automaticamente-de-bases-de-datos-mysql/
http://es.wikipedia.org/wiki/Copia_espejo
http://es.wikipedia.org/wiki/RAID
http://miblogtecnico.wordpress.com/tag/failover-en-sql-server/
http://www.corporacionsybven.com/portal/index.php?option=com_content&view=article&id=362




No hay comentarios:

Publicar un comentario