Preciso fazer backup dos dados de uma tabela específica por semana e depois restaurá-la, mas sem truncar a tabela. Esta tabela contém o fechaRegistro
Eu preparei o seguinte script, mas não tenho certeza sobre como declarar variáveis de data. Você poderia me ajudar, por favor?
#!/bin/bash
# VARIABLES
FECHA=$(date +"%Y%m%d")
SERVIDOR="$(hostname)"
PASSWORD='PASSWORD'
BD=ordenes
TABLA="backlogPedidos"
ARCHIVO="$SERVIDOR-${BD^^}${TABLA^^}-$FECHA.sql"
RUTA_NAS="/tmp/"
# Establecer variables para calcular el rango semanal
INICIO_SEMANA=$(date -d "last sunday - 6 days" +"%Y-%m-%d 00:00:00")
FIN_SEMANA=$(date -d "last saturday" +"%Y-%m-%d 23:59:59")
# Se generar el backup por rangoo de una semana
mysqldump --databases $BD --tables $TABLA --where="fechaRegistro BETWEEN '$INICIO_SEMANA' AND '$FIN_SEMANA'" --skip-comments --compact --single-transaction --default-character-set=UTF8 --insert-ignore --complete-insert --skip-triggers --skip-routines --no-create-info --disable-keys --set-gtid-purged=OFF -q --lock-tables=false --user=backup -p$PASSWORD > /tmp/$ARCHIVO
echo "Backup semanal generado: $ARCHIVO"
Se estivermos falando sobre a semana anterior com base na data atual, para encontrar o dia de início (segunda-feira), use:
Fim da semana anterior (domingo)
Criei um exemplo.
Altere/adicione variáveis ao script e comandos ao dump conforme suas necessidades, o seguinte é apenas uma demonstração
O arquivo
/etc/db_connect.conf
contém credenciais do banco de dados, como:Dê as permissões adequadas ao script e às credenciais do banco de dados, no meu caso:
Roteiro,
Após a execução