Ad Widget

Collapse

Script for Clean History Tables

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Andy_CARP
    Junior Member
    • Jun 2009
    • 6

    #1

    Script for Clean History Tables

    Aqui les dejo un Script en el cual estuve trabajando para poder reducir el tamaño de las tablas de historial.

    Saludos!!!

    Code:
    #!/bin/bash
    ############## VARIABLES ################
    MySQL_HOST=srvhost
    MySQL_DB=dbname
    MySQL_USER=mysqluser
    MySQL_PWD=mysqlpass
    LOG_FILE=GenCleanHistory.log
    
    ##########################################################################################
     ############################ NO MODIFICAR NADA A PARTIR DE AQUI ########################
    ##########################################################################################
    ### Busco el path de los comando a utilizar
    DATE=`which date`
    MYSQL=`which mysql`
    ECHO=`which echo`
    EXPR=`which expr`
    CAT=`which cat`
    PS=`which ps`
    GREP=`which grep`
    AWK=`which awk`
    CLEAR=`which clear`
    
    $CLEAR
    $ECHO > $LOG_FILE
    # Logeo PATHs
    $ECHO "-----------> Paths Comandos <-----------" > $LOG_FILE
    $ECHO "date="$DATE > $LOG_FILE
    $ECHO "mysql="$MYSQL >> $LOG_FILE
    $ECHO "expr="$EXPR >> $LOG_FILE
    $ECHO "cat="$CAT >> $LOG_FILE
    $ECHO "----------------------------------------" >> $LOG_FILE
    
    # Obtengo la fecha actual del sistema
    ACTUAL=`$DATE +%s`
    $ECHO "-----------> Fechas en segundos <-----------" >> $LOG_FILE
    $ECHO "Fecha Actual="$ACTUAL >> $LOG_FILE
    
    # Constantes de segundos en:
    # MESES1 -> 30 dias
    # MESES2 -> 60 dias
    # MESES3 -> 90 dias
    
    MESES1=2592000
    MESES2=5184000
    MESES3=7776000
    $ECHO "30 dias(s)="$MESES1 >> $LOG_FILE
    $ECHO "60 dias(s)="$MESES2 >> $LOG_FILE
    $ECHO "90 dias(s)="$MESES3 >> $LOG_FILE
    
    # Elijo la constante
    MES=$MESES2
    $ECHO "Segundos a utilizar="$MES >> $LOG_FILE
    
    # Realizo la cuenta para obtener la cantidad de segundos a guardar
    RESTA=`$EXPR $ACTUAL - $MES`
    $ECHO "Resultado="$RESTA >> $LOG_FILE
    $ECHO "-------------------------------------------" >> $LOG_FILE
    # Genero el archivo .sql
    # Constante de nombre archiv SQL
    SQLSCRIPT=CleanZabbixDB
    $ECHO "DELETE FROM history WHERE clock <= $RESTA;" > $SQLSCRIPT.sql
    $ECHO "DELETE FROM history_log WHERE clock <= $RESTA;" >> $SQLSCRIPT.sql
    $ECHO "DELETE FROM history_str_sync WHERE clock <= $RESTA;" >> $SQLSCRIPT.sql
    $ECHO "DELETE FROM history_sync WHERE clock <= $RESTA;" >> $SQLSCRIPT.sql
    $ECHO "DELETE FROM history_text WHERE clock <= $RESTA;" >> $SQLSCRIPT.sql
    $ECHO "DELETE FROM history_uint WHERE clock <= $RESTA;" >> $SQLSCRIPT.sql
    $ECHO "DELETE FROM history_uint_sync WHERE clock <= $RESTA;" >> $SQLSCRIPT.sql
    $ECHO "DELETE FROM alerts WHERE clock <= $RESTA;" >> $SQLSCRIPT.sql
    $ECHO "DELETE FROM auditlog WHERE clock <= $RESTA;" >> $SQLSCRIPT.sql
    
    #$ECHO "SELECT * FROM alerts LIMIT 10000;" > $SQLSCRIPT.sql
    
    $ECHO "-------------------------------> Consultas SQL <-------------------------------" >> $LOG_FILE
    $CAT $SQLSCRIPT.sql >> $LOG_FILE
    $ECHO "-------------------------------------------------------------------------------" >> $LOG_FILE
    
    ### Creo un Script temporal para lanzar las consultas SQL y luego limpiar los archivos generados.
    
    `$MYSQL -h$MySQL_HOST -u$MySQL_USER -p$MySQL_PWD -D$MySQL_DB < $SQLSCRIPT.sql > $SQLSCRIPT.tab &`
    PID_RUN=`$PS -AF | $GREP "mysql" | $GREP -v grep | $GREP localhost| $AWK '{print $2}'`
    $ECHO "PID MySQL="$PID_RUN >> $LOG_FILE
    $ECHO "Por Favor verifique los procesos en base al PID guardado ($PID_RUN)" >> $LOG_FILE
    $CAT $LOG_FILE
    Saludos
    by Andy_CARP
  • StefanJ
    Junior Member
    • May 2009
    • 15

    #2
    Looks nice, but my spanish is not so perfect

    PS: Ich könnte dies auch gemeinerweise in Deutsch schreiben

    Comment

    Working...