martes, 30 de abril de 2013

replicacion



Replicación de bases de datos:

Es el proceso de copiar y mantener objetos de las base de datos, como por ejemplo relaciones, en múltiples bases de datos que forman un sistema de bases de datos distribuido.

Beneficios de la replicación:


  • Disponibilidad
  • Fiabilidad
  • Rendimiento
  • Reducción de la carga
  • Procesamiento desconectado
  • Soporta muchos usuarios
  • Soporta aplicaciones avanzadas
  • Disponibilidad.-El modo en que la replicación incrementa la disponibilidad de los datos para los usuarios y aplicaciones.
  • Fiabilidad.- Al haber múltiples copias de los datos disponibles en el sistema, se dispone de un mecanismo excelente de recuperación cuando existan fallos en nodos.
  • Rendimiento.- Se mejora para las transacciones de consulta cuando se introduce la replicación en un sistema que estuviera aquejado de sobrecarga de recursos centralizados.
  • Reducción de la carga.- Modo en q se utiliza la replicación para distribuir datos en ubicaciones remotas.
  • Procesamiento Desconectado.- Modo en que la replicación puede implementarse mediante mecanismo instantáneas.
  • Soporta muchos usuarios.- Se puede crear múltiples instantáneas personalizadas que satisfagan los requisitos de cada usuario o grupo de usuarios del sistema.
  • Soporta Aplicaciones Avanzadas.- Para OLPT(Online transaction Processing), OLAP(Online Analitical Processing).
Pasos para poner en marcha la replicación:

A continuación vamos a exponer los pasos a realizar la replicación de una base de datos bd_autentia en un único servidor esclavo. Si quisieramos configurar más esclavos, los pasos a realizar serían los mismos sobre cada uno de los esclavos.
Creamos de un usuario MySQL en el servidor maestro con privilegios de replicación

El servidor esclavo se autenticará frente al servidor maestro como un usuario normal.

Para crear el usuario debemos ejecutar desde la consola de comandos de mysql las siguientes sentencias SQL:

CREATE USER '<replication_user>'@'<slave_address>' IDENTIFIED BY '<replication_user_password>' GRANT REPLICATION SLAVE ON *.* TO '<replication_user>'@'<slave_address>'


Con la sentencia anterior el usuario sólo tendría permiso de acceso desde la máquina <slave_address>, en caso de no requerir esta medida de seguridad puedes sustituir el comodin % por el parámetro <slave_address>.
Configuración del servidor maestro

Deberemos agregar las siguientes lineas al final del archivo de configuración del servidor MySQL, por defecto:<MySQL_HOME>/my.ini

# Identificador único del servidor MySQL dentro de todos los servidores implicados en la replicación. server-id=1 # Al especificar el parámetro log-bin estamos activando el log binario. # No especificamos un valor para el parámetro de configuración (por defecto será <nombre_maquina>-bin). log-bin= # El log binario sólo tendrá las actualizaciones realizadas sobre la base de datos "bd_autentia" # Si además quisieramos replicar otras bases de datos, duplicariamos este parámetro para cada base de datos. binlog-do-db=bd_autentia

Configuración del servidor esclavo

Deberemos agregar las siguientes lineas al final del archivo de configuración del servidor MySQL, por defecto:<MySQL_HOME>/my.ini

# Identificador único del servidor MySQL dentro de todos los servidores implicados en la replicación. server-id=2 # Nombre del archivo binario que almacena las instrucciones pendientes de ejecutar, por defecto: <host_name>-relay-bin.index relay-log= # Nombre o dirección IP del maestro. master-host=<master_address> # El esclavo se conecta a través de un usuario al maestro. Identificador del usuario master-user=<replication_user> # El esclavo se conecta a través de un usuario al maestro. Contraseña del usuario master-password=<replication_user_password> # Número de segundos que esperará el esclavo para reintentar conectarse al maestro en caso de una perdida de conexión. master-connect-retry=50 # Número de reintentos de reconexión master-retry-count=5000

Realizamos una copia de seguridad de la base de datos del maestro sobre el servidor el esclavo


Desde la consola ejecutamos los siguientes comandos:
  1. [maestro]: <MYSQL_HOME>/bin/mysql -u root --password=<contraseña> -e "FLUSH TABLES WITH READ LOCK"Para limpiar las caches y bloquear el acceso de cualquier aplicacion a la base de datos. 
  2. [maestro]: <MYSQL_HOME>/bin/mysqldump --u root --password=<contraseña> --opt bd_autentia > backup.sql Realizamos una copia completa de la base de datos en el archivo backup.sql. 
  3. [esclavo]: <MYSQL_HOME>/bin/mysql --user=root --password=<contraseña> bd_autentia < backup.sql   Para restaurar la copia de seguridad en el esclavo. 
  4. [esclavo]: <MYSQL_HOME>/bin/mysqladmin -u root --password=<contraseña> shutdown Detenemos el servidor esclavo 
  5. [maestro]: <MYSQL_HOME>/bin/mysqladmin -u root --password=<contraseña> shutdown Detenemos el servidor maestro (Se desbloquearán las tablas de las bases de datos previamente bloquadas) 
  6. [esclavo]: <MYSQL_HOME>/bin/mysqld-nt --defaults-file="<MYSQL_HOME>\my.ini" MySQL Iniciamos el servidor el cual tomará la nueva configuración. 
  7. [maestro]: <MYSQL_HOME>/bin/mysqld-nt --defaults-file="<MYSQL_HOME>\my.ini" MySQL Iniciamos el servidor el cual tomará la nueva configuración. 

No hay comentarios:

Publicar un comentario