1/head>

5.1. Espejeo (mirroning)

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 (siempre que se instale un tercer servidor witness). De hecho, en la cadena de conexián de las aplicaciones de .NET, podemos especificar cuando conectamos con la aplicación el servidor de sql al que nos conectamos y un failover partner, o sea un servidor mirror para que en caso de failover, la aplicacián pueda reconectar automáticamente al otro servidor.

La desventaja del mirror, respecto el log shipping y la replicación, es que sálo podemos tener una máquina secundaria o mirror y que esta no es accesible y no podemos tenerla en modo lectura.

La creacián de un espejo reflejo de la base de datos de SQL Server permite mantener una copia, o reflejo, de una base de datos de SQL Server en un servidor en espera. El reflejo garantiza que en todo momento existen dos copias distintas de los datos, lo que proporciona una alta disponibilidad y una completa redundancia de datos.

El proveedor de datos de .NET para SQL Server ofrece compatibilidad implícita con la creación de reflejo de la base de datos; así el desarrollador no tiene que realizar ninguna acción ni escribir ningún código una vez que se ha configurado para una base de datos de SQL Server. Además, el objeto SqlConnection admite un modo de conexión explícita que permita proporcionar el nombre de un servidor asociado de conmutación por error en la propiedad ConnectionString.

La siguiente secuencia simplificada de eventos tiene lugar para un objeto SqlConnection que identifica una base de datos configurada para el reflejo:

  1. La aplicación cliente se conecta correctamente a la base de datos principal y el servidor devuelve el nombre del servidor asociado, el cual se almacena en caché en el cliente.
  2. Si el servidor que contiene la base de datos principal da error o se interrumpe la conectividad, se pierde el estado de la conexión y de la transacción. La aplicación cliente intenta restablecer la conexión a la base de datos principal pero no lo consigue.
  3. La aplicación cliente intenta entonces de forma transparente establecer una conexión a la base de datos de reflejo del servidor asociado. Si lo consigue, la conexión se redirecciona a la base de datos de reflejo, que se convierte entonces en la nueva base de datos principal.

Fuente: http://msdn.microsoft.com/es-MX/library/5h52hef8.aspx

http://miblogtecnico.wordpress.com/tag/espejo-en-sql-server/


5.1.2 Activación de espejeo en un DBMS

MySQL

Lo primero que debemos hacer es checar si ambos servidores se encuentran en red

Caso Windows

Caso Linux

Cambie el comando ipconfig por ifconfig

Software

Verifque que el MySQL instalado en el maestro y en el esclavo son iguales. En este casp MySQL Server 5.6

Configuración del Maestro

  1. Localizar el archivo My.ini -Windows- (My.cnf -Linux)
  2. Buscar y comentar las siguientes lineas si es que se encuentran:
    #skip-networking
    #bind-address = 127.0.0.1
  3. Agregar después de la línea [mysqld] lo siguiente:
    log-bin =mysql-bin.log
    binlog-do-db=dolar
    server-id=1

    Nota: El server-id en el servidor siempre será 1, y los esclavos serán 2, 3… n según sea el caso en binlog-do-db se pone el nombre de la base de datos que replicara después de signo =

  4. Desde el panel de control entramos en Herramientas administrativas, Servicios y reanudamos MySQL. Este paso se omite en Linux
  5. Ahora en el shell de mysql genere una cuenta para el esclavo con el privilegio REPLICATION SLAVE:
    GRANT REPLICATION SLAVE ON *.* TO 'esclavo1'@'%' IDENTIFIED BY
    'bingo';
    FLUSH PRIVILEGES;

    Nota: esclavo1 es el usuario identificado por el passwword bingo.Los posteriores replicadores deberán ser esclavo2, ..., esclavo-n.

  6. Seleccione la base de datos a replicar y realice lo siguiente:
    USE dolar;
    FLUSH TABLES WITH READ LOCK;
    SHOW MASTER STATUS;

    El resultado será algo similar a la figura

    La columna File muestra el nombre del log, mientras que Position muestra el desplazamiento. En este ejemplo, el valor del log binario es BARBANEGRA-bin.000004 y el desplazamiento es 1057. Guarde los valores. Los necesitará más tarde cuando inicialice el servidor. Estos representan las coordenadas de la replicación en que el esclavo debe comenzar a procesar nuevas actualizaciones del maestro.

  7. Salir de MySQL usando el comando exit o quit.
  8. Ahora desde la terminal o en el cmd haremos un Backup de la Base de Datos que se encuentra en el Maestro para tener el mismo esquema y datos en los esclavos:
    mysqldump -u root -p -dolar > dolar.sql
  9. Por últino desbloqueamos la base de datos
    mysql -u root -p
    UNLOCK TABLES;
    quit;

Configuración del esclavo

  1. Crear la base de datos que queremos replicar:
    mysql -u root -p
      CREATE DATABASE dolar;
      quit;
  2. Ejecutar desde la consola o a terminal el siguiente comando para copiar la base de datos del archivo que generamos:

    mysql -u root -p dolar < dolar.sql

  3. Localizar el archivo My.cnf (en caso de windows My.ini) y después del [mysqld] agregamos lo siguiente:

    server-id=2

    replicate-do-db=nombre_base_de_datos

    En nuesto caso

    server-id=2

    replicate-do-db=dolar

  4. Reiniciamos el servicio de MySql y comprobamos el server-id,
     mysql -u root -p
     SHOW VARIABLES LIKE 'server-id'; 
    
  5. Ahora le indicaremos al esclavo la dirección del maestro, el usuario, password y directivas de control (master_log_file y master_log_pos)
    CHANGE MASTER TO master_host = '192.168.1.65', master_user='esclavo1',
    master_password='bingo', master_log_file='barbanegra-bin.000004', master_log_pos=1057;

    Nota: Si olvido las directivas de control. Desde la consola del maestro use la sentencia SHOW MASTER STATUS;

  6. Ahora iniciamos el e8sclavo y comprobamos su estado
    START SLAVE;
    SHOW SLAVE STATUS\G;
    

¡Felicidades! su Replicación esta funcionando!


Valid XHTML
home

Siguiente