Ver Mensaje Individual
  #16 (permalink)  
Antiguo 08/08/2007, 10:20
irene_osiris
Invitado
 
Mensajes: n/a
Puntos:
Re: Replica de una bd

Hola a todos, bueno, como os dije hace ya unos dias, hos voy a poner aquí el procedimiento que yo he seguido para poder hacer replicas de un ordenador a otro de todas las bases de datos, excepto de una.
Este es un pequeño manual que he echo para mi trabajo.

REPLICA DE BASES DE DATOS


La réplica de MySQL permite tener una copia exacta de una base de datos de un ordenador principal (maestro) en otro ordenador (esclavo), y todas las actualizaciones que se vayan haciendo en la base de datos del ordenador maestro, se repliega inmediatamente en el esclavo. De esta manera, ambas bases de datos están sincronizadas.

Esta documentación está explicada para realizar réplicas de bases de datos de un ordenador a otro, u otros, bajo el Sistema Operativo de White Box Enterprise Linux.

Para poder realizar toda la configuración necesaria para la réplica, previamente los ordenadores donde se vayan a realizar, deben tener instalado la misma versión de MySQL.

En esta documentación, utilizaremos los siguientes datos a modo de ejemplo:

● ORDENADOR MAESTRO:
IP = 192.168.17.100
Nombre = laboratorio1
Nombre de la base de datos que NO se va a replicar = replica

● ORDENADOR ESCLAVO:
IP = 192.168.17.101
Nombre = laboratorio2
OJO!!, cuando estés realizando la réplica, debes cambiar esos datos de ejemplo por los tuyos reales.

La IP y el nombre de tus ordenadores, los encontrarás en:
# vi /etc/hosts

CONFIGURAR ORDENADOR MAESTRO

1º Creamos los directorios, si no existen, donde se almacenarán los datos de la replicación

Código:
	
	# mkdir /var/log/mysql
	# chown mysql:mysql  /var/log/mysql
2º Pasamos a configurar el maestro. Abrimos el archivo my.cnf

Código:
# vi /etc/my.cnf
Y agregamos las siguientes líneas al fichero:
Código:
	[mysqld]
	datadir=/var/lib/mysql
	socket=/var/lib/mysql/mysql.sock
	old_passwords=1
	binlog-ignore-db=replica  *1
	server-id=1
	innodb_flush_log_at_trx_commit=1
	sync-binlog=1
	log-bin=/var/log/mysql/laboratorio1-bin
	log-bin-index=/var/log/mysql/laboratorio1-bin.index
*1 si se quiere ignorar más de una base de datos, se pondrá esta línea (binlog-ignore-db) tantas veces como sea necesario, seguido del nombre de las bases de datos que no se van replicar.

3º Reiniciamos el demonio de mysql una vez echas estas modificaciones

Código:
# /etc/init.d/mysql restart
4º Seguido comprobamos que escucha por el puerto 3306

Código:
# netstat –an|grep –i listen|grep –i 3306
5º Ahora pasamos a configurar al usuario que realizará la réplica entre el maestro y el esclavo:

Código:
	# mysql –u root
	mysql> GRANT REPLICATION SLAVE ON *.* TO ‘slave_user’@’%’ IDENTIFIED BY ‘clave_user’;
	mysql> FLUSH PRIVILEGES;
	mysql> FLUSH TABLES WITH READ LOCK;
	mysql> SHOW MASTER STATUS;
(El comando SHOW MASTER STATUS mostrará algo parecido a la siguiente tabla. El resultado que nos da en File y Position, lo apuntamos, ya que lo seguiremos utilizando en siguientes pasos)
Código:
+-------------------------------+-----------------+----------------------+-------------------------+
|      File                             |    Position      |  Binlog_Do_Db    |  Binlog_Ignore_Db  |
+-------------------------------+-----------------+----------------------+-------------------------+
| laboratorio1-bin.000001 |     98             |                             | replica,replica         |
+-------------------------------+-----------------+----------------------+-------------------------+
	mysql> quit
6º Ahora comprobamos que está en el log binario con el comando mysqlbinlog y podremos ver el contenido del mismo

Código:
# mysqlbinlog /var/lib/mysql/laboratorio1-bin.000001 * 
* donde pone laboratorio1-bin.000001, pondremos lo que nos dio de resultado el File cuando ejecutamos antes el comando SHOW MASTER STATUS.


CONFIGURAR ORDENADOR ESCLAVO

1º Creamos los directorios, si no existen, donde se almacenarán los datos de la replicación

Código:
	# mkdir /var/log/mysql
	# chown mysql:mysql  /var/log/mysql
2º Si la base de datos no existe, se creará
Código:
# mysql –u root
mysql> CREATE DATABASE replica;
mysql> quit
3º Pasamos a configurar el esclavo. Abrimos el archivo my.cnf

Código:
	# vi /etc/my.cnf
Y agregamos las siguientes líneas
Código:
	[mysqld]
	datadir=/var/lib/mysql
	socket=/var/lib/mysql/mysql.sock
	old_passwords=1
	server-id=2 *1
	master-host=192.168.17.100
	master-user=slave_user
	master-password=clave_user
	master-connect-retry=60
	replicate-ignore-db=replica *2
	relay-log=/var/log/mysql/laboratorio2-relay-bin
	relay-log -index=/var/log/mysql/laboratorio2-relay-bin.index
*1 si vamos a tener más de un ordenador esclavo, a cada uno le mandaremos un server-id distinto (por ejemplo: server-id=3, server-id=4,etc…). Este nº nunca debe de ser igual que el del maestro.

*2 si se va a ignorar más de una base de datos, se pondrá esta línea (replicate-ignore-db) tantas veces como sea necesario, seguido del nombre de las bases de datos que van a ser replicadas.

4º Reiniciamos el demonio de mysql una vez echas estas modificaciones

Código:
	# /etc/init.d/mysql restart
5º Seguido comprobamos que escucha por el puerto 3306

Código:
	# netstat –an|grep –i listen|grep –i 3306

Código:
	
	# mysql –u root
	mysql> slave stop;
	mysql> CHANGE MASTER TO MASTER_HOST=’192.168.17.100’, MASTER_USER=’slave_user’, MASTER_PASSWORD=’clave_user’, MASTER_LOG_FILE=’laboratorio1-bin.000001’, MASTER_LOG_POS=98;
	mysql> start slave;
	mysql> quit
- en MASTER_HOST, pondremos la IP o nombre del ordenador maestro.
- en MASTER_USER, pondremos el nombre del usuario al que concedimos los derechos de la réplica.
- en MASTER_PASSWORD, pondremos la contraseña del usuario de MASTER_USER
- en MASTER_LOG_FILE, pondremos el resultado que nos devuelve en campo File, cuando ejecutamos SHOW MASTER STATUS en el maestro.
- en MASTER_LOG_POS, pondremos el resultado que nos devuelve en campo Position, cuando ejecutamos SHOW MASTER STATUS en el maestro.

7º Ya sólo queda comprobar que la réplica de todas las bases de datos menos una ó varias funciona, así que sólo tenemos q ir a ordenador maestro y realizar cualquier cambio en cualquier base de datos, y comprobar en el esclavo que el cambio se ha realizado.


Bueno, espero que le sirva de ayuda a alguien, ya que entre todos habeis podido ayudarme a mi.
Muchas gracias
Saludos

Última edición por irene_osiris; 16/08/2007 a las 06:11