Sei sulla pagina 1di 7

Este manual contiene las configuraciones de 2 nodos instalados sobre

con Ubuntu server 14.04.4

Estos son los valores con que creo la

configuracin
holivas@nodo1 (server1) = 192.168.0.20
holivas@nodo1 2 (server2) = 192.168.0.21
MySQL instalado en ambos servers:
Usuario Mysql = root
Clave Mysql = holivas
Comenzaremos con el primer nodo1 modificando el archivo de
configuracin de mysql ubicado en /etc/mysql/my.cnf.
Nota :
Conforme se desarrollo la configuracin para la replicacin, me ha
enseado que lo mejor es empezar por poner a andar un Master-Slave y,
una vez que ste funciona, realizar el proceso inverso en el nodo 2 Lo
cierto es que, si uno copia y pega los contenidos de los archivos
modificando los valores y corre los GRANT REPLICATION SLAVE, luego la
replicacin muy posiblemente no funcionar: nos encontraremos en
Google

buscando

por

qu

obtenemos

Slave_IO_Running:

No con SHOW SLAVE STATUS\G;


Recordemos: la replicacin Master-Master es en realidad replicacin
Master-Slave en 2 sentidos, por lo que comenzar logrando Master-Slave
es tener la mitad del trabajo resuelto.
Ejemplo en terminal :
holivas@nodo1:~$sudoi
sudo:unabletoresolvehostnodo1
[sudo]passwordforholivas:********
root@nodo1:~#sudonano/etc/mysql/my.cnf

En el archivo my.cnf comenzaremos por quitar la restriccin a localhost


comentando la lnea bind-address = 127.0.0.1 que limita el alcance
del servicio a la interface local.
Vamos a comentar esta lnea con # de modo que quede:
#bind-address = 127.0.0.1
Bajamos un poco ms en el archivo hasta llegar a la seccin
Logging and Replication y buscamos la lnea comentada #server-id
= 1.
All modificamos como sigue: ejemplo de cmo se ve ya modificado en
el mysql/my.cnf

# The following can be used as easy to replay backup logs or for replication.
# note: if you are setting up a replication slave, see README.Debian about
#
other settings you may need to change.
server-id
=1
log_bin
= /var/log/mysql/mysql-bin.log
expire_logs_days
= 10
max_binlog_size
= 100M
binlog_do_db
= tiempos nombredelabasededatos
#binlog_ignore_db
= include_database_name

Guardamos cambios y reiniciamos mysql


Hasta aqu hemos identificado a este servidor con id 1, indicado dnde
se encuentra el log del mismo y definido la Base de Datos que nos
interesa Replicar hacia el nodo2.
A continuacin debemos asignar al usuario mysql (root) permisos de
Replicacin en el nodo2. Volvemos a la consola:

Quedando claro que:

root@nodo1:/# mysql -u root -p clave de root mysql


mysql> GRANT REPLICATION SLAVE ON *.* TO
'replicador'@'192.168.0.21' IDENTIFIED BY 'holivas'; mysql> GRANT ALL
PRIVILEGES ON *.* TO 'replicador'@'192.168.0.21';
mysql> FLUSH PRIVILEGES;
mysql> USE blog; nombre de la base de datos
mysql> FLUSH TABLES WITH READ LOCK;
mysql> SHOW MASTER STATUS;
Obtendremos una tabla como la siguiente. Es recomendable anotar los
valores de File y Position dado que los utilizaremos al final del manual
para sincronizar los 2 nodos a partir de la posicin de los Log. Nota los
numero cambian segn la configuracin este es solo un ejemplo grfico

Salimos de la consola de mysql quitando el lock a las tablas


mysql> UNLOCK TABLES;
mysql> QUIT;
root@nodo1:/#
Continuaremos con los pasos del manual de replicacin el cual se
adjunta debido a que estamos intentando realizar Replicacin MasterSlave como primer paso. Encontraremos, sin embargo, algo nuevo en la
configuracin de my.cnf del Nodo 2 que luego repetiremos en el Nodo 1.
el uso de auto_increment_increment y auto_increment_offset, de
vital importancia para el correcto funcionamiento de la Replicacin
Master-Master.
Vamos a la consola del nodo 2 a editar la seccin Logging and
Replication dentro del [mysqld]:
root@nodo2:/# sudo nano /etc/mysql/my.cnf

