1. Universidad Nacional Autónoma de México
Facultad de Contaduría y Administración
Diplomado en Diseño y Administración de Base de Datos
Actividad No. 1.14: Replicación de datos en MySQL 5.1
Introducción
MySQL 5.1 soporta la replicación asíncrona unidireccional, es decir, un servidor actúa como maestro y uno o más
actúan como esclavos. (Esto contrasta con la replicación síncrona que es una característica de MySQL Cluster)
El servidor maestro escribe actualizaciones en un archivo de log binario, y mantiene un índice de los archivos
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 han tenido lugar desde
entonces, y se bloquea y espera para que el master le envíe nuevas actualizaciones.
La replicación unidireccional tiene beneficios para la robustez, velocidad, y administración del sistema tales como:
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 maestro 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 no se desincronicen. Esta estrategia de balanceo de carga es efectiva si
dominan consultas que no actualizan datos, pero este es el caso más habitual.
Puede realizar copias de seguridad usando un servidor esclavo sin perturbar al maestro. El maestro continúa
procesando actualizaciones mientras se realiza la copia de seguridad.
Duración
1 hora.
Objetivo
El participante describirá las características de replicación proporcionadas por MySQL. Conocerá los conceptos de
replicación y preparará servidores de replicación.
Prerrequisitos
Para el siguiente laboratorio trabajará con dos instalaciones del servidor de base de datos MySQL, la de usted y la
de su compañero. Se asume que quiere replicar todas las bases de datos en el maestro y no tiene una replicación
previamente configurada además de tener creada la base de datos world.
1. Si no se tiene el servidor mysql instalado, ejecutar como root el siguiente comando, tanto en el servidor maestro
como en el servidor esclavo:
yum -y install mysql-server mysql
2. Realize una configuración básica del manejador de bases de datos mysql, tanto en el servidor maestro como
en el servidor esclavo utilizando el archivo generado en el sitio www.percona.com:
Elaboró: Francisco Medina López 1
2. Universidad Nacional Autónoma de México
Facultad de Contaduría y Administración
Diplomado en Diseño y Administración de Base de Datos
3. Inicie el servicio de mysql en ambos servidores:
service mysqld start
4. En el servidor maestro descarga la base de datos de ejemplo world:
wget -c "http://downloads.mysql.com/docs/world.sql.gz"
5. En el servidor maestro carga la base de datos de ejemplo world:
gunzip -d world.sql.gz
mysqladmin -u root -p create world
mysql world < world.sql
Instrucciones
Realizar las siguiente actividades enumeradas a continuación:
1. Asegúrese que la sección [mysqld] del archivo /etc/my.cnf en el servidor maestro incluye una opción log-bin.
Esta sección debe también tener la opción server-id=master_id , donde master_id debe ser un entero positivo
de 1 a 232
- 1.
[mysqld]
log-bin=mysql-bin
server-id=1
2. Reinicie el servidor maestro. Hasta este punto aún no van a replicar porque no les hemos indicado al servidor
maestro que empiecen a replicar.
service mysqld restart
3. Crear una cuenta en el servidor maestro que pueda usar el servidor esclavo para conectarse. Esta cuenta debe
tener el privilegio REPLICATION SLAVE:
mysql> GRANT REPLICATION SLAVE ON *.*
-> TO ’repl’@’%’ IDENTIFIED BY ’slavepass’;
4. En el servidor maestro bloquear las tablas para evitar actualizaciones.
mysql> FLUSH TABLES WITH READ LOCK;
5. Detener el servidor que se vaya a usar como esclavo y añada lo siguiente a su archivo my.cnf :
[mysqld]
server-id=2
6. Hacer un respaldo de la base de datos world del servidor maestro con el comando mysqldump
shell> mysqldump world > dump_file.sql
7. Una vez terminado el respaldo, tenemos que recordar la situación del log binario en el servidor maestro:
Elaboró: Francisco Medina López 2
3. Universidad Nacional Autónoma de México
Facultad de Contaduría y Administración
Diplomado en Diseño y Administración de Base de Datos
mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000004 | 724356 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
8. Transferir el respaldo al servidor esclavo Recuerda cambiar la dirección 10.211.55.75 por la que corresponda.
shell> scp dump_file.sql 10.211.55.75:
9. Realizar la recuperación de la base de datos en el servidor esclavo.
shell> mysqladmin create world
shell> mysql -u root -p world < dump_file.sql
10. Ejecute los siguientes comandos en el servidor esclavo, reemplazando los valores de opciones con los valores
adecuados para su sistema:
mysql> CHANGE MASTER TO
-> MASTER_HOST=’10.211.55.76’,
-> MASTER_USER=’repl’,
-> MASTER_PASSWORD=’slavepass’,
-> MASTER_LOG_FILE=’mysql-bin.000004’,
-> MASTER_LOG_POS=724356;
11. Iniciar el servicio de replicación en el servidor esclavo:
mysql> START SLAVE;
12. Para comprobar el estado de la replicación, ejecutar el siguiente comando en la consola de MySQL:
mysql> show slave status G
Una vez realizado este procedimiento, el servidor esclavo debe conectar con el servidor maestro y realizar cualquier
actualización que haya ocurrido desde que se obtuvieron los datos.
Elaboró: Francisco Medina López 3