REPLICACION

5
UNIVERSIDAD POLITECNICA DEL VALLE DE TOLUCA CURSO: BASE DE DATOS DISTRIBUIDAS PROYECTO: REPLICACION DE LA BASE DE DATOS (MAESTRO-ESCLAVO) PROFESORA: MARTHA MARIA MONTES DE OCA GRUPO: INI6MA

description

base de datos

Transcript of REPLICACION

UNIVERSIDAD POLITECNICA DEL VALLE DE TOLUCA

CURSO: BASE DE DATOS DISTRIBUIDAS PROYECTO:REPLICACION DE LA BASE DE DATOS (MAESTRO-ESCLAVO)

PROFESORA: MARTHA MARIA MONTES DE OCA

GRUPO: INI6MA

INTEGRANTESMATRICULA

Domnguez Cruz Noem Enriqueta 1110INI031

Iglesias Delgado Miguel ngel1110INI0

Romero Romero Abimael 1110INI051

Una rplica de MySql Server hace uso del fichero binario de transacciones para almacenar en el maestro todos los cambios reaizados (UPDATES, DELETES, CREATE, etc..) para que un servidor externo lo lea y replique exactamente los mismos cambios en su propia base de datos.De este modo tenemos uno o ms servidores MySql esclavos haciendo las mismas transacciones que el maestro para as tener los mismos datos en diferentes servidores cosa que se realmente til y, no slo ante cadas, ya que es posible configurar nuestra aplicacin para compartir las SELECT entre distintos nodos de MySql y mejorar as el rendimiento.

Lo primero que debemos hacer esconfigurar el servidor maestro para que almacene el log binarioy asignarle un identificador. Para ello editamos elmy.cnfaadiendo (o editando si ya las tiene) las siguientes entradas:

Como siempre que modificamos un my.cnf hay quereiniciar el servicio de MySqlpara que acepte los cambios.Luego tenemos que hacer lo propio con el (o los) esclavo(s). Modificar el my.cnf con los siguientes parmetros y luego reiniciar el servicio:

Ya tenemos un servidor maestro y un esclavo pero ahora necesitamoscrear un usuariopara que el esclavo se conecte al maestro y pueda leer el log de transacciones. Para ello vamos a crear un nuevo usuario llamado "replicador" (el nombre y pass puede variar) en el master con privilegios de "REPLICATION SLAVE":

Y luego le damos los permisos de REPLICATION SLAVE:

Ya tenemos los servidores bien configurados y el usuario que usaremos como replicador por lo que lo prximo que tenemos que hacer escrear una copia inicial o "snapshot"de la base de datos que queremos replicar para luego poder indicar al servidor esclavo desde dnde tiene que empezar a leer.Para hacer el snapshot primero ejecutamos las siguientes consultas:

Ten en cuenta que al hacer "READ LOCK" estamos bloqueando la tabla para que nadie cambie nada por lo que lo que viene a continuacin deberamos hacerlo lo ms rpidamente posible.ElSHOW MASTER STATUSmuestra dos valores que debemos anotar que son el "File" y "Position". Necesitaremos indicarselos al servidor de rplica una vez hayamos cargado la copia inicial.

+------------------+----------+--------------+------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |+------------------+----------+--------------+------------------+| mysql-bin.000001 | 492 | | |+------------------+----------+--------------+------------------+1 row in set (0.00 sec)

Muy bien! Vamos al servidor esclavo y lo terminamos de configurar.Lo primero escargar una copia de seguridadde base de datos que queremos replicar del master al esclavo (puedes usar el mtodo que quieras, mysqldump, HeidSql, MySql Workbench...) y, una vez restaurada,configurar el esclavo e iniciarlo.En este ejemplo vamos a suponer que el servidor maestro est alojado en 10.0.1.10. Fjate que tenemos que indicar elFiley laPositionque hemos obtenido antes del SHOW MASTER STATUS:

Para terminar volvemos al maestro y desbloqueamos de nuevo las tablas para que puedan volver a editar datos:

Si no ha pasado nada raro tendremos el servidor esclavo con la carga inicial funcionando ytodo cambio en el master se replicara .

Si queremos saber el estado del servidor de rplica podemos usar la consulta: Que nos mostrar un listado de datos. Yo miro el valor "Seconds_Behind_Master" que indica que "retraso" tiene el servidor esclavo respecto al maestro (si es NULL es que no va. Revisa el "Slave_IO_State" y "Last_Error").