The database will be backup on a weekly cycle basis.
Backup script:
#!/bin/bash
# file - /usr/local/bin/alldb-dump.sh
# shell script to backup all mysql db to disk
# last update: 2011-03-23
# var def:
PROGNAME=$0
DAYOFWEEK=`date '+%a'`
DUMPFILE=/var/mysql-backup/alldb-dump-$DAYOFWEEK.sql
DB_USER=root
DB_PW=topsecret
NAGIOS_SERVER_IP=127.0.0.1
MY_HOSTNAME=Centreon-Server
SEND_NSCA=/usr/bin/send_nsca
SEND_NSCA_CFG=/etc/send_nsca.cfg
PLUGINS_DIR=/usr/lib/nagios/plugins
SVC_DESCRIPTION=db-backup
submit_result() {
printf "%s\t%s\t%s\t%s\n" "$MY_HOSTNAME" "$SVC_DESCRIPTION" "$return_code" "$plugin_output" | $SEND_NSCA -H $NAGIOS_SERVER_IP -c $SEND_NSCA_CFG
}
# protect dumpfile from error
set -e
mysqldump -u $DB_USER -p$DB_PW --add-drop-table --quote-names --all-databases | gzip -c > $DUMPFILE.tmp
r=$?
if [ "$r" != "0" ] ; then
logger "$PROGNAME - database backup failed!"
# submit to nagios:
plugin_output="CRITICAL - database backup failed!"
return_code=2
submit_result
exit 1
fi
# rename tmp file to normal
mv -f $DUMPFILE.tmp $DUMPFILE.gz
logger "$PROGNAME - database backup successful."
# submit to nagios:
plugin_output="OK - database backup successful."
return_code=0
submit_result
exit 0
Set Cron job definition with file /etc/cron.d/mysql-backup:
# backup all database 01:02 daily 02 01 * * * root /usr/local/bin/alldb-dump.sh
Create service check definition for the backup:
define service{
host_name Centreon-Server
service_description db-backup
check_command check_centreon_dummy!2!"Critical - backup status report not received"
max_check_attempts 1
active_checks_enabled 0
passive_checks_enabled 1
check_freshness 1
freshness_threshold 86400 ; = 1 day , for daily backup
...
}