Réplica de BD en MySQL

1.-  CONFIGURACION DEL MASTER

  • Edita el archivo /etc/mysql/my.cnf y comenta las siguientes lineas (si existen):

#skip-networking
#bind-address        = 127.0.0.1
  • Ahora tenemos que decirle a MySQL para qué Base de Datos debe escribir los logs (estos logs son usados por el esclavo para ver que ha cambiado en el Master), así como también debemos especificar que este servidor MySQL que estamos configurando es el master
  • Entonces, si por ejemplo, queremos replicar la BD: exampledb, tenemos que agregar las sigueintes lineas en el archivo: /etc/mysql/my.cnf
log-bin = /var/log/mysql/mysql-bin.log
binlog-do-db=exampledb
server-id=1
  • Luego tenemos que reiniciar MySQL:

/etc/init.d/mysql restart

  • Después entramos a la BD MySQL como root y creamos un usuario con privilegios de replicación.

mysql -u root -p
Enter password:

1.1.- Ahora trabajaremos dentro de MySQL

GRANT REPLICATION SLAVE ON *.* TO ’slave_user’@’%’ IDENTIFIED BY ‘<establece_alguna_contraseña>’; (reemplaza <establece_alguna_contraseña> por una contraseña real!!!)
FLUSH PRIVILEGES;


  • A continuación (aún en MySQLl) escribes:

USE exampledb;
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;

  • El último comando te mostrará algo como lo siguiente:
+---------------+----------+--------------+------------------+
| File          | Position | Binlog_do_db | Binlog_ignore_db |
+---------------+----------+--------------+------------------+
| mysql-bin.006 | 183      | exampledb    |                  |
+---------------+----------+--------------+------------------+
1 row in set (0.00 sec)

Escribe esta información en alguna parte pues la vas a necesitar más adelante.

  • Ahora digitamos: quit; pasa salir de MySQL
  • Ahora con la sigueinte instrucción tomaremos la base de datos creada con sus datos y crearemos un SQL dump de la BD exampledb y se creará un exampledb.sql. Tranfiere este nuevo archivo .sql a tu servidor esclavo!

mysqldump -u root -p<password> –opt exampledb > exampledb.sql (Replace <password> with the real password for the MySQL user root! Important: There is no space between -p and <password>!)

  • Finalmente desbloqueamos las tablas en exampledb y salimos:

mysql -u root -p
Enter password:
UNLOCK TABLES;
quit

2.- CONFIGURACION DEL ESCLAVO

  • En el esclavo primero debemos crear una BD llamada exampledb:

mysql -u root -p
Enter password:
CREATE DATABASE exampledb;
quit;

  • Ahora importamos el SQL dumpe n la nueva BD exampledb que creamos recién en el esclavo:

mysql -u root -p<password> exampledb < /path/to/exampledb.sql (Replace <password> with the real password for the MySQL user root! Important: There is no space between -p and <password>!)

  • Ahora debemos decirle a MySQL en el esclavo que él es el esclavo, que el esclavo es 192.168.0.100 y que la base de datos que tiene que vigilar es exampledb.
  • Todo lo anterior lo hacemos editando el archivo: /etc/mysql/my.cnf
server-id=2
master-host=192.168.0.100
master-user=slave_user
master-password=secret
master-connect-retry=60
replicate-do-db=exampledb
  • Luego reiniciamos MySQL

/etc/init.d/mysql restart

  • Una vez realizado esto hacemos lo siguiente:

mysql -u root -p
Enter password:
SLAVE STOP;

  • El próximo comando (aún en MySQL) tienes que reemplazar los valores que correspondan:(usa la información que te dije que tenías que copiar )

CHANGE MASTER TO MASTER_HOST=’192.168.0.100′, MASTER_USER=’slave_user’, MASTER_PASSWORD=’<some_password>‘, MASTER_LOG_FILE=’mysql-bin.006′, MASTER_LOG_POS=183;

MASTER_HOST es la dirección IP o el nombre del host del master (en este ejemplo es 192.168.0.100).

MASTER_USER es el usuario que creamos en el master con los privilegios de replicación.

MASTER_PASSWORD es la contraseña del MASTER_USER en el master.

MASTER_LOG_FILE es el archivo MySQL que te mostró la instrucción SHOW MASTER STATUS; en el master.

MASTER_LOG_POS es la posición que dio MySQL cuando corriste el comando SHOW MASTER STATUS; en el master.

  • Ahora lo que falta es iniciar el esclavo.

START SLAVE;
quit;

Y esto es todo!!! :D:D Ahora cuando se actualice la BD exampledb en el master, todos los cambios se replicarán en la BD exampledb en el esclavo.

PRUEBALO!!! 😉

Publicado en How to. Leave a Comment »

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: