depurar GIS con backup de producción

Publicado en 27 enero, 2020

Todas las noches se hace un backup de producción (1111) en el servidor local. Esta coloca una copia de mysql en /backups2/a20/mysql-bak/*/111 y esta se monta en la maquina 1111 en /home/mysqlbox-data -Actualmente hourly.0 pero se puede cambiar a otro si es conveniente- . Una vez se hace la copia se arregla los permisos del backup y se reinicia el contenedor 1111.

#!/bin/bash 
YELLOW='\033[1;33m' 
NC='\033[0m' 

LUISON_IP="192.168.0.88" 
MACHINE=1111 
LUISON_HERE=`ping -c 1 ${LUISON_IP} > /dev/null && echo 1 || echo 0` 
DIR=/backups2/a20/mysql-bak/hourly.0/111 

if [ $LUISON_HERE -eq 0 ] 
then 


   echo -e "${YELLOW}Apagando la ${MACHINE}...${NC}" 
   pct shutdown $MACHINE 

   echo -e "${YELLOW}Renombrando los archivos de innodb...${NC}" 
   mv $DIR/ib_logfile0 $DIR/ib_logfile0.bak 2>/dev/null 

   mv $DIR/ib_logfile1 $DIR/ib_logfile1.bak 2>/dev/null 

   mv $DIR/ibdata1 $DIR/ibdata1.bak 2>/dev/null 


   chown -R 104:128 $DIR 

   echo -e "${YELLOW}Encendiendo la ${MACHINE}...${NC}" 
   pct start $MACHINE     

   umountcifs.sh 
   mountcifs.sh 
else 
   echo -e "${YELLOW}No se ha actualizado mysql en puerto 3307 al estar ${LUISON_IP} encendido... ${NC}" 
fi

En el contenedor 1111 se ha abierto una segunda instancia de MySQL en el puerto 3307. Este se arranca con un servicio en mysql-box.service con el siguiente contenido:

[Unit] 
Description=Arranca un servidor MySQL en el puerto 3307 con el backup de produccion 
After=network.target 

[Service] 
User=root 
ExecStart=/usr/local/bin/activar_my2.sh 

[Install] 
WantedBy=multi-user.target

este llama al script /usr/local/bin/activar_my2.sh

#!/bin/bash 
DATADIR=/home/mysqlbox-data 
SOCKET=/tmp/mysqld-box.sock 
PORT=3307 
PID=/var/run/mysqld/mysqld-box.pid 
LOG=/var/log/mysql/mysql-error-3307.log 
# https://dev.mysql.com/doc/refman/8.0/en/multiple-unix-servers.html 
mysqld_safe --datadir=$DATADIR --socket=$SOCKET --port=$PORT --pid-file=$PID --log-error=$LOG

BACKUP.GOLFINSPAIN.COM

Se ha habilitado un subdominio en local (backup.golfinspain.com) que usa esa BD con los archivos de /home/webs/golfinspain.com/v2. Para poder usar esta conexión solo en este subdominio aunque haya otros virtualhosts que comparten el proyecto, se ha creado un archivo de variables en secrets/.secrets.env con lo siguiente:

backup_HOST_GIS=127.0.0.1:3307
backup_USER_GIS=gisreal_user
backup_PASS_GIS=
# no usar gisreal si se va a usar en produccion
BD_GIS=gisreal
  • se busca primero las variables con prefijo (no cuenta www) y si no hay se busca el genérico

USAR ESTA BASE DE DATOS EN UN PROYECTO

Se pueden cambiar en el virtualhost modificando estas variables de entorno (requiere reiniciar apache). Afecta solo a los dominios que comparten ese virtualhost.

SetEnv GIS_DDBB "gisreal"
SetEnv GIS_DDBB_HOST "127.0.0.1:3307"
SetEnv GIS_DDBB_USER ""
SetEnv GIS_DDBB_PASS ""

ó

Creamos www/custom_const.php en nuestro proyecto (está excluido con el .gitignore) (no requiere reiniciar apache). Afecta a todos los dominios del proyecto, aunque no compartan virtualhost.

<?php

// duplicar este archivo para sobreescribir constantes

// PARA USAR BACKUP DE PRODUCCION EN LOCAL
define('HOST_GIS', '127.0.0.1:3307');
define('BD_GIS', 'gisreal');
define('USER_GIS', '');
define('PASS_GIS', '');

NOTAS

  • Debe existir en la BD de origen el usuario con el host 127.0.0.1, ya que al ser un puerto distinto al 3306 no se puede usar localhost

Sin respuestas to "depurar GIS con backup de producción"


    ¿Algo que comentar?