Replicacion en mysq

15
REPLICACION EN MYSQL Bases de Datos Universidad de El Salvador Facultad Multidisciplinaria de Occidente Departamento de Ingeniería y Arquitectura

Transcript of Replicacion en mysq

REPLICACION EN MYSQL Bases de Datos

Universidad de El Salvador

Facultad Multidisciplinaria de Occidente

Departamento de Ingeniería y Arquitectura

En que consiste la replicación??

La replicación en MySQL se basa en un servidor maestro que toma nota de todos los cambios en las bases de datos (actualizaciones, borrados, y así) en los logs binarios. Por lo tanto, para usar replicación, debe activar el log binario en el servidor maestro.

Ventajas

Poder realizar copia de nuestras bases de datos en emplazamientos muy distantes entre sí, permitiéndonos una rápida recuperación en caso de problemas en el sitio principal.

Replicar los datos que necesitamos. Se pueden realizar copias de todas las bases de datos, de las que nos interesen o solamente de unas tablas en concreto.

Permite aislar la base de datos principal para escrituras.

Tipos de Replicación

Maestro –Esclavo – Todas las actualizaciones sobre el servidor maestro son

replicadas en el esclavo.

Maestro-Maestro – En este esquema, ambos servidores replican sobre los

otros, es decir, ambos son a la vez master y esclavo.

Funcionamiento

El servidor maestro escribe actualizaciones en el fichero de log binario

Estos logs sirven como registros de actualizaciones para enviar a los servidores esclavos

Cuando un esclavo se conecta al maestro, informa al maestro de la posición

El esclavo recibe cualquier actualización que han tenido lugar

Funcionamiento

Es extremadamente importante tener en cuenta que el log binario simplemente es un registro que comienza en un punto fijo en el tiempo en el que activa el log binario.

Cualquier esclavo que inicialice necesita copias de las bases

de datos del maestro tal y como estaban en el momento en que activó el log binario en el maestro. Si arranca sus esclavos con bases de datos que no están en el mismo estado que las del maestro cuando arrancó el log binario, es muy posible que fallen sus esclavos

Configurar Replicación

Maestro--Esclavo

CONFIGURACION MASTER

En el servidor maestro, agregar/modificar, la sección [mysqld] del archivo de configuración my.cnf o my.ini (/etc/mysql/my.cnf en debian):

server-id = 1

log-bin=mysql-bin.log

Creamos el usuario que se conectara al master para la replicación:

GRANT REPLICATION SLAVE ON *.* TO

‘usuario’@’host’ IDENTIFIED BY ‘contraseña’;

Configurar Replicación

Maestro--Esclavo

FLUSH PRIVILEGES; Decir al servidor que vuelva a leer las tablas de permisos.

En el servidor maestro, ejecutar ‘FLUSH TABLES WITH READ LOCK;’, para prevenir la escritura a base de datos en el maestro.

En el servidor maestro, ejecutar ‘UNLOCK TABLES;’

En el servidor maestro, reiniciar el demonio (o servicio) mysqld

En el servidor maestro, ejecutar ‘SHOW MASTER STATUS;’ en el maestro y guardar los valores para la posterior configuracion del esclavo.

• En el servidor esclavo, modificar el archivo my.cnf o my.ini: [mysqld]

server-id=2

master-host = Ip Master

master-user= usuario

master-password= contraseña

master-connect-retry= 60

master-port=3306

master-log-file=mysql-bin.000005

master-log-pos=98

binlog-do-db= bd a replicar

• Ajustar los valores de acuerdo al usuario creado y los valores obtenidos al realizar el ‘SHOW MASTER STATUS’ anterior.

Configuración de Esclavo

• Ejecutamos la sentencia para ajustar los valores de la replicacion. STOP SLAVE;

CHANGE MASTER TO MASTER_HOST=’Ip Master’, MASTER_USER=’usuario’, MASTER_PASSWORD=‘contraseña’ MASTER_PORT=3306 ,

MASTER_LOG_FILE=’mysql-BIN.000001′, MASTER_LOG_POS=98;

(Según la información de la sentencia SHOW MASTER STATUS). • En el servido esclavo, ejecutar:

START SLAVE;

Configuración de Esclavo

Configurar Replicación

Master-Master

CONFIGURACION MASTER 1 Configuramos de la misma forma y modificamos el archivo

my.cnf omy.ini (/etc/mysql/my.cnf en debian): server-id = 1

log-bin=mysql-bin.log

master-host = Ip Master2

master-user= usuario

master-password= contraseña

master-connect-retry= 60

master-port=3306

binlog-do-db= bd a replicar

• Creamos el usuario para el Master 2 GRANT REPLICATION SLAVE ON *.* TO ‘usuario2’@’host2’ IDENTIFIED BY ‘contraseña2’;

• FLUSH PRIVILEGES;

• Configuramos el Master 1 como esclavo de Master 2 CHANGE MASTER TO MASTER_HOST=’Ip Master2’, MASTER_USER=’usuario2’, MASTER_PASSWORD=‘contraseña2’ MASTER_PORT=3306,

MASTER_LOG_FILE=’mysql-BIN.000003′, MASTER_LOG_POS=106 ;

(Según la información de la sentencia SHOW MASTER STATUS). START SLAVE;

Configurar Replicación

Master-Master

CONFIGURACION MASTER 2 Se configura de la misma forma que el master 1 En el servidor master 2, modificar el archivo my.cnf o my.ini:

[mysqld]

server-id=2

log-bin=mysql-bin.log

master-host = Ip Master1

master-user= usuario

master-password= contraseña

master-connect-retry= 60

master-port=3306

binlog-do-db= bd a replicar

Configurar Replicación

Master-Master

• Creamos el usuario para el Master 1 GRANT REPLICATION SLAVE ON *.* TO ‘usuario1’@’host1’ IDENTIFIED BY ‘contraseña1’; FLUSH PRIVILEGES;

• Configuramos el Master 2 como esclavo de Master 1 CHANGE MASTER TO MASTER_HOST=’Ip Master1’, MASTER_USER=’usuario’, MASTER_PASSWORD=‘contraseña’ MASTER_PORT=3306,

MASTER_LOG_FILE=’mysql-BIN.000003′, MASTER_LOG_POS=106;

(Según la información de la sentencia SHOW MASTER STATUS). START SLAVE;

Configurar Replicación

Master-Master

De la información del SLAVE nos interesa que los valores:

Slave_IO_Running y Slave_SQL_Running estén en YES en ambos casos. Si todo está funcionando podemos probar la Replicación ingresando al phpmyadmin de uno de los Servers para agregar un valor y verificar que éste se haya replicado en la BD del otro Server.

Configurar Replicación

Master-Master