Universidad de El Salvador à Facultad Multidisciplinaria de
Occidente à Departamento de Ingeniería y Arquitectura
|
Presentado por:
Rosales Martínez, Juan Carlos
Rosales Martínez, Juan Carlos
Cárcamo
González, Carlos Alexander
Zeceña
Andaluz, Alba Angelica
Rodríguez
Cerna, Laura Isabel
Umaña Umaña,
Onil
Replicación
Es el proceso de copiar y mantener
objetos de las base de datos en múltiples bases de datos que forman un sistema
de bases de datos distribuido. La replicación permite que los datos de un
servidor de bases de datos (el maestro), sean replicados en uno o más
servidores de bases de datos (los esclavos).
Replicación en MySQL.
Las características de MySQL soportan
replicación asíncrona unidireccional: un servidor actúa como maestro y uno o
más actúan como esclavos.
¿Cómo funciona la replicación?
El servidor maestro escribe actualizaciones en el
fichero de log binario, y mantiene un índice de los ficheros para rastrear las
rotaciones de logs. 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 hasta la que el esclavo ha leído los logs en
la última actualización satisfactoria. El esclavo recibe cualquier
actualización que ha tenido lugar desde entonces, y se bloquea y espera para
que el master le envíe nuevas actualizaciones.
Debe tenerse en cuenta que cuando se
usa replicación, todas las actualizaciones de las tablas que se replican deben
realizarse en el servidor maestro. De otro modo, se debe ser cuidadoso para
evitar conflictos entre actualizaciones que hacen los usuarios a las tablas en
el maestro y las actualizaciones que hacen en las tablas de los esclavos.
Ventajas
de la Replicación:
La replicación unidireccional tiene beneficios para la robustez,
velocidad, y administración del sistema:
Ø La
robustez se incrementa con un escenario maestro/esclavo. En caso de problemas
con el maestro, puede cambiar al esclavo como copia de seguridad.
Ø Puede
conseguirse un mejor tiempo de respuesta dividiendo la carga de consultas de
clientes a procesar entre los servidores maestros y esclavo. Se puede enviar
consultas SELECT al esclavo para reducir la carga de proceso de consultas del
maestro. Sin embargo, las sentencias que modifican datos deben enviarse siempre
al maestro, de forma que el maestro y el esclavo siempre estén sincronizados.
Esta estrategia de balanceo de carga es efectiva si dominan consultas que no
actualizan datos, pero este es el caso más habitual.
Ø Otro
beneficio de usar replicación es que puede realizar copias de seguridad usando
un servidor esclavo sin molestar al maestro. El maestro continúa procesando
actualizaciones mientras se realiza la copia de seguridad
Desarrollo
IP Maestro:
192.168.1.1
IP Esclavo:
192.168.1.2
Usuario:
replicador
Password:
123456
Configuración Previa (Maestro y Esclavo)
1.
Instalar mysql-server en ambos servidores
$ apt-get install mysql-server
2.
Deshabilitar Network Manager en ambos
servidores
$ service network-manager stop
3. Asignar
direcciones IP del mismo segmento
$ ifconfig eth0 192.168.1.1/24 up en el maestro.
$ ifconfig eth0 192.168.1.2/24 up en el escavo.
4.
Probar conectividad en ambos servidores
$ ping 192.168.1.1 en el esclavo.
$ ping 192.168.1.2 en el maestro.
Configuración Maestro
1. Modificar
archivo my.cnf:
$ nano /etc/mysql/my.cnf
2. Agregar las siguientes líneas:
server-id=1
log-bin=mysql-bin
binlog_format=mixed
sync_binlog=1
max-binlog-size=500M
expire_logs_days=4
innodb_flush_log_at_trx_commit=1
3. Modificar la línea bind-address con la IP del master
bind-address = 192.168.1.1
4. Reiniciar el servicio de MySql:
$ service mysql restart
5. Abrir MySql con el usuario root:
$ mysql –u root –p
6. Insertar las siguientes instrucciones:
mysql > GRANT REPLICATION
SLAVE ON *.* to 'replicador'@'%' IDENTIFIED BY '123456';
mysql> FLUSH PRIVILEGES;
mysql> GRANT RELOAD ON *.* TO
'replicador'@'%';
mysql> GRANT SUPER ON *.* TO
'replicador'@'%';
mysql> FLUSH PRIVILEGES;
mysql> SHOW MASTER STATUS;
Donde
replicador: Es el nombre
de usuario creado.
123456: Es la
contraseña para el usuario creado.
FLUSH PRIVILEGES: Se establecen los privilegios.
GRANT REPLICATION SLAVE…: se asignan privilegios de replicación, cabe
aclarar que el comando grant sirve para asignar permisos a un usuario pero si
este no existe lo crea.
SHOW MASTER STATUS: Se obtiene la información del
servidor maestro.
Almacenar la información arrojada por este último comando.
7- verificamos que se haya creado el usuario
SELECT User,Host FROM mysql.user;
Esto nos mostrará los usuarios que tenemos en mysql.
8- verificar que el usuario creado tenga los permisos de replicación
show grants for replicador;
Configuración Esclavo
1. Abrir MySql con su usuario maestro:
$ mysql –u root –p
2. Insertar las siguientes instrucciones:
Mysql >STOP SLAVE;
mysql > CHANGE MASTER TO
MASTER_HOST='192.168.1.1', MASTER_PORT=3306, MASTER_USER='replicador',
MASTER_PASSWORD='123456';
Dónde:
STOP
SLAVE: Detener los procesos del esclavo.
MASTER_HOST:
Hace referencia a la dirección IP en la cual está el servidor maestro.
MASTER_USER:
Usuario del servidor maestro con el cual se accede a MySQL.
MASTER_PASSWORD:
Contraseña del servidor maestro con el cual se accede a MySQL.
3. Modificar
archivo my.cnf:
$ nano /etc/mysql/my.cnf
4. Agregar la siguiente línea:
server-id=2
5. Modificar la línea bind-address con la IP del slave:
bind-address = 192.168.1.2
6. Reiniciar el servicio de MySql:
$ service mysql restart
7. Abrir MySql de nuevo y ejecutar las siguientes líneas:
mysql> STOP SLAVE;
mysql > CHANGE MASTER TO
MASTER_LOG_FILE='mysql-bin.0000XX', MASTER_LOG_POS=XXX;
mysql> START SLAVE;
Nota.
Estos datos son tomados del servidor maestro, cuando ejecutamos
SHOW MASTER STATUS;.
Donde.
MASTER_LOG_FILE:
La dirección y el número que se obtuvo cuando se realizó el SHOW MASTER STATUS.
MASTER_LOG_POS: Posición de los logs.
8. Verificar si todo salió bien con:
Mysql > SHOW SLAVE STATUS\G;
Si visualizamos las líneas
Slave_IO_State:
Waiting for master to send event y Slave_IO_Running:
True
todo salió bien.
Prueba
En el servidor Maestro entrar a mysql
Mysql –u root -p
Crear una base de datos
mysql > create database db_prueba;
agregar una tabla a dicha base de datos, e ingresar valores.
mysql >use db_prueba;
mysql >create table alumnos(carnet varchar(5), nombres varchar(20));
mysql
>Insert into alumnos values(‘Rm08106’,’Juan carlos’);
Desde el servidor esclavo, comprobar la sincronización:
mysql > show databases;
mysql >use db_prueba;
mysql >show tables;
mysql >select * from alumnos;
Podremos ver la nueva base creada y la tabla y los datos agregados
desde el servidor esclavo.
Leer nota completa...