#bind-address = 127.0.0.1
server-id = 2
auto_increment_increment = 2 auto_increment_offset = 2
inlog_do_db = blog nombre de la base de datos
#binlog_ignore_db = base de datos _que_no_quiero_afectar
Guardamos los cambios y reiniciamos Mysql:
root@nodo2:/# /etc/init.d/mysql restart
Los
parmetros auto_increment_increment y auto_increment_offset
configurados debidamente en cada Nodo nos salvarn de este problema
mediante un mecanismo extremadamente intuitivo: el primero seteado
en 2 con offset de 2 tramitar los INSERTS en tablas tomando el prximo
ndice disponible ; En sntesis, el Log entre Nodos deja de importar
debido a que cada Base de Datos posee un criterio para tomar ndices
que evitar la colisin.
Lo que haremos ahora es darle a la cuenta mysql replicador privilegio
para hacer Replication Slave pero desde el nodo 2 hacia el nodo1 y,
finalmente, editaremos my.cnf del nodo 1 para decirle que es Slave del
nodo 2.
En pocas palabras: repetiremos lo hecho hasta aqu pero en sentido
inverso

En la consola del nodo2 (192.168.0.21)


root@nodo2:/# mysql u root p clave de replicador mysql mysql> GRANT REPLICATION
SLAVEON*.*TO'replicador'@'192.168.0.20'IDENTIFIEDBY'holivas';mysql>GRANTALL
PRIVILEGESON*.*TO'replicador'@'192.168.0.20';
mysql>FLUSHPRIVILEGES;
mysql>USEblog;
mysql>FLUSHTABLESWITHREADLOCK;

mysql>SHOWMASTERSTATUS;

Obtendremos un cuadro similar el anterior. Anotemos los valores


de File y Position para el nodo2 (los que anotamos antes pertenecan
al nodo1).
Tenemos 2 cuentas mysql con el user replicador cruzadas que le
permiten Replicar a los slave definidos. Ha llegado el momento de
convertir a nuestro Master (192.168.0.20) en un Slave de 192.168.0.21
Volveremos a editar my.cnf

de

Nodo

1 para darle las mismas

instrucciones que le hemos dado en Nodo 2:

root@nodo1root@nodo1:/#sudonano/etc/mysql/my.cnf
#bindaddress=127.0.0.1
serverid=1
masterconnectretry=60
auto_increment_increment=1
auto_increment_offset=2
binlog_do_db=blog
binlog_ignore_db=base_que_no_quiero_afectar
Guardamosloscambiosyreiniciamosmysql
root@nodo1:/#/etc/init.d/mysqlrestart

Con esto, hemos basicamente creado una arquitectura circular (la


topologa de la replicacin Master-Master es, de hecho, circular). Le
decimos al Nodo 1 que tiene server id 1 y debe trabajar con
determinada base de datos. Creamos una cuenta mysql desde el Nodo 1
en que le damos a un usuario permisos para Replicar en un Slave del
Nodo 2. Le decimos al Nodo 2 (editando my.cnf) donde est su Master
(192.168.0.20). Luego repetimos toda la operacin en sentido inverso
cuidando que los valores de auto_increment_increment y offset estn
debidamente seteados. El resultado: los Nodos interactan como Master
y Slave entre s.

Por ltimo debemos sincronizar los Nodos de modo que cada Servidor
sepa a partir de qu log mysql trabajar y desde qu posicin comenzar
(esta es la informacin que obtuvimos en las tablas al arrojar la
sentencia SQL SHOW MASTER STATUS).
En el Nodo 1 (192.168.0.20) ingresamos a mysql como root:

root@nodo1:/#mysqlurootpIngresamosclavederootmysql
mysql>SLAVESTOP;
mysql> CHANGE MASTER TO MASTER_HOST='192.168.0.21', MASTER_USER='replicador',
MASTER_PASSWORD='holivas',

MASTER_LOG_FILE='VALOR_OBTENIDO_EN_Nodo2',

MASTER_LOG_POS=VALOR_OBTENIDO_EN_nodo2;
mysql>SLAVESTART;
mysql>QUIT;

En el Nodo 2 (192.168.0.21):

root@nodo2:/#mysqlurootpIngresamosclavederootmysql
mysql>SLAVESTOP;
mysql> CHANGE MASTER TO MASTER_HOST='192.168.0.20', MASTER_USER='replicador',
MASTER_PASSWORD='holivas',

MASTER_LOG_FILE='VALOR_OBTENIDO_EN_nodo1',

MASTER_LOG_POS=VALOR_OBTENIDO_EN_nodo1;
mysql>SLAVESTART;
mysql>QUIT;

Por ltimo reiniciamos mysql en ambos Nodos va /etc/init.d/mysql


restart y podemos probar en cada Nodo si la replicacin est
funcionando ingresando como root mysql con:
root@nodo1:/#mysqlurootpIngresamosclavederootmysql
mysql>SLAVESTART;
mysql>SHOWSLAVESTATUS\G;

Potrebbero piacerti anche