Postgresql reindexation

De BlaxWiki
Aller à la navigationAller à la recherche

Ce script a pour but de faire la réindexation et le vaccum de l’ensemble des bases postgres (deux instances).


#!/bin/bash
# Declaration des variables :
VISION="/opt/agarik/Vision/bin/bb_send_raw"
DISPLAY="supervision.agarik.com"
TARGET="$(hostname | sed -e 's/\./,/g')"
SERVICE="appli"
BIN_PSQL="/opt/applis/postgresql/bin/psql"
BIN_REINDEXDB="/opt/applis/postgresql/bin/reindexdb"
BIN_VACUUMDB="/opt/applis/postgresql/bin/vacuumdb"

LIFE_MESSAGE="1560"

LOG_FILE_ERROR="/var/log/PSQL_DataBases_Reindex.error"
LOG_FILE_OK="/var/log/PSQL_DataBases_Reindex.ok"

#DB_LIST_5432="administration-services administration-services-externes agenda appreciation changement-adresse creation-groupes espaces_partages grouper portail alfresco statistiques"
DB_LIST_5432="grouper portail-4-2 alfresco administration-services administration-services-externes agenda appreciation changement-adresse creation-groupes espaces_partages"

DB_LIST_5433="drupal"
# Supervision
Send()
{
 "${VISION}" "${DISPLAY}" "status+${LIFE_MESSAGE} ${TARGET}.${SERVICE} ${1} $(date) ${SERVICE} ${2}"
}


exec 1> $LOG_FILE_OK
exec 2> $LOG_FILE_ERROR

#------------------------------------------------------
# Re-indexation des bases de l'instance Postgres 5433 #
#------------------------------------------------------

/bin/echo -e "\n"
/bin/echo -e "-----------------------------------------"
/bin/echo -e "$(date +'%Y-%m-%d %H:%M') Postgres instance 5433 : "
/bin/echo -e "-----------------------------------------"

for DB_NAME in $DB_LIST_5433
do
        /bin/echo -e "  $(date +'%Y-%m-%d %H:%M')  $DB_NAME "

        if [ "$DB_NAME" == drupal ]
                then
                /bin/su - postgres -c "$BIN_PSQL -p 5433 -d $DB_NAME -c 'DELETE FROM locales_source ls WHERE NOT EXISTS (SELECT 1 FROM  locales_target lt WHERE ls.lid = lt.lid);'"
        fi

        /bin/su - postgres -c "$BIN_VACUUMDB -p 5433 -d $DB_NAME"
        /bin/su - postgres -c "$BIN_REINDEXDB -p 5433 -d $DB_NAME"

done


#------------------------------------------------------
# Re-indexation des bases de l'instance Postgres 5432 #
#------------------------------------------------------

/bin/echo -e "\n"
/bin/echo -e "-----------------------------------------"
/bin/echo -e "$(date +'%Y-%m-%d %H:%M') Postgres instance 5432 : "
/bin/echo -e "-----------------------------------------"


for DB_NAME in $DB_LIST_5432
do
        /bin/echo -e "  $(date +'%Y-%m-%d %H:%M')  $DB_NAME "

        /bin/su - postgres -c "$BIN_VACUUMDB -p 5432 -d $DB_NAME"
        /bin/su - postgres -c "$BIN_REINDEXDB -p 5432 -d $DB_NAME"
done




/bin/echo -e "\n"
/bin/echo -e "-------------------------------------------------------"
/bin/echo -e "$(date +'%Y-%m-%d %H:%M') fin de La reindexation et le vacuum  : "
/bin/echo -e "-------------------------------------------------------"


if grep --quiet -v NOTICE $LOG_FILE_ERROR
        then
               color=red
               /bin/echo -e  "\n&red Une erreur est survenue lors de la reindexation ou le vacuum des bases.\n\n"
               Send "${color}" "$(cat $LOG_FILE_OK)$(cat $LOG_FILE_ERROR | grep -v NOTICE) "
        else
               color=green
               /bin/echo -e "\n&green  La reindexation et le vacuum de tous les  bases est bien executés.\n\n"
               Send "${color}" "$(cat $LOG_FILE_OK)"
fi

exit 0