Mes: diciembre 2019

Configurar replicacion en MySQL

GUÍA DE INSTALACIÓN

El servidor de MySQL puede replicar una base de datos sobre TCP hacia otra instancia de MySQL para lograr un respaldo casi en tiempo real para redundancia de datos. Este proceso es algo diferente a u MySql funcionando sobre clúster.

MySQL usa un escenario de Maestro-Esclavo, donde el maestro es donde se reciben los cambios y solo son replicados en una sola dirección hacia el esclavo y el esclavo no va a replicar hacia el maestro.

Para configurar la replicación y un solo camino, se tiene que tener MySQL instalado en ambos servidores, uno como maestro y el otro como esclavo, esto se puede realizar con el manejador de paquetes apt-get.

sudo apt-get install mysql-server

La instrucción anterior debe de ser ejecutada en ambos servidores, tanto en el maestro como en el esclavo.

modo de replicación de mysql

Antes de empezar la configuración de nuestra replicación, se debe de considerar que tipo de replicación se va a utilizar.

  • Replicación por transacción, este modo hace que cada vez que se lanza un dato para escribir, se manda en paralelo al servidor de esclavo, tiene como ventaja que ambas bases se encuentran permanentemente en el mismo estado, con la desventaja que, si hay alguna latencia, el motor no libera el registro hasta que no está copiado en el servidor esclavo
  • Replicación por log, este modo lo que hace es que cada log generado por transacciones en el servidor maestro, se replican hacia el servidor esclavo copiando los archivos logs de un servidor a otro, con la ventaja de que si hay alguna interrupción de comunicación o lentitud en él envió de archivos, no interrumpe en nada la transferencia, con la desventaja que puede estar segundos o minutos atrás, dependiendo de la velocidad de transferencia.

CONFIGURACIÓN DE REPLIACIÓN EN MYSQL

La replicación instalada en el servidor es a nivel de logs, replicando en una sola dirección de maestro a esclavo. Esto significa que cualquier cambio hecho al servidor esclavo, no se verá reflejado en el servidor maestro.

  • Maestro

Los siguientes cambios se harán en el servidor maestro, ligeramente diferentes a los cambios que se harán en el servidor esclavo.

Editando el archivo my.cnf de MySQL Se realizaron los siguientes cambios:

vi /etc/my.cnf

Buscamos el parámetro bind-address y lo cambiamos a la ip del servidor maestro.  Se puede obtener la ip del servidor maestro con el comando ifconfig.

bind-address = 10.1.1.100


ahora También buscamos el parámetro server-id y nos aseguramos de que no se encuentre comentado. Hay que asignarle un ID al servidor maestro, en este caso usamos el ID 1 para nuestro servidor maestro.

server-id = 1

Buscamos o agregamos el parámetro log_bin y nos aseguramos de que no esté comentado. Esta es la ubicación donde se guardarán todos los camios realizados a la base de datos y esta será la carpeta que se replicará.

log_bin = /var/log/mysql/mysql-bin.log

Además, se agrega la siguiente entrada donde le diremos como se llama la base de datos que vamos a replicar.

binlog_do_db = SIERRADB

En caso de que querremos más replicas, se podría agregar más parámetros de binlog_do_db, por ejemplo:

binlog_do_db = BASEAREPLICAR2

binlog_do_db = BASEAREPLICAR3

El siguiente paso es crear un usuario con los permisos adecuados para usar la replicación de MySQL. Accede al MySql con el siguiente comando, para poder acceder como super administrador (root).

mysql -u root -p

Se crea un nuevo usuario que se usara para conectar de la instancia maestra a la instancia esclava, este se utilizara para transferir los datos a replicar, en este caso, el usuario se llama mysql_rep

GRANT REPLICATION SLAVE ON *.* TO 'mysql_rep'@'%' IDENTIFIED BY '[PASSWORD]';

Aquí solo hay que remplazar el password con una contraseña segura.

Ahora, vamos a crear la base de datos que será replicada a nuestro servidor esclavo, es importante que después de crear la base de datos, ningún cambio se aplique hasta que la replicación haya sido completada.

create database replication_database;

Una vez terminado, escribe quit Para salir de MySql y luego procede a reiniciar el servicio

service mysql restart

En este punto, Podemos revisar la base de datos que el servidor esta active y configurado para escribir los cambios del logfile, para esto, logueate como root y ejecuta el siguiente comando

mysql -u root -p

SHOW MASTER STATUS;

Lo que te muestra debe de ser similar a esto.

Después de esto, ya debe de estar configurado correctamente el servidor maestro.

  • Esclavo

La configuración del servidor esclavo es muy similar a la configuración del servidor maestro, pero con diferencias muy sutiles.

Edita el archivo my.cnf de la configuración de MySQL y realiza los siguientes cambios:

vi /etc/my.cnf

Encuentra el parámetro bind-address y pones la IP del servidor MAESTRO.  Puedes consultar la ip con el comando ifconfig.

bind-address = 10.1.1.200

Busca el atributo llamado server-id y asegúrate que no esté comentado (que no tenga # al inicio de la línea). Ocupas asignarle al servidor esclavo un ID, En este caso usaremos el ID 2 como esclavo. Toma en cuenta que este número debe de ser único a través de tus configuraciones de la replicación.

server-id = 2

Encuentra o agrega el parámetro log_bin y asegúrate que no esté comentado. Esta es la ubicación donde serán guardados los cambios realizados en la base de datos que estará trayendo del servidor Maestro. Adicional al parámetro log_bin también ocupas configurar el parámetro relay-log solo en tu servidor esclavo.

log_bin = /var/log/mysql/mysql-bin.log

relay-log = /var/log/mysql/mysql-relay-bin.log

Igual que en el servidor maestro, configura el nombre de la base de datos que se va a replicar.

binlog_do_db = SIERRADB

Guarda el archive y reinicia el servicio de MySQL.

service mysql restart

Ahora necesitamos indicarle a MySql donde se encuentra el servidor maestro, primero accede como root.

mysql -u root -p

Tienes que ejecutar el siguiente comando, sustituyendo los siguientes parámetros por el valor adecuado.

  • MASTER_HOST La IP de tu servidor maestro.
  • MASTER_USER el usuario que tu servidor maestro esta usando para conectarse, en este caso es mysql_rep.
  • MASTER_PASSWORD Es el password del usuario mencionado anteriormente
  • MASTER_LOG_FILE es el nombre del archive de logs que el servidor maestro va a usar para la replicación. Este nombre lo Podemos obtener ejecutando el siguiente comando en el servidor maestro SHOW MASTER STATUS.
  • MASTER_LOG_POS es la ubicación de donde el servidor esclavo va a leer para restaurar. La posición del log, la puedes obtener con el comando SHOW MASTER STATUS.

CHANGE MASTER TO MASTER_HOST='10.1.1.100',

MASTER_USER='mysql_rep',

MASTER_PASSWORD='paswdtemporal',

MASTER_LOG_FILE='mysql-bin.000001',

MASTER_LOG_POS=  107;

El paso final para iniciar nuestro servidor esclavo es ver en qué punto se está realizando la replicación y revisar el estatus.

Ejecutando el siguiente comando, iniciamos la replicación (desde el maestro):

START SLAVE;

Y finalmente ejecutamos el siguiente comando para ver que este funcionado.

SHOW SLAVE STATUS;

Si haces un cambio sobre tu servidor maestro, debe de ser inmediatamente replicado en el servidor esclavo. Después de hacer algunos cambios, ejecuta SHOW SLAVE STATUS y debes de ver que el valor de la posición se incrementó.

Esta replica sirve para absolutamente todos los objetos, como índices, estadísticas, y usuarios.

Configurar replicacion en MySQL

Instalacion de la replicacion de MySQL en ambiente maestro-esclavo para alta disponibilidad

Crear instancia de DataGuard

Nota: la instalacion de Oracle RDBMS se instala en la BD primaria y Standby, en este caso en la standby solo tiene la instalacion. …

Desarrollo de aplicación de reconocimiento de rostros y emociones

Este es uno de los desarrollos hechos por nuestro equipo, tiene como funcionalidad ser un demo de la capacidad de nuestra …