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

¿Algo que comentar?
Lo siento, debes estar conectado para publicar un comentario.