dba551a518
Fix below linters errors E010 The "do" should be on same line as for E010 The "do" should be on same line as while E011 Then keyword is not on same line as if or elif keyword E020 Function declaration not in format ^function name {$ Ignore: E041 Arithmetic expansion using $[ is deprecated for $(( E042 local declaration hides errors E043 Arithmetic compound has inconsistent return semantics E044 Use [[ for non-POSIX comparisions Story: 2003366 Task: 24423 Change-Id: I8b6b72e702d3e89d1813772d6bf16819e28e818c Signed-off-by: Martin Chen <haochuan.z.chen@intel.com>
118 lines
3.4 KiB
Bash
Executable File
118 lines
3.4 KiB
Bash
Executable File
#! /bin/bash
|
|
#
|
|
# Copyright (c) 2013-2014 Wind River Systems, Inc.
|
|
#
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
#
|
|
|
|
|
|
# Loads Up Utilities and Commands Variables
|
|
source /usr/local/sbin/collect_parms
|
|
source /usr/local/sbin/collect_utils
|
|
|
|
# postgres database commands
|
|
PSQL_CMD="sudo -u postgres psql --pset pager=off -q"
|
|
PG_DUMP_CMD="sudo -u postgres pg_dump"
|
|
|
|
SERVICE="database"
|
|
DB_DIR="${extradir}/database"
|
|
LOGFILE="${extradir}/database.info"
|
|
echo "${hostname}: Database Info .....: ${LOGFILE}"
|
|
|
|
function is_service_active {
|
|
active=`sm-query service postgres | grep "enabled-active"`
|
|
if [ -z "$active" ] ; then
|
|
return 0
|
|
else
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
###############################################################################
|
|
# All node types
|
|
###############################################################################
|
|
mkdir -p ${DB_DIR}
|
|
|
|
function log_database {
|
|
db_list=( $(${PSQL_CMD} -t -c "SELECT datname FROM pg_database WHERE datistemplate = false;") )
|
|
for db in "${db_list[@]}"; do
|
|
echo "postgres database: ${db}"
|
|
${PSQL_CMD} -d ${db} -c "
|
|
SELECT
|
|
table_schema,
|
|
table_name,
|
|
pg_size_pretty(table_size) AS table_size,
|
|
pg_size_pretty(indexes_size) AS indexes_size,
|
|
pg_size_pretty(total_size) AS total_size,
|
|
live_tuples,
|
|
dead_tuples
|
|
FROM (
|
|
SELECT
|
|
table_schema,
|
|
table_name,
|
|
pg_table_size(table_name) AS table_size,
|
|
pg_indexes_size(table_name) AS indexes_size,
|
|
pg_total_relation_size(table_name) AS total_size,
|
|
pg_stat_get_live_tuples(table_name::regclass) AS live_tuples,
|
|
pg_stat_get_dead_tuples(table_name::regclass) AS dead_tuples
|
|
FROM (
|
|
SELECT
|
|
table_schema,
|
|
table_name
|
|
FROM information_schema.tables
|
|
WHERE table_schema='public'
|
|
AND table_type='BASE TABLE'
|
|
) AS all_tables
|
|
ORDER BY total_size DESC
|
|
) AS pretty_sizes;
|
|
"
|
|
done >> ${1}
|
|
}
|
|
|
|
|
|
|
|
DB_EXT=db.sql.txt
|
|
function database_dump {
|
|
mkdir -p ${DB_DIR}
|
|
db_list=( $(${PSQL_CMD} -t -c "SELECT datname FROM pg_database WHERE datistemplate = false;") )
|
|
for DB in "${db_list[@]}"; do
|
|
if [ "$DB" != "keystone" -a "$DB" != "ceilometer" ] ; then
|
|
echo "${hostname}: Dumping Database ..: ${DB_DIR}/$DB.$DB_EXT"
|
|
(cd ${DB_DIR} ; sudo -u postgres pg_dump $DB > $DB.$DB_EXT)
|
|
fi
|
|
done
|
|
}
|
|
|
|
###############################################################################
|
|
# Only Controller
|
|
###############################################################################
|
|
|
|
if [ "$nodetype" = "controller" ] ; then
|
|
is_service_active
|
|
if [ "$?" = "0" ] ; then
|
|
exit 0
|
|
fi
|
|
|
|
# postgres DB sizes
|
|
delimiter ${LOGFILE} "formatted ${PSQL_CMD} -c"
|
|
${PSQL_CMD} -c "
|
|
SELECT
|
|
pg_database.datname,
|
|
pg_database_size(pg_database.datname),
|
|
pg_size_pretty(pg_database_size(pg_database.datname))
|
|
FROM pg_database
|
|
ORDER BY pg_database_size DESC;
|
|
" >> ${LOGFILE}
|
|
|
|
# Number of postgres connections
|
|
delimiter ${LOGFILE} "ps -C postgres -o cmd="
|
|
ps -C postgres -o cmd= >> ${LOGFILE} 2>>${COLLECT_ERROR_LOG}
|
|
|
|
delimiter ${LOGFILE} "call to log_database"
|
|
log_database ${LOGFILE}
|
|
|
|
database_dump
|
|
fi
|
|
|
|
exit 0
|