Crear Bases de Datos Distribuidas Maestro-Esclavo con MySQL y Replicarlas | DevTroce.com

Crear Bases de Datos Replicadas Maestro-Esclavo con MySQL

Enero 13, 2010. Por GeekZero. Categorizado en Bases de Datos, GNU/Linux, MySQL, Sistemas Operativos. Un Comentario. Leido 1.171 veces.

Replicar nuestras bases de datos muchas veces puede ser la solución para nuestros problemas empresariales, desde crear una carga de trabajo equitativa hasta centralizar datos desde lugares remotos en donde no existe una conexión de red constante ni estable o aumentar la velocidad de las aplicaciones cuando la velocidad es muy lenta. Obviamente ganar éstas características tiene su precio a parte del metálico, donde perdemos la capacidad de tener datos actualizados todo el tiempo, o la posibilidad de encontrarnos con conflictos al momento de hacer el “merge“.

Para hacer esto mínimamente necesitaremos 2 instancias de MySQL (ya sea en uno o más servidores físicos).

Configurar Maestro

Paso 1

Detener el proceso de MySQL

1
sudo /etc/init.d/mysql stop

Paso 2

Editamos el archivo de configuración del motor

1
vim /etc/mysql/my.cnf

Paso 3

Si existen estos parámetros los comentamos o eliminamos

1
2
# skip-networking
# bind-address = 127. 0.0.1

Además agregamos ésta sección dentro del bloque [mysqld]

1
2
3
4
5
6
7
8
9
# Le asignamos algun ID a nuestro antojo donde dice ?
server-id                      = ?
log_bin                        = mysql_bin.log
innodb_flush_log_at_trx_commit = 1
sync_binlog                    = 1
# Asignamos una BD para replicar o mas de una si se requiere asi
binlog_do_db                   = db
# Aqui tambien tenemos que tener cuidado, nunca se borrara el log, por lo tanto del disco puede llenarse
expire_logs_days               = 0

Paso 4

Iniciamos el proceso del motor

1
sudo /etc/init.d/mysql start

Paso 5

Bloqueamos las tablas ante escritura

1
2
USE cism;
FLUSH TABLES WITH READ LOCK;

Paso 6

Mostramos los datos del Maestro, estos datos anótalos bien y no lo pierdas

1
SHOW MASTER STATUS;

Nos Aparecerá algo similar a esto

+----------------------------+----------+--------------+-------------------------+
| File                       | Position | Binlog_Do_DB | Binlog_Ignore_DB        |
+----------------------------+----------+--------------+-------------------------+
|mysql-bin.000001            |     106  | db           |                         |
+----------------------------+----------+--------------+-------------------------+

Paso 7

Salimos de la consola mysql

1
exit;

Paso 8

Creamos un dump de la BD a replicar para que sean iguales al comenzar

1
mysqldump -u root -p --routines --opt db > db-dump.sql

Paso 8

Copiamos el dump en la maquina que necesitamos montarlo, si está en la misma, omitir este paso. El método expuesto es SCP, si la otra PC no tiene habilitado esto hacerlo por algún medio disponible :P

1
scp archivo-origen  user@host:directorio-destino-en-esclavo

Paso 9

Nos volvemos a conectar a nuestra base de datos y desbloqueamos las tablas (la conexión ya lo saben hacer)

1
2
UNLOCK TABLES;
exit;

Configurar el Esclavo

Paso 10

Nos conectamos al motor de servidor esclavo y ejecutamos lo siguiente para crear una bd nueva

1
2
3
CREATE DATABASE db;
# de paso se dan cuenta que se puede desloguear indistintamente con la palabra quit y exit
quit;

Paso 11

En la nueva bd creada volcaremos el dump hace un momento creado del siguiente modo

1
msyql -u root -p db < db-dump.sql

Paso 12

Una vez hecho el paso anterior, nos volvemos a conectar a la bd esclava y le agregaremos lo siguiente, aqui deben usar los datos que anteriormente les dije que guarden bien y no lo pierdan

1
2
3
4
5
6
7
8
9
10
STOP SLAVE;
CHANGE MASTER TO
MASTER_HOST='IP del master',
MASTER_PORT = puerto-de-mysql-del-master,
MASTER_USER='user',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='file_log_determinado?',
MASTER_LOG_POS=recorded_log_position?,
MASTER_CONNECT_RETRY=60 ;
START SLAVE;

Paso 13

El paso con el numero de la mala suerte es precisamente arrancar el esclavo, a ver si nuestra configuracion fue exitosa :D

1
START SLAVE;

Paso 14

Con esto veremos el estado de nuestra configuración

1
SHOW SLAVE STATUS\G

Nota: En una siguiente entrega veremos como configurar de manera circular, es decir, que cada uno cumpla la función de Maestro y Esclavo a la vez. Los créditos nuevamente de este tutorial lo tienen mis compañeros de trabajo (admirables ellos :D ).

Articulos Relacionados:

Etiquetas: , ,

Comentario

Un Comentario en “Crear Bases de Datos Replicadas Maestro-Esclavo con MySQL” Hasta el momento.

  1. [...] Para llevar a cabo este tutorial, deberán configurar sus bases de datos como lo decía la primer parte. La misma pueden leerla aquí: Replicacion MySQL. [...]

Escribenos tu Comentario

Sigue los comentarios por RSS, suscribete a los feeds del comentario